]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
samples/kobject: add is_visible() callback to attribute group
authorThomas Weißschuh <linux@weissschuh.net>
Wed, 29 Oct 2025 08:12:14 +0000 (09:12 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 26 Nov 2025 14:16:35 +0000 (15:16 +0100)
There was no example for the is_visible() callback so far.

It will also become an example and test for the constification of
'struct attribute' later.

Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
Link: https://patch.msgid.link/20251029-sysfs-const-attr-prep-v5-5-ea7d745acff4@weissschuh.net
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
samples/kobject/kset-example.c

index 579ce150217c6e613887e32a08206573543b3091..1aac595ed9498b30448485a60d9376cb5b5ea1d3 100644 (file)
@@ -178,7 +178,22 @@ static struct attribute *foo_default_attrs[] = {
        &bar_attribute.attr,
        NULL,   /* need to NULL terminate the list of attributes */
 };
-ATTRIBUTE_GROUPS(foo_default);
+
+static umode_t foo_default_attrs_is_visible(struct kobject *kobj,
+                                           struct attribute *attr,
+                                           int n)
+{
+       /* Hide attributes with the same name as the kobject. */
+       if (strcmp(kobject_name(kobj), attr->name) == 0)
+               return 0;
+       return attr->mode;
+}
+
+static const struct attribute_group foo_default_group = {
+       .attrs          = foo_default_attrs,
+       .is_visible     = foo_default_attrs_is_visible,
+};
+__ATTRIBUTE_GROUPS(foo_default);
 
 /*
  * Our own ktype for our kobjects.  Here we specify our sysfs ops, the