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

From: Arka Mondal

Date: Sat Aug 15 2026 - 14:27:56 EST


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@xxxxxxxxx> 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@xxxxxxxxx

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