diff options
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); |