Commit 7dd9fdb4 authored by Thomas Weißschuh's avatar Thomas Weißschuh Committed by Greg Kroah-Hartman
Browse files

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: default avatarThomas Weißschuh <linux@weissschuh.net>
Link: https://patch.msgid.link/20251029-sysfs-const-attr-prep-v5-4-ea7d745acff4@weissschuh.net


Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 02ac5335
Loading
Loading
Loading
Loading
+8 −2
Original line number Diff line number Diff line
@@ -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) {
			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;
+6 −2
Original line number Diff line number Diff line
@@ -104,8 +104,12 @@ do { \
 */
struct attribute_group {
	const char		*name;
	__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 *,