mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
sysfs: attribute_group: enable const variants of is_visible()
When constifying instances of struct attribute, for consistency the corresponding .is_visible() callback should be adapted, too. Introduce a temporary transition mechanism until all callbacks are converted. Signed-off-by: Thomas Weißschuh <linux@weissschuh.net> Link: https://patch.msgid.link/20251029-sysfs-const-attr-prep-v5-4-ea7d745acff4@weissschuh.net Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
02ac5335a5
commit
7dd9fdb493
@@ -36,6 +36,9 @@ static umode_t __first_visible(const struct attribute_group *grp, struct kobject
|
||||
if (grp->attrs && grp->attrs[0] && grp->is_visible)
|
||||
return grp->is_visible(kobj, grp->attrs[0], 0);
|
||||
|
||||
if (grp->attrs && grp->attrs[0] && grp->is_visible_const)
|
||||
return grp->is_visible_const(kobj, grp->attrs[0], 0);
|
||||
|
||||
if (grp->bin_attrs && grp->bin_attrs[0] && grp->is_bin_visible)
|
||||
return grp->is_bin_visible(kobj, grp->bin_attrs[0], 0);
|
||||
|
||||
@@ -61,8 +64,11 @@ static int create_files(struct kernfs_node *parent, struct kobject *kobj,
|
||||
*/
|
||||
if (update)
|
||||
kernfs_remove_by_name(parent, (*attr)->name);
|
||||
if (grp->is_visible) {
|
||||
mode = grp->is_visible(kobj, *attr, i);
|
||||
if (grp->is_visible || grp->is_visible_const) {
|
||||
if (grp->is_visible)
|
||||
mode = grp->is_visible(kobj, *attr, i);
|
||||
else
|
||||
mode = grp->is_visible_const(kobj, *attr, i);
|
||||
mode &= ~SYSFS_GROUP_INVISIBLE;
|
||||
if (!mode)
|
||||
continue;
|
||||
|
||||
@@ -104,8 +104,12 @@ do { \
|
||||
*/
|
||||
struct attribute_group {
|
||||
const char *name;
|
||||
umode_t (*is_visible)(struct kobject *,
|
||||
struct attribute *, int);
|
||||
__SYSFS_FUNCTION_ALTERNATIVE(
|
||||
umode_t (*is_visible)(struct kobject *,
|
||||
struct attribute *, int);
|
||||
umode_t (*is_visible_const)(struct kobject *,
|
||||
const struct attribute *, int);
|
||||
);
|
||||
umode_t (*is_bin_visible)(struct kobject *,
|
||||
const struct bin_attribute *, int);
|
||||
size_t (*bin_size)(struct kobject *,
|
||||
|
||||
Reference in New Issue
Block a user