On Fri, Sep 02, 2022 at 05:44:23PM +0800, Jiasheng Jiang wrote: > The driver core supports the ability to handle the creation and removal > of device-specific sysfs files in a race-free manner. Moreover, it can > guarantee the success of creation. Therefore, it should be better to > convert to use dev_groups. > > Signed-off-by: Jiasheng Jiang <jiasheng@xxxxxxxxxxx> > --- > Changelog: > > v2 -> v3: > > 1. Add is_visible to filter the unneeded files. > > v1 -> v2: > > 1. Change the title. > 2. Switch to use an attribute group. > --- > drivers/usb/serial/ftdi_sio.c | 101 +++++++++++++++++----------------- > 1 file changed, 51 insertions(+), 50 deletions(-) > > diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c > index d5a3986dfee7..479c3a5caaf8 100644 > --- a/drivers/usb/serial/ftdi_sio.c > +++ b/drivers/usb/serial/ftdi_sio.c > @@ -1107,11 +1107,40 @@ static u32 ftdi_232bm_baud_base_to_divisor(int baud, int base); > static u32 ftdi_232bm_baud_to_divisor(int baud); > static u32 ftdi_2232h_baud_base_to_divisor(int baud, int base); > static u32 ftdi_2232h_baud_to_divisor(int baud); > +static umode_t ftdi_sio_attr_is_visible(struct kobject *kobj, > + struct attribute *attr, int idx); > +static ssize_t latency_timer_store(struct device *dev, > + struct device_attribute *attr, > + const char *valbuf, size_t count); > +static ssize_t event_char_store(struct device *dev, > + struct device_attribute *attr, const char *valbuf, size_t count); > +static ssize_t latency_timer_show(struct device *dev, > + struct device_attribute *attr, char *buf); > + Please work with the code so that you do not have to pre-define these functions. It should be possible. Worst case, you pre-define the structure for the driver, that should be it. And again, have you tested this change? thanks, greg k-h