aboutsummaryrefslogtreecommitdiffstats
path: root/fs/sysfs
diff options
context:
space:
mode:
authorNick Piggin <npiggin@suse.de>2010-05-31 17:58:02 +1000
committerGreg Kroah-Hartman <gregkh@suse.de>2010-06-04 13:27:53 -0700
commit75de46b98dda624397ccb17c106e51f478a79c15 (patch)
tree8c4cf43eb8f840e84a48d387928673bcccd03d66 /fs/sysfs
parent743db2d903bc4e963a31496328d847d69f75047c (diff)
downloadkernel_samsung_crespo-75de46b98dda624397ccb17c106e51f478a79c15.zip
kernel_samsung_crespo-75de46b98dda624397ccb17c106e51f478a79c15.tar.gz
kernel_samsung_crespo-75de46b98dda624397ccb17c106e51f478a79c15.tar.bz2
fix setattr error handling in sysfs, configfs
sysfs and configfs setattr functions have error cases after the generic inode's attributes have been changed. Fix consistency by changing the generic inode attributes only when it is guaranteed to succeed. Signed-off-by: Nick Piggin <npiggin@suse.de> Acked-by: Joel Becker <joel.becker@oracle.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'fs/sysfs')
-rw-r--r--fs/sysfs/inode.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/fs/sysfs/inode.c b/fs/sysfs/inode.c
index bde1a4c..0835a3b 100644
--- a/fs/sysfs/inode.c
+++ b/fs/sysfs/inode.c
@@ -117,11 +117,13 @@ int sysfs_setattr(struct dentry *dentry, struct iattr *iattr)
if (error)
goto out;
+ error = sysfs_sd_setattr(sd, iattr);
+ if (error)
+ goto out;
+
/* this ignores size changes */
generic_setattr(inode, iattr);
- error = sysfs_sd_setattr(sd, iattr);
-
out:
mutex_unlock(&sysfs_mutex);
return error;