On Wed, 12 Jun 2024, Marek Behún wrote: > Put the turris-mox-rwtm attribute group into the .default_groups > member of the underlying kobject type and drop the manual > sysfs_create_files() / sysfs_remove_files(). The kobject library will > take care of this in it's internal code. > > Signed-off-by: Marek Behún > --- > drivers/firmware/turris-mox-rwtm.c | 71 ++++++++++++++---------------- > 1 file changed, 32 insertions(+), 39 deletions(-) > > diff --git a/drivers/firmware/turris-mox-rwtm.c b/drivers/firmware/turris-mox-rwtm.c > index 5675f94a3ff2..441409fefc59 100644 > --- a/drivers/firmware/turris-mox-rwtm.c > +++ b/drivers/firmware/turris-mox-rwtm.c > @@ -113,6 +113,36 @@ static inline struct mox_rwtm *to_rwtm(struct kobject *kobj) > return container_of(kobj, struct mox_kobject, kobj)->rwtm; > } > > +#define MOX_ATTR_RO(name, format, cat) \ > +static ssize_t \ > +name##_show(struct kobject *kobj, struct kobj_attribute *a, \ > + char *buf) \ > +{ \ > + struct mox_rwtm *rwtm = to_rwtm(kobj); \ Fix \ alignment to match the others while you move the code around. Reviewed-by: Ilpo Järvinen -- i. > + if (!rwtm->has_##cat) \ > + return -ENODATA; \ > + return sprintf(buf, format, rwtm->name); \ > +} \ > +static struct kobj_attribute mox_attr_##name = __ATTR_RO(name) > + > +MOX_ATTR_RO(serial_number, "%016llX\n", board_info); > +MOX_ATTR_RO(board_version, "%i\n", board_info); > +MOX_ATTR_RO(ram_size, "%i\n", board_info); > +MOX_ATTR_RO(mac_address1, "%pM\n", board_info); > +MOX_ATTR_RO(mac_address2, "%pM\n", board_info); > +MOX_ATTR_RO(pubkey, "%s\n", pubkey); > + > +static struct attribute *mox_rwtm_attrs[] = { > + &mox_attr_serial_number.attr, > + &mox_attr_board_version.attr, > + &mox_attr_ram_size.attr, > + &mox_attr_mac_address1.attr, > + &mox_attr_mac_address2.attr, > + &mox_attr_pubkey.attr, > + NULL > +}; > +ATTRIBUTE_GROUPS(mox_rwtm); > + > static void mox_kobj_release(struct kobject *kobj) > { > kfree(to_rwtm(kobj)->kobj); > @@ -121,6 +151,7 @@ static void mox_kobj_release(struct kobject *kobj) > static const struct kobj_type mox_kobj_ktype = { > .release = mox_kobj_release, > .sysfs_ops = &kobj_sysfs_ops, > + .default_groups = mox_rwtm_groups, > }; > > static int mox_kobj_create(struct mox_rwtm *rwtm)