[PATCH v2 0/3] iio: adis: fix unprotected debugfs reads

Arka Mondal posted 3 patches 1 month, 2 weeks ago
drivers/iio/gyro/adis16136.c | 2 +-
drivers/iio/imu/adis16400.c  | 2 +-
drivers/iio/imu/adis16480.c  | 4 ++--
3 files changed, 4 insertions(+), 4 deletions(-)
[PATCH v2 0/3] iio: adis: fix unprotected debugfs reads
Posted by Arka Mondal 1 month, 2 weeks ago
Four open coded file operations in three ADIS drivers are passed to
debugfs_create_file_unsafe(). None of them call debugfs_file_get(), so
debugfs_remove_recursive() does not wait for a read in progress and
unbind frees the iio_dev underneath it.

Andy Shevchenko <andriy.shevchenko@intel.com> asked on v1 whether these
could use DEFINE_DEBUGFS_ATTRIBUTE() instead. They cannot, as it formats
a single u64, and these handlers print up to four registers, e.g.
"%.4x%.4x%.4x-%.4x" in adis16136. Converting them would change what the
files return.

adis16475 and adis16550 already split this way, using
debugfs_create_file() for their open coded firmware files and
debugfs_create_file_unsafe() only for the DEFINE_DEBUGFS_ATTRIBUTE ones.
This does the same for adis16480, adis16400 and adis16136.

Compile tested only; no ADIS hardware available.

Changes since v1:
1. patch 2: changelog rewritten to explain why serial_number cannot use
   DEFINE_DEBUGFS_ATTRIBUTE(). Code unchanged.
2. patches 1 and 3: unchanged, Reviewed-by added.

Link to v1:
https://lore.kernel.org/r/20260814090728.965922-1-arkamondalofficial@gmail.com

Arka Mondal (3):
  iio: imu: adis16480: fix unprotected debugfs reads
  iio: imu: adis16400: fix unprotected debugfs reads
  iio: gyro: adis16136: fix unprotected debugfs reads

 drivers/iio/gyro/adis16136.c | 2 +-
 drivers/iio/imu/adis16400.c  | 2 +-
 drivers/iio/imu/adis16480.c  | 4 ++--
 3 files changed, 4 insertions(+), 4 deletions(-)


base-commit: 3d6d817622b0a9721e3cc404df3469171582be13
-- 
2.55.0
Re: [PATCH v2 0/3] iio: adis: fix unprotected debugfs reads
Posted by Jonathan Cameron 1 month, 1 week ago
On Sun, 16 Aug 2026 03:27:23 +0900
Arka Mondal <arkamondalofficial@gmail.com> wrote:

> Four open coded file operations in three ADIS drivers are passed to
> debugfs_create_file_unsafe(). None of them call debugfs_file_get(), so
> debugfs_remove_recursive() does not wait for a read in progress and
> unbind frees the iio_dev underneath it.
> 
> Andy Shevchenko <andriy.shevchenko@intel.com> asked on v1 whether these
> could use DEFINE_DEBUGFS_ATTRIBUTE() instead. They cannot, as it formats
> a single u64, and these handlers print up to four registers, e.g.
> "%.4x%.4x%.4x-%.4x" in adis16136. Converting them would change what the
> files return.
> 
> adis16475 and adis16550 already split this way, using
> debugfs_create_file() for their open coded firmware files and
> debugfs_create_file_unsafe() only for the DEFINE_DEBUGFS_ATTRIBUTE ones.
> This does the same for adis16480, adis16400 and adis16136.

This all makes sense to me, so I've queued this on the fixes-togreg
branch of iio.git and marked them for stable.  Note that branch will be
rebased on rc1 once available.  As such I don't really mind rebasing
it for tags or any feedback that comes in.

Thanks

Jonathan

> 
> Compile tested only; no ADIS hardware available.
> 
> Changes since v1:
> 1. patch 2: changelog rewritten to explain why serial_number cannot use
>    DEFINE_DEBUGFS_ATTRIBUTE(). Code unchanged.
> 2. patches 1 and 3: unchanged, Reviewed-by added.
> 
> Link to v1:
> https://lore.kernel.org/r/20260814090728.965922-1-arkamondalofficial@gmail.com
> 
> Arka Mondal (3):
>   iio: imu: adis16480: fix unprotected debugfs reads
>   iio: imu: adis16400: fix unprotected debugfs reads
>   iio: gyro: adis16136: fix unprotected debugfs reads
> 
>  drivers/iio/gyro/adis16136.c | 2 +-
>  drivers/iio/imu/adis16400.c  | 2 +-
>  drivers/iio/imu/adis16480.c  | 4 ++--
>  3 files changed, 4 insertions(+), 4 deletions(-)
> 
> 
> base-commit: 3d6d817622b0a9721e3cc404df3469171582be13