diff options
Diffstat (limited to 'fs/configfs')
-rw-r--r-- | fs/configfs/inode.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/fs/configfs/inode.c b/fs/configfs/inode.c index 41645142b88b..cf78d44a8d6a 100644 --- a/fs/configfs/inode.c +++ b/fs/configfs/inode.c | |||
@@ -72,10 +72,6 @@ int configfs_setattr(struct dentry * dentry, struct iattr * iattr) | |||
72 | if (!sd) | 72 | if (!sd) |
73 | return -EINVAL; | 73 | return -EINVAL; |
74 | 74 | ||
75 | error = simple_setattr(dentry, iattr); | ||
76 | if (error) | ||
77 | return error; | ||
78 | |||
79 | sd_iattr = sd->s_iattr; | 75 | sd_iattr = sd->s_iattr; |
80 | if (!sd_iattr) { | 76 | if (!sd_iattr) { |
81 | /* setting attributes for the first time, allocate now */ | 77 | /* setting attributes for the first time, allocate now */ |
@@ -89,9 +85,12 @@ int configfs_setattr(struct dentry * dentry, struct iattr * iattr) | |||
89 | sd_iattr->ia_atime = sd_iattr->ia_mtime = sd_iattr->ia_ctime = CURRENT_TIME; | 85 | sd_iattr->ia_atime = sd_iattr->ia_mtime = sd_iattr->ia_ctime = CURRENT_TIME; |
90 | sd->s_iattr = sd_iattr; | 86 | sd->s_iattr = sd_iattr; |
91 | } | 87 | } |
92 | |||
93 | /* attributes were changed atleast once in past */ | 88 | /* attributes were changed atleast once in past */ |
94 | 89 | ||
90 | error = simple_setattr(dentry, iattr); | ||
91 | if (error) | ||
92 | return error; | ||
93 | |||
95 | if (ia_valid & ATTR_UID) | 94 | if (ia_valid & ATTR_UID) |
96 | sd_iattr->ia_uid = iattr->ia_uid; | 95 | sd_iattr->ia_uid = iattr->ia_uid; |
97 | if (ia_valid & ATTR_GID) | 96 | if (ia_valid & ATTR_GID) |