Message ID | 20200331114732.14739-3-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 2/2] iio: imu: adis16460: 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/adis16460.c | 27 +++++++++++++++------------ > 1 file changed, 15 insertions(+), 12 deletions(-) > > diff --git a/drivers/iio/imu/adis16460.c b/drivers/iio/imu/adis16460.c > index 9539cfe4a259..f96cfd007957 100644 > --- a/drivers/iio/imu/adis16460.c > +++ b/drivers/iio/imu/adis16460.c > @@ -87,8 +87,8 @@ static int adis16460_show_serial_number(void *arg, > u64 *val) > > return 0; > } > -DEFINE_SIMPLE_ATTRIBUTE(adis16460_serial_number_fops, > - adis16460_show_serial_number, NULL, "0x%.4llx\n"); > +DEFINE_DEBUGFS_ATTRIBUTE(adis16460_serial_number_fops, > + adis16460_show_serial_number, NULL, "0x%.4llx\n"); > > static int adis16460_show_product_id(void *arg, u64 *val) > { > @@ -105,8 +105,8 @@ static int adis16460_show_product_id(void *arg, u64 > *val) > > return 0; > } > -DEFINE_SIMPLE_ATTRIBUTE(adis16460_product_id_fops, > - adis16460_show_product_id, NULL, "%llu\n"); > +DEFINE_DEBUGFS_ATTRIBUTE(adis16460_product_id_fops, > + adis16460_show_product_id, NULL, "%llu\n"); > > static int adis16460_show_flash_count(void *arg, u64 *val) > { > @@ -123,19 +123,22 @@ static int adis16460_show_flash_count(void *arg, > u64 *val) > > return 0; > } > -DEFINE_SIMPLE_ATTRIBUTE(adis16460_flash_count_fops, > - adis16460_show_flash_count, NULL, "%lld\n"); > +DEFINE_DEBUGFS_ATTRIBUTE(adis16460_flash_count_fops, > + adis16460_show_flash_count, NULL, "%lld\n"); > > static int adis16460_debugfs_init(struct iio_dev *indio_dev) > { > struct adis16460 *adis16460 = iio_priv(indio_dev); > > - debugfs_create_file("serial_number", 0400, indio_dev- > >debugfs_dentry, > - adis16460, &adis16460_serial_number_fops); > - debugfs_create_file("product_id", 0400, indio_dev->debugfs_dentry, > - adis16460, &adis16460_product_id_fops); > - debugfs_create_file("flash_count", 0400, indio_dev->debugfs_dentry, > - adis16460, &adis16460_flash_count_fops); > + debugfs_create_file_unsafe("serial_number", 0400, > + indio_dev->debugfs_dentry, adis16460, > + &adis16460_serial_number_fops); > + debugfs_create_file_unsafe("product_id", 0400, > + indio_dev->debugfs_dentry, adis16460, > + &adis16460_product_id_fops); > + debugfs_create_file_unsafe("flash_count", 0400, > + indio_dev->debugfs_dentry, adis16460, > + &adis16460_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:22 +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 2/2] iio: imu: adis16460: 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/adis16460.c | 27 +++++++++++++++------------ > > 1 file changed, 15 insertions(+), 12 deletions(-) > > > > diff --git a/drivers/iio/imu/adis16460.c b/drivers/iio/imu/adis16460.c > > index 9539cfe4a259..f96cfd007957 100644 > > --- a/drivers/iio/imu/adis16460.c > > +++ b/drivers/iio/imu/adis16460.c > > @@ -87,8 +87,8 @@ static int adis16460_show_serial_number(void *arg, > > u64 *val) > > > > return 0; > > } > > -DEFINE_SIMPLE_ATTRIBUTE(adis16460_serial_number_fops, > > - adis16460_show_serial_number, NULL, "0x%.4llx\n"); > > +DEFINE_DEBUGFS_ATTRIBUTE(adis16460_serial_number_fops, > > + adis16460_show_serial_number, NULL, "0x%.4llx\n"); > > > > static int adis16460_show_product_id(void *arg, u64 *val) > > { > > @@ -105,8 +105,8 @@ static int adis16460_show_product_id(void *arg, u64 > > *val) > > > > return 0; > > } > > -DEFINE_SIMPLE_ATTRIBUTE(adis16460_product_id_fops, > > - adis16460_show_product_id, NULL, "%llu\n"); > > +DEFINE_DEBUGFS_ATTRIBUTE(adis16460_product_id_fops, > > + adis16460_show_product_id, NULL, "%llu\n"); > > > > static int adis16460_show_flash_count(void *arg, u64 *val) > > { > > @@ -123,19 +123,22 @@ static int adis16460_show_flash_count(void *arg, > > u64 *val) > > > > return 0; > > } > > -DEFINE_SIMPLE_ATTRIBUTE(adis16460_flash_count_fops, > > - adis16460_show_flash_count, NULL, "%lld\n"); > > +DEFINE_DEBUGFS_ATTRIBUTE(adis16460_flash_count_fops, > > + adis16460_show_flash_count, NULL, "%lld\n"); > > > > static int adis16460_debugfs_init(struct iio_dev *indio_dev) > > { > > struct adis16460 *adis16460 = iio_priv(indio_dev); > > > > - debugfs_create_file("serial_number", 0400, indio_dev- > > >debugfs_dentry, > > - adis16460, &adis16460_serial_number_fops); > > - debugfs_create_file("product_id", 0400, indio_dev->debugfs_dentry, > > - adis16460, &adis16460_product_id_fops); > > - debugfs_create_file("flash_count", 0400, indio_dev->debugfs_dentry, > > - adis16460, &adis16460_flash_count_fops); > > + debugfs_create_file_unsafe("serial_number", 0400, > > + indio_dev->debugfs_dentry, adis16460, > > + &adis16460_serial_number_fops); > > + debugfs_create_file_unsafe("product_id", 0400, > > + indio_dev->debugfs_dentry, adis16460, > > + &adis16460_product_id_fops); > > + debugfs_create_file_unsafe("flash_count", 0400, > > + indio_dev->debugfs_dentry, adis16460, > > + &adis16460_flash_count_fops); > > > > return 0; > > } > > Tested-by Nuno Sá <nuno.sa@analog.com> Applied. Thanks, Jonathan > > > -- > > 2.23.0.385.gbc12974a89 >
diff --git a/drivers/iio/imu/adis16460.c b/drivers/iio/imu/adis16460.c index 9539cfe4a259..f96cfd007957 100644 --- a/drivers/iio/imu/adis16460.c +++ b/drivers/iio/imu/adis16460.c @@ -87,8 +87,8 @@ static int adis16460_show_serial_number(void *arg, u64 *val) return 0; } -DEFINE_SIMPLE_ATTRIBUTE(adis16460_serial_number_fops, - adis16460_show_serial_number, NULL, "0x%.4llx\n"); +DEFINE_DEBUGFS_ATTRIBUTE(adis16460_serial_number_fops, + adis16460_show_serial_number, NULL, "0x%.4llx\n"); static int adis16460_show_product_id(void *arg, u64 *val) { @@ -105,8 +105,8 @@ static int adis16460_show_product_id(void *arg, u64 *val) return 0; } -DEFINE_SIMPLE_ATTRIBUTE(adis16460_product_id_fops, - adis16460_show_product_id, NULL, "%llu\n"); +DEFINE_DEBUGFS_ATTRIBUTE(adis16460_product_id_fops, + adis16460_show_product_id, NULL, "%llu\n"); static int adis16460_show_flash_count(void *arg, u64 *val) { @@ -123,19 +123,22 @@ static int adis16460_show_flash_count(void *arg, u64 *val) return 0; } -DEFINE_SIMPLE_ATTRIBUTE(adis16460_flash_count_fops, - adis16460_show_flash_count, NULL, "%lld\n"); +DEFINE_DEBUGFS_ATTRIBUTE(adis16460_flash_count_fops, + adis16460_show_flash_count, NULL, "%lld\n"); static int adis16460_debugfs_init(struct iio_dev *indio_dev) { struct adis16460 *adis16460 = iio_priv(indio_dev); - debugfs_create_file("serial_number", 0400, indio_dev->debugfs_dentry, - adis16460, &adis16460_serial_number_fops); - debugfs_create_file("product_id", 0400, indio_dev->debugfs_dentry, - adis16460, &adis16460_product_id_fops); - debugfs_create_file("flash_count", 0400, indio_dev->debugfs_dentry, - adis16460, &adis16460_flash_count_fops); + debugfs_create_file_unsafe("serial_number", 0400, + indio_dev->debugfs_dentry, adis16460, + &adis16460_serial_number_fops); + debugfs_create_file_unsafe("product_id", 0400, + indio_dev->debugfs_dentry, adis16460, + &adis16460_product_id_fops); + debugfs_create_file_unsafe("flash_count", 0400, + indio_dev->debugfs_dentry, adis16460, + &adis16460_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/adis16460.c | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-)