From: Stepan Ionichev <sozdayvek@gmail.com>
To: jic23@kernel.org
Cc: dlechner@baylibre.com, nuno.sa@analog.com, andy@kernel.org,
linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: [PATCH 2/4] iio: light: tsl2583: use devm_pm_runtime_enable() to fix probe error path
Date: Fri, 29 May 2026 15:44:54 +0500 [thread overview]
Message-ID: <a812124efcc1a5ab973826154b5b9a22cdedd760.1780050609.git.sozdayvek@gmail.com> (raw)
In-Reply-To: <cover.1780050609.git.sozdayvek@gmail.com>
tsl2583_probe() calls pm_runtime_enable() and then invokes the non-devm iio_device_register(). If iio_device_register() fails, the function returns without calling pm_runtime_disable(), so the runtime PM enable_count is leaked. On rebind the kernel emits an "Unbalanced pm_runtime_enable" warning.
Switch to devm_pm_runtime_enable() so that the runtime PM disable is tied to device lifetime and is also performed on probe error. The pm_runtime_set_autosuspend_delay() and pm_runtime_use_autosuspend() calls do not need to be undone explicitly because both autosuspend bits are torn down together with the runtime PM state at device release.
With probe now using devres, drop the matching pm_runtime_disable() and pm_runtime_set_suspended() calls from tsl2583_remove(). The remaining tsl2583_set_power_state(TSL2583_CNTL_PWR_OFF) call only issues an i2c write and does not depend on runtime PM being disabled, so its behaviour is unchanged.
Signed-off-by: Stepan Ionichev <sozdayvek@gmail.com>
---
drivers/iio/light/tsl2583.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/iio/light/tsl2583.c b/drivers/iio/light/tsl2583.c
index 8801a491de77..62542d904b3b 100644
--- a/drivers/iio/light/tsl2583.c
+++ b/drivers/iio/light/tsl2583.c
@@ -846,7 +846,9 @@ static int tsl2583_probe(struct i2c_client *clientp)
indio_dev->modes = INDIO_DIRECT_MODE;
indio_dev->name = chip->client->name;
- pm_runtime_enable(&clientp->dev);
+ ret = devm_pm_runtime_enable(&clientp->dev);
+ if (ret)
+ return ret;
pm_runtime_set_autosuspend_delay(&clientp->dev,
TSL2583_POWER_OFF_DELAY_MS);
pm_runtime_use_autosuspend(&clientp->dev);
@@ -873,8 +875,6 @@ static void tsl2583_remove(struct i2c_client *client)
iio_device_unregister(indio_dev);
- pm_runtime_disable(&client->dev);
- pm_runtime_set_suspended(&client->dev);
tsl2583_set_power_state(chip, TSL2583_CNTL_PWR_OFF);
}
--
2.43.0
next prev parent reply other threads:[~2026-05-29 10:45 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-29 10:44 [PATCH 0/4] iio: fix PM-enable leak on probe error path across 4 drivers Stepan Ionichev
2026-05-29 10:44 ` [PATCH 1/4] iio: light: isl29028: use devm_pm_runtime_enable() to fix probe error path Stepan Ionichev
2026-05-29 10:44 ` Stepan Ionichev [this message]
2026-05-29 10:44 ` [PATCH 3/4] iio: temperature: mlx90614: " Stepan Ionichev
2026-05-29 10:44 ` [PATCH 4/4] iio: accel: bmi088-accel: " Stepan Ionichev
2026-05-29 11:11 ` [PATCH 0/4] iio: fix PM-enable leak on probe error path across 4 drivers Joshua Crofts
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=a812124efcc1a5ab973826154b5b9a22cdedd760.1780050609.git.sozdayvek@gmail.com \
--to=sozdayvek@gmail.com \
--cc=andy@kernel.org \
--cc=dlechner@baylibre.com \
--cc=jic23@kernel.org \
--cc=linux-iio@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=nuno.sa@analog.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®