Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 078ce640 authored by Tejun Heo's avatar Tejun Heo Committed by Greg Kroah-Hartman
Browse files

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: default avatarTejun Heo <htejun@gmail.com>
Acked-by: default avatarCornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 50ab1a72
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -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;
}