]> 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 41645142b88b4698300cc89bbad15c613e10d6fd..cf78d44a8d6a8bcff1a546e3606058de97e90722 100644 (file)
@@ -72,10 +72,6 @@ int configfs_setattr(struct dentry * dentry, struct iattr * iattr)
        if (!sd)
                return -EINVAL;
 
-       error = simple_setattr(dentry, iattr);
-       if (error)
-               return error;
-
        sd_iattr = sd->s_iattr;
        if (!sd_iattr) {
                /* setting attributes for the first time, allocate now */
@@ -89,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)