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>
This commit is contained in:
parent
50ab1a7286
commit
078ce6409c
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue