Message ID | 20200331114732.14739-2-rohitsarkar5398@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | use DEFINE_DEBUGFS_ATTRIBUTE instead of DEFINE_SIMPLE_ATTRIBUTE | expand |
> From: linux-iio-owner@vger.kernel.org <linux-iio-owner@vger.kernel.org> On > Behalf Of Rohit Sarkar > Sent: Dienstag, 31. März 2020 13:48 > To: linux-iio@vger.kernel.org > Cc: Bogdan, Dragos <Dragos.Bogdan@analog.com>; Rohit Sarkar > <rohitsarkar5398@gmail.com>; Lars-Peter Clausen <lars@metafoo.de>; > Hennerich, Michael <Michael.Hennerich@analog.com>; Stefan Popa > <stefan.popa@analog.com>; Jonathan Cameron <jic23@kernel.org>; Hartmut > Knaack <knaack.h@gmx.de>; Peter Meerwald-Stadler > <pmeerw@pmeerw.net>; linux-kernel@vger.kernel.org > 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@gmail.com> > --- > 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@analog.com> > -- > 2.23.0.385.gbc12974a89
On Tue, 31 Mar 2020 15:28:03 +0000 "Sa, Nuno" <Nuno.Sa@analog.com> wrote: > > From: linux-iio-owner@vger.kernel.org <linux-iio-owner@vger.kernel.org> On > > Behalf Of Rohit Sarkar > > Sent: Dienstag, 31. März 2020 13:48 > > To: linux-iio@vger.kernel.org > > Cc: Bogdan, Dragos <Dragos.Bogdan@analog.com>; Rohit Sarkar > > <rohitsarkar5398@gmail.com>; Lars-Peter Clausen <lars@metafoo.de>; > > Hennerich, Michael <Michael.Hennerich@analog.com>; Stefan Popa > > <stefan.popa@analog.com>; Jonathan Cameron <jic23@kernel.org>; Hartmut > > Knaack <knaack.h@gmx.de>; Peter Meerwald-Stadler > > <pmeerw@pmeerw.net>; linux-kernel@vger.kernel.org > > 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@gmail.com> > > --- > > 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@analog.com> 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 >
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; }
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@gmail.com> --- drivers/iio/imu/adis16400.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-)