diff options
Diffstat (limited to 'fs/sysfs/inode.c')
| -rw-r--r-- | fs/sysfs/inode.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/fs/sysfs/inode.c b/fs/sysfs/inode.c index 6a06a1d1ea7b..082daaecac1b 100644 --- a/fs/sysfs/inode.c +++ b/fs/sysfs/inode.c | |||
| @@ -111,20 +111,20 @@ int sysfs_setattr(struct dentry *dentry, struct iattr *iattr) | |||
| 111 | if (!sd) | 111 | if (!sd) |
| 112 | return -EINVAL; | 112 | return -EINVAL; |
| 113 | 113 | ||
| 114 | mutex_lock(&sysfs_mutex); | ||
| 114 | error = inode_change_ok(inode, iattr); | 115 | error = inode_change_ok(inode, iattr); |
| 115 | if (error) | 116 | if (error) |
| 116 | return error; | 117 | goto out; |
| 117 | 118 | ||
| 118 | iattr->ia_valid &= ~ATTR_SIZE; /* ignore size changes */ | 119 | iattr->ia_valid &= ~ATTR_SIZE; /* ignore size changes */ |
| 119 | 120 | ||
| 120 | error = inode_setattr(inode, iattr); | 121 | error = inode_setattr(inode, iattr); |
| 121 | if (error) | 122 | if (error) |
| 122 | return error; | 123 | goto out; |
| 123 | 124 | ||
| 124 | mutex_lock(&sysfs_mutex); | ||
| 125 | error = sysfs_sd_setattr(sd, iattr); | 125 | error = sysfs_sd_setattr(sd, iattr); |
| 126 | out: | ||
| 126 | mutex_unlock(&sysfs_mutex); | 127 | mutex_unlock(&sysfs_mutex); |
| 127 | |||
| 128 | return error; | 128 | return error; |
| 129 | } | 129 | } |
| 130 | 130 | ||
| @@ -283,6 +283,7 @@ static void sysfs_init_inode(struct sysfs_dirent *sd, struct inode *inode) | |||
| 283 | 283 | ||
| 284 | /** | 284 | /** |
| 285 | * sysfs_get_inode - get inode for sysfs_dirent | 285 | * sysfs_get_inode - get inode for sysfs_dirent |
| 286 | * @sb: super block | ||
| 286 | * @sd: sysfs_dirent to allocate inode for | 287 | * @sd: sysfs_dirent to allocate inode for |
| 287 | * | 288 | * |
| 288 | * Get inode for @sd. If such inode doesn't exist, a new inode | 289 | * Get inode for @sd. If such inode doesn't exist, a new inode |
| @@ -295,11 +296,11 @@ static void sysfs_init_inode(struct sysfs_dirent *sd, struct inode *inode) | |||
| 295 | * RETURNS: | 296 | * RETURNS: |
| 296 | * Pointer to allocated inode on success, NULL on failure. | 297 | * Pointer to allocated inode on success, NULL on failure. |
| 297 | */ | 298 | */ |
| 298 | struct inode * sysfs_get_inode(struct sysfs_dirent *sd) | 299 | struct inode * sysfs_get_inode(struct super_block *sb, struct sysfs_dirent *sd) |
| 299 | { | 300 | { |
| 300 | struct inode *inode; | 301 | struct inode *inode; |
| 301 | 302 | ||
| 302 | inode = iget_locked(sysfs_sb, sd->s_ino); | 303 | inode = iget_locked(sb, sd->s_ino); |
| 303 | if (inode && (inode->i_state & I_NEW)) | 304 | if (inode && (inode->i_state & I_NEW)) |
| 304 | sysfs_init_inode(sd, inode); | 305 | sysfs_init_inode(sd, inode); |
| 305 | 306 | ||
