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/file.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/file.c')
-rw-r--r-- | fs/sysfs/file.c | 6 |
1 files changed, 1 insertions, 5 deletions
diff --git a/fs/sysfs/file.c b/fs/sysfs/file.c index 61a8c19df7c3..73333dc68545 100644 --- a/fs/sysfs/file.c +++ b/fs/sysfs/file.c | |||
@@ -298,9 +298,8 @@ static int sysfs_open_file(struct inode *inode, struct file *file) | |||
298 | buffer->ops = ops; | 298 | buffer->ops = ops; |
299 | file->private_data = buffer; | 299 | file->private_data = buffer; |
300 | 300 | ||
301 | /* open succeeded, put active references and pin attr_sd */ | 301 | /* open succeeded, put active references */ |
302 | sysfs_put_active_two(attr_sd); | 302 | sysfs_put_active_two(attr_sd); |
303 | sysfs_get(attr_sd); | ||
304 | return 0; | 303 | return 0; |
305 | 304 | ||
306 | err_out: | 305 | err_out: |
@@ -310,11 +309,8 @@ static int sysfs_open_file(struct inode *inode, struct file *file) | |||
310 | 309 | ||
311 | static int sysfs_release(struct inode * inode, struct file * filp) | 310 | static int sysfs_release(struct inode * inode, struct file * filp) |
312 | { | 311 | { |
313 | struct sysfs_dirent *attr_sd = filp->f_path.dentry->d_fsdata; | ||
314 | struct sysfs_buffer *buffer = filp->private_data; | 312 | struct sysfs_buffer *buffer = filp->private_data; |
315 | 313 | ||
316 | sysfs_put(attr_sd); | ||
317 | |||
318 | if (buffer) { | 314 | if (buffer) { |
319 | if (buffer->page) | 315 | if (buffer->page) |
320 | free_page((unsigned long)buffer->page); | 316 | free_page((unsigned long)buffer->page); |