]> bbs.cooldavid.org Git - net-next-2.6.git/blobdiff - fs/configfs/inode.c
fix setattr error handling in sysfs, configfs
[net-next-2.6.git] / fs / configfs / inode.c
index c8af2d91174b42b6ce33f0bfac759910589be268..cf78d44a8d6a8bcff1a546e3606058de97e90722 100644 (file)
@@ -73,15 +73,6 @@ int configfs_setattr(struct dentry * dentry, struct iattr * iattr)
                return -EINVAL;
 
        sd_iattr = sd->s_iattr;
-
-       error = inode_change_ok(inode, iattr);
-       if (error)
-               return error;
-
-       error = inode_setattr(inode, iattr);
-       if (error)
-               return error;
-
        if (!sd_iattr) {
                /* setting attributes for the first time, allocate now */
                sd_iattr = kzalloc(sizeof(struct iattr), GFP_KERNEL);
@@ -94,9 +85,12 @@ int configfs_setattr(struct dentry * dentry, struct iattr * iattr)
                sd_iattr->ia_atime = sd_iattr->ia_mtime = sd_iattr->ia_ctime = CURRENT_TIME;
                sd->s_iattr = sd_iattr;
        }
-
        /* attributes were changed atleast once in past */
 
+       error = simple_setattr(dentry, iattr);
+       if (error)
+               return error;
+
        if (ia_valid & ATTR_UID)
                sd_iattr->ia_uid = iattr->ia_uid;
        if (ia_valid & ATTR_GID)