[PATCH v7 0/3] staging: iio: adc: ad7816: Fix SPI operations race condition and DMA safety
From: Abdelnasser Hussein
Date: Tue Sep 15 2026 - 04:12:34 EST
This series addresses separate issues in the ad7816 driver regarding
race conditions and DMA safety across all SPI operations.
Changes in v7:
Patch 2: Moved the mutex to the top of the ad7816_chip_info struct
(right after the pointers) to prevent struct padding/holes, as
pointed out by Andy Shevchenko. Also expanded the mutex to serialize
ad7816_spi_write() to prevent race conditions.
Patch 3: Dropped the dedicated rx_buf. Switched all spi_write() and
spi_read() calls to use spi_write_then_read(..., NULL, 0) to safely
handle DMA using an internal bounce buffer, avoiding cacheline sharing,
as guided by Jonathan Cameron.
Changes in v6:
Separated the alphabetical sorting of include headers into a dedicated
precursor patch (Patch 1).
Kept the mutex addition strictly focused on serializing the read
operations without modifying the sizeof() argument (Patch 2).
Moved the sizeof() argument fix to the DMA-safe buffer patch where
it logically belongs (Patch 3).
Changes in v5:
Split the changes into separate patches for bisectability.
Replaced stack buffer with a dedicated rx_buf aligned with
IIO_DMA_MINALIGN.
Abdelnasser Hussein (3):
staging: iio: adc: ad7816: Sort headers alphabetically
staging: iio: adc: ad7816: Serialize SPI operations
staging: iio: adc: ad7816: Fix DMA safety issues in SPI transfers
drivers/staging/iio/adc/ad7816.c | 29 ++++++++++++++++++++---------
1 file changed, 20 insertions(+), 9 deletions(-)
--
2.54.0