diff options
| -rw-r--r-- | fs/configfs/inode.c | 9 | ||||
| -rw-r--r-- | fs/sysfs/inode.c | 6 |
2 files changed, 8 insertions, 7 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) |
diff --git a/fs/sysfs/inode.c b/fs/sysfs/inode.c index bde1a4c3679a..0835a3b70e03 100644 --- a/fs/sysfs/inode.c +++ b/fs/sysfs/inode.c | |||
| @@ -117,11 +117,13 @@ int sysfs_setattr(struct dentry *dentry, struct iattr *iattr) | |||
| 117 | if (error) | 117 | if (error) |
| 118 | goto out; | 118 | goto out; |
| 119 | 119 | ||
| 120 | error = sysfs_sd_setattr(sd, iattr); | ||
| 121 | if (error) | ||
| 122 | goto out; | ||
| 123 | |||
| 120 | /* this ignores size changes */ | 124 | /* this ignores size changes */ |
| 121 | generic_setattr(inode, iattr); | 125 | generic_setattr(inode, iattr); |
| 122 | 126 | ||
| 123 | error = sysfs_sd_setattr(sd, iattr); | ||
| 124 | |||
| 125 | out: | 127 | out: |
| 126 | mutex_unlock(&sysfs_mutex); | 128 | mutex_unlock(&sysfs_mutex); |
| 127 | return error; | 129 | return error; |
