[PATCH v7 0/3] staging: iio: adc: ad7816: Fix SPI operations race condition and DMA safety

Abdelnasser Hussein posted 3 patches 1 week, 2 days ago
drivers/staging/iio/adc/ad7816.c | 29 ++++++++++++++++++++---------
1 file changed, 20 insertions(+), 9 deletions(-)
[PATCH v7 0/3] staging: iio: adc: ad7816: Fix SPI operations race condition and DMA safety
Posted by Abdelnasser Hussein 1 week, 2 days ago
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
Re: [PATCH v7 0/3] staging: iio: adc: ad7816: Fix SPI operations race condition and DMA safety
Posted by Joshua Crofts 1 week, 2 days ago
On Tue, 15 Sep 2026 10:59:36 +0300
Abdelnasser Hussein <abdelnasserhussein11@gmail.com> wrote:

> 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(-)
> 

For the whole series:

Reviewed-by: Joshua Crofts <joshua.crofts1@gmail.com>

-- 
Kind regards,
Joshua Crofts