Re: [PATCH v6 7/9] iio: accel: mma8452: Drop unneeded lock acquire on read
Esben Haabendal <[email protected]>
| Newsgroups | org.kernel.vger.linux-iio,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
"Joshua Crofts" <[email protected]> writes: > 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. I have been working on fixes to these problems, and all the other issues concerning runtime PM and state and read-modify-write synchronization. I will post a patch series with the work once this series is merged. /Esben