diff mbox series

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

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

Commit Message

Rohit Sarkar March 31, 2020, 11:47 a.m. UTC
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(-)

Comments

Nuno Sa March 31, 2020, 3:28 p.m. UTC | #1
> 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
Jonathan Cameron April 4, 2020, 3:32 p.m. UTC | #2
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 mbox series

Patch

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;
 }