sysfs: Use only return value from is_visible for the file mode
Up to now, is_visible can only be used to either remove visibility of a file entirely or to add permissions, but not to reduce permissions. This makes it impossible, for example, to use DEVICE_ATTR_RW to define file attributes and reduce permissions to read-only. This behavior is undesirable and unnecessarily complicates code which needs to reduce permissions; instead of just returning the desired permissions, it has to ensure that the permissions in the attribute variable declaration only reflect the minimal permissions ever needed. Change semantics of is_visible to only use the permissions returned from it instead of oring the returned value with the hard-coded permissions. Signed-off-by: Guenter Roeck <linux@roeck-us.net> Signed-off-by: Vivien Didelot <vivien.didelot@savoirfairelinux.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
bc465aa9d0
commit
da4759c73b
|
@ -41,7 +41,7 @@ static int create_files(struct kernfs_node *parent, struct kobject *kobj,
|
|||
|
||||
if (grp->attrs) {
|
||||
for (i = 0, attr = grp->attrs; *attr && !error; i++, attr++) {
|
||||
umode_t mode = 0;
|
||||
umode_t mode = (*attr)->mode;
|
||||
|
||||
/*
|
||||
* In update mode, we're changing the permissions or
|
||||
|
@ -56,8 +56,7 @@ static int create_files(struct kernfs_node *parent, struct kobject *kobj,
|
|||
continue;
|
||||
}
|
||||
error = sysfs_add_file_mode_ns(parent, *attr, false,
|
||||
(*attr)->mode | mode,
|
||||
NULL);
|
||||
mode, NULL);
|
||||
if (unlikely(error))
|
||||
break;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue