On Sun, Dec 31, 2023 at 12:31 PM Hans de Goede <hdegoede@xxxxxxxxxx> wrote: > > sysfs attributes preferably should not be manually be registered but > instead the driver.groups / driver.dev_groups driver struct members > should be used to have the driver core handle this in a race free > manner. > > Using driver.groups would be the most direct replacement for > driver_[add|remove]_file, but some of the attributes actually need access ..._file() > to the struct atomisp_device (*), so as part of modernizing this part of > the atomisp driver this change also makes the sysfs attribute device > attributes instead of driver attributes. > > *) Before this change accessing these attributes without the driver having > bound would result in a NULL pointer deref, this commit fixes this. ... > + if (dbglvl < 1 || dbglvl > 9) in_range() ? > return -ERANGE; ... > +static const struct attribute_group dbg_attr_group = { > + .attrs = dbg_attrs, > +}; > > +const struct attribute_group *dbg_attr_groups[] = { > + &dbg_attr_group, > + NULL > +}; ATTRIBUTE_GROUPS() ... > +#include <linux/sysfs.h> But why? You can use forward declaration, no? > +extern const struct attribute_group *dbg_attr_groups[]; -- With Best Regards, Andy Shevchenko