[PATCH v2 0/3] iio: adis: fix unprotected debugfs reads
Arka Mondal <[email protected]>
| Newsgroups | org.kernel.vger.linux-kernel,org.kernel.vger.linux-iio |
|---|---|
| Message-ID | <[email protected]> |
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 <[email protected]> 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/[email protected] 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