From: Dan Carpenter <dan.carpenter@linaro.org>
To: Mohammad Amin Hosseini <moahmmad.hosseinii@gmail.com>
Cc: linux-iio@vger.kernel.org, linux-staging@lists.linux.dev,
linux-kernel@vger.kernel.org, gregkh@linuxfoundation.org,
jic23@kernel.org, lars@metafoo.de, Michael.Hennerich@analog.com,
dlechner@baylibre.com, nuno.sa@analog.com, andy@kernel.org,
sonic.zhang@analog.com, vapier@gentoo.org
Subject: Re: [PATCH v5] staging: iio: adc: ad7816: fix race condition in SPI operations
Date: Mon, 1 Sep 2025 22:47:22 +0300 [thread overview]
Message-ID: <aLX4SmvqBjJrS3FS@stanley.mountain> (raw)
In-Reply-To: <20250901194043.20366-1-moahmmad.hosseinii@gmail.com>
On Mon, Sep 01, 2025 at 11:10:43PM +0330, Mohammad Amin Hosseini wrote:
> The ad7816 driver lacks proper synchronization around SPI operations
> and device state access. Concurrent access from multiple threads can
> lead to data corruption and inconsistent device state.
>
> The driver performs sequences of GPIO pin manipulations followed by
> SPI transactions without any locking. Device state variables (mode,
> channel_id, oti_data) are also accessed without synchronization.
>
> This bug was found through manual code review using static analysis
> techniques. The review focused on identifying unsynchronized access
> patterns to shared resources. Key indicators were:
> - GPIO pin state changes followed by SPI operations without atomicity
> - Shared state variables accessed from multiple sysfs entry points
> - No mutex or spinlock protection around sections
> - Potential for interleaved execution in multi-threaded environments
>
> The review methodology involved tracing data flow paths and identifying
> points where concurrent access could corrupt device state or SPI
> communication sequences.
>
> Add io_lock mutex to protect:
> - SPI transactions and GPIO sequences in read/write functions
> - Device state variables in sysfs show/store functions
> - Concurrent access to chip configuration
>
> This prevents race conditions when multiple processes access the device
> simultaneously through sysfs attributes or device file operations.
>
> Fixes: 7924425db04a ("staging: iio: adc: new driver for AD7816 devices")
>
> Signed-off-by: Mohammad Amin Hosseini <moahmmad.hosseinii@gmail.com>
>
I've asked you to wait a day between resends and Jonathan asked you to
wait for "a few days"... It really is a headache to review the same
patch over and over in the same day.
regards,
dan carpenter
next prev parent reply other threads:[~2025-09-01 19:47 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-09-01 19:40 [PATCH v5] staging: iio: adc: ad7816: fix race condition in SPI operations Mohammad Amin Hosseini
2025-09-01 19:47 ` Dan Carpenter [this message]
2025-09-01 20:37 ` David Lechner
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=aLX4SmvqBjJrS3FS@stanley.mountain \
--to=dan.carpenter@linaro.org \
--cc=Michael.Hennerich@analog.com \
--cc=andy@kernel.org \
--cc=dlechner@baylibre.com \
--cc=gregkh@linuxfoundation.org \
--cc=jic23@kernel.org \
--cc=lars@metafoo.de \
--cc=linux-iio@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-staging@lists.linux.dev \
--cc=moahmmad.hosseinii@gmail.com \
--cc=nuno.sa@analog.com \
--cc=sonic.zhang@analog.com \
--cc=vapier@gentoo.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.