diff options
| author | Moksh Panicker <mokshpanicker.7@gmail.com> | 2026-07-13 03:00:46 +0000 |
|---|---|---|
| committer | Jonathan Cameron <jonathan.cameron@oss.qualcomm.com> | 2026-08-07 23:51:04 +0100 |
| commit | bcd3f72e26314edfce7eaf8d7160b3119c7b7fed (patch) | |
| tree | f9fbd041f4d5fea8aa81c57e6c7acc7a7337ea8d /drivers | |
| parent | a3c03cf36a083893dedad928915471dc8c10692e (diff) | |
| download | linux-bcd3f72e26314edfce7eaf8d7160b3119c7b7fed.tar.gz linux-bcd3f72e26314edfce7eaf8d7160b3119c7b7fed.zip | |
iio: chemical: atlas-sensor: fix PM reference leak in buffer postenable
atlas_buffer_postenable() acquires a runtime PM reference with
pm_runtime_resume_and_get() but returns the result of
atlas_set_interrupt() directly. If atlas_set_interrupt() fails,
the runtime PM reference is leaked and the device can never
autosuspend.
Add pm_runtime_put_autosuspend() on the error path to balance
the reference.
Fixes: 0e4f336f50de ("iio: chemical: atlas-sensor: Balance runtime pm + pm_runtime_resume_and_get()")
Cc: stable@vger.kernel.org
Signed-off-by: Moksh Panicker <mokshpanicker.7@gmail.com>
Signed-off-by: Jonathan Cameron <jonathan.cameron@oss.qualcomm.com>
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/iio/chemical/atlas-sensor.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/iio/chemical/atlas-sensor.c b/drivers/iio/chemical/atlas-sensor.c index 0e2edcff63f9..b2c1a598b3a5 100644 --- a/drivers/iio/chemical/atlas-sensor.c +++ b/drivers/iio/chemical/atlas-sensor.c @@ -413,7 +413,11 @@ static int atlas_buffer_postenable(struct iio_dev *indio_dev) if (ret) return ret; - return atlas_set_interrupt(data, true); + ret = atlas_set_interrupt(data, true); + if (ret) + pm_runtime_put_autosuspend(&data->client->dev); + + return ret; } static int atlas_buffer_predisable(struct iio_dev *indio_dev) |
