diff options
Diffstat (limited to 'fs/configfs/inode.c')
| -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 41645142b88..cf78d44a8d6 100644 --- a/fs/configfs/inode.c +++ b/fs/configfs/inode.c @@ -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)  |