Re: [PATCH v2 1/2] iio: imu: adis16400: use DEFINE_DEBUGFS_ATTRIBUTE instead of DEFINE_SIMPLE_ATTRIBUTE

From: Jonathan Cameron
Date: Sat Apr 04 2020 - 11:33:10 EST


On Tue, 31 Mar 2020 15:28:03 +0000
"Sa, Nuno" <Nuno.Sa@xxxxxxxxxx> wrote:

> > From: linux-iio-owner@xxxxxxxxxxxxxxx <linux-iio-owner@xxxxxxxxxxxxxxx> On
> > Behalf Of Rohit Sarkar
> > Sent: Dienstag, 31. MÃrz 2020 13:48
> > To: linux-iio@xxxxxxxxxxxxxxx
> > Cc: Bogdan, Dragos <Dragos.Bogdan@xxxxxxxxxx>; Rohit Sarkar
> > <rohitsarkar5398@xxxxxxxxx>; Lars-Peter Clausen <lars@xxxxxxxxxx>;
> > Hennerich, Michael <Michael.Hennerich@xxxxxxxxxx>; Stefan Popa
> > <stefan.popa@xxxxxxxxxx>; Jonathan Cameron <jic23@xxxxxxxxxx>; Hartmut
> > Knaack <knaack.h@xxxxxx>; Peter Meerwald-Stadler
> > <pmeerw@xxxxxxxxxx>; linux-kernel@xxxxxxxxxxxxxxx
> > Subject: [PATCH v2 1/2] iio: imu: adis16400: use
> > DEFINE_DEBUGFS_ATTRIBUTE instead of DEFINE_SIMPLE_ATTRIBUTE
> >
> > debugfs_create_file_unsafe does not protect the fops handed to it
> > against file removal. DEFINE_DEBUGFS_ATTRIBUTE makes the fops aware of
> > the file lifetime and thus protects it against removal.
> >
> > Signed-off-by: Rohit Sarkar <rohitsarkar5398@xxxxxxxxx>
> > ---
> > drivers/iio/imu/adis16400.c | 19 ++++++++++---------
> > 1 file changed, 10 insertions(+), 9 deletions(-)
> >
> > diff --git a/drivers/iio/imu/adis16400.c b/drivers/iio/imu/adis16400.c
> > index cfb1c19eb930..c8fcd40f58c0 100644
> > --- a/drivers/iio/imu/adis16400.c
> > +++ b/drivers/iio/imu/adis16400.c
> > @@ -258,7 +258,7 @@ static int adis16400_show_product_id(void *arg, u64
> > *val)
> >
> > return 0;
> > }
> > -DEFINE_SIMPLE_ATTRIBUTE(adis16400_product_id_fops,
> > +DEFINE_DEBUGFS_ATTRIBUTE(adis16400_product_id_fops,
> > adis16400_show_product_id, NULL, "%lld\n");
> >
> > static int adis16400_show_flash_count(void *arg, u64 *val)
> > @@ -275,7 +275,7 @@ static int adis16400_show_flash_count(void *arg, u64
> > *val)
> >
> > return 0;
> > }
> > -DEFINE_SIMPLE_ATTRIBUTE(adis16400_flash_count_fops,
> > +DEFINE_DEBUGFS_ATTRIBUTE(adis16400_flash_count_fops,
> > adis16400_show_flash_count, NULL, "%lld\n");
> >
> > static int adis16400_debugfs_init(struct iio_dev *indio_dev)
> > @@ -283,15 +283,16 @@ static int adis16400_debugfs_init(struct iio_dev
> > *indio_dev)
> > struct adis16400_state *st = iio_priv(indio_dev);
> >
> > if (st->variant->flags & ADIS16400_HAS_SERIAL_NUMBER)
> > - debugfs_create_file("serial_number", 0400,
> > - indio_dev->debugfs_dentry, st,
> > - &adis16400_serial_number_fops);
> > + debugfs_create_file_unsafe("serial_number", 0400,
> > + indio_dev->debugfs_dentry, st,
> > + &adis16400_serial_number_fops);
> > if (st->variant->flags & ADIS16400_HAS_PROD_ID)
> > - debugfs_create_file("product_id", 0400,
> > + debugfs_create_file_unsafe("product_id", 0400,
> > + indio_dev->debugfs_dentry, st,
> > + &adis16400_product_id_fops);
> > + debugfs_create_file_unsafe("flash_count", 0400,
> > indio_dev->debugfs_dentry, st,
> > - &adis16400_product_id_fops);
> > - debugfs_create_file("flash_count", 0400, indio_dev->debugfs_dentry,
> > - st, &adis16400_flash_count_fops);
> > + &adis16400_flash_count_fops);
> >
> > return 0;
> > }
>
> Tested-by Nuno SÃ <nuno.sa@xxxxxxxxxx>
Applied to the togreg branch of iio.git and pushed out as testing for the
autobuilders to try it out.

Thanks,

Jonathan

>
> > --
> > 2.23.0.385.gbc12974a89
>