summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTejun Heo <htejun@gmail.com>2007-09-20 16:05:10 +0900
committerGreg Kroah-Hartman <gregkh@suse.de>2007-10-12 14:51:10 -0700
commit078ce6409ca54d5fc6eb7d2147cd6efc3eb09078 (patch)
treec2c9879610b1aa8ca84360937669289058fa9837
parent50ab1a72863b1ad4b117862bc52610f8d4535609 (diff)
downloadlinux-3.10-078ce6409ca54d5fc6eb7d2147cd6efc3eb09078.tar.gz
linux-3.10-078ce6409ca54d5fc6eb7d2147cd6efc3eb09078.tar.bz2
linux-3.10-078ce6409ca54d5fc6eb7d2147cd6efc3eb09078.zip
sysfs: make bin attr open get active reference of parent too
All bin attr operations require active references of itself and its parent. There's no reason to allow open when its parent has been deactivated and allowing it is inconsistent with regular sysfs file. Use sysfs_get_active_two() in bin attribute open function. 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>
-rw-r--r--fs/sysfs/bin.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/fs/sysfs/bin.c b/fs/sysfs/bin.c
index e93fe5e2fa4..9c8f8824e66 100644
--- a/fs/sysfs/bin.c
+++ b/fs/sysfs/bin.c
@@ -171,8 +171,8 @@ static int open(struct inode * inode, struct file * file)
struct bin_buffer *bb = NULL;
int error;
- /* need attr_sd for attr */
- if (!sysfs_get_active(attr_sd))
+ /* binary file operations requires both @sd and its parent */
+ if (!sysfs_get_active_two(attr_sd))
return -ENODEV;
error = -EACCES;
@@ -193,12 +193,12 @@ static int open(struct inode * inode, struct file * file)
mutex_init(&bb->mutex);
file->private_data = bb;
- /* open succeeded, put active reference */
- sysfs_put_active(attr_sd);
+ /* open succeeded, put active references */
+ sysfs_put_active_two(attr_sd);
return 0;
err_out:
- sysfs_put_active(attr_sd);
+ sysfs_put_active_two(attr_sd);
kfree(bb);
return error;
}