Re: [PATCH v6 7/9] iio: accel: mma8452: Drop unneeded lock acquire on read
Joshua Crofts <[email protected]>
| Newsgroups | org.kernel.vger.linux-iio,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
On Tue, 25 Aug 2026 10:27:45 +0200 Esben Haabendal <[email protected]> wrote: > There is no need to acquire data->lock when calling mma8452_read(), and > dropping that makes it less likely to end up in an AB-BA deadlock > situation. > > Signed-off-by: Esben Haabendal <[email protected]> > --- > drivers/iio/accel/mma8452.c | 2 -- > 1 file changed, 2 deletions(-) > > diff --git a/drivers/iio/accel/mma8452.c b/drivers/iio/accel/mma8452.c > index 7ef1a9a91c31..9ae2c3e60576 100644 > --- a/drivers/iio/accel/mma8452.c > +++ b/drivers/iio/accel/mma8452.c > @@ -504,9 +504,7 @@ static int mma8452_read_raw(struct iio_dev *indio_dev, > if (!iio_device_claim_direct(indio_dev)) > return -EBUSY; > > - mutex_lock(&data->lock); > ret = mma8452_read(data, buffer); > - mutex_unlock(&data->lock); > iio_device_release_direct(indio_dev); > if (ret < 0) > return ret; > Sashiko has something to say and I tend to agree at the moment: Could removing this lock expose mma8452_read() to race conditions with PM auto-suspend and event configuration? mma8452_read() can be interrupted by the PM auto-suspend worker, which puts the device in STANDBY and disables regulators while mma8452_drdy() is actively polling over I2C. This can lead to I/O timeouts or errors. Additionally, concurrent sysfs writes to event configurations invoke mma8452_change_config(), which puts the hardware into STANDBY to modify registers. The Standby transition flushes the hardware FIFO. If this occurs between the mma8452_drdy() check and the i2c_smbus_read_i2c_block_data() in mma8452_read(), the block read will fetch flushed or stale data. -- Kind regards, Joshua Crofts