diff options
author | Tejun Heo <htejun@gmail.com> | 2007-09-20 03:05:10 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2007-10-12 17:51:10 -0400 |
commit | b05f0548dabd20433f8c201a0307103721d6a18b (patch) | |
tree | 1dd741ce7ee0a05f20b4b1469f03b378c8ee9ed1 /fs/sysfs/bin.c | |
parent | b13dc89c5a5bd5e34aadb44c0fb7e870959dcd06 (diff) |
sysfs: kill unnecessary sysfs_get() in open paths
There's no reason to get an extra reference to sysfs_dirent for an
open file. Open file has a reference to the dentry which in turn has
a reference to sysfs_dirent. This is fairly obvious as otherwise open
itself won't be able to access the sysfs_dirent. Kill the extra
sysfs_get() and matching sysfs_put().
Signed-off-by: Tejun Heo <htejun@gmail.com>
Acked-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'fs/sysfs/bin.c')
-rw-r--r-- | fs/sysfs/bin.c | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/fs/sysfs/bin.c b/fs/sysfs/bin.c index a819a7e8d74d..e93fe5e2fa41 100644 --- a/fs/sysfs/bin.c +++ b/fs/sysfs/bin.c | |||
@@ -193,9 +193,8 @@ static int open(struct inode * inode, struct file * file) | |||
193 | mutex_init(&bb->mutex); | 193 | mutex_init(&bb->mutex); |
194 | file->private_data = bb; | 194 | file->private_data = bb; |
195 | 195 | ||
196 | /* open succeeded, put active reference and pin attr_sd */ | 196 | /* open succeeded, put active reference */ |
197 | sysfs_put_active(attr_sd); | 197 | sysfs_put_active(attr_sd); |
198 | sysfs_get(attr_sd); | ||
199 | return 0; | 198 | return 0; |
200 | 199 | ||
201 | err_out: | 200 | err_out: |
@@ -211,7 +210,6 @@ static int release(struct inode * inode, struct file * file) | |||
211 | 210 | ||
212 | if (bb->mmapped) | 211 | if (bb->mmapped) |
213 | sysfs_put_active_two(attr_sd); | 212 | sysfs_put_active_two(attr_sd); |
214 | sysfs_put(attr_sd); | ||
215 | kfree(bb->buffer); | 213 | kfree(bb->buffer); |
216 | kfree(bb); | 214 | kfree(bb); |
217 | return 0; | 215 | return 0; |