From: Stepan Ionichev <sozdayvek@gmail.com>
To: mazziesaccount@gmail.com
Cc: jic23@kernel.org, dlechner@baylibre.com, nuno.sa@analog.com,
andy@kernel.org, linux-iio@vger.kernel.org,
linux-kernel@vger.kernel.org, stable@vger.kernel.org,
sozdayvek@gmail.com
Subject: [PATCH] iio: pressure: rohm-bm1390: notify trigger on all error paths
Date: Sun, 17 May 2026 21:08:01 +0500 [thread overview]
Message-ID: <20260517160801.269-1-sozdayvek@gmail.com> (raw)
bm1390_trigger_handler() has three error returns:
if (ret || !status)
return IRQ_NONE; /* status read failed */
...
if (ret) {
dev_warn(...);
return IRQ_NONE; /* pressure read failed */
}
...
if (ret) {
dev_warn(...);
return IRQ_HANDLED; /* temp read failed */
}
None of them call iio_trigger_notify_done(). The success path at the
end does, so on a single transient regmap or pressure-read error the
trigger never sees its use_count decremented, and the
!atomic_read(&trig->use_count) guard in iio_trigger_poll_chained()
drops every subsequent dispatch for that trigger. The buffered-data
flow stays wedged until the trigger is detached.
The IRQ_HANDLED return on the temperature path additionally leaves
the temp branch's last partial state in &data->buf.temp without
pushing the sample, which is the existing intended behaviour; only
the missing notify_done() needs fixing.
Funnel all returns through a single 'done' label that calls
iio_trigger_notify_done() before returning the saved irqreturn_t.
Fixes: 81ca5979b6ed ("iio: pressure: Support ROHM BU1390")
Cc: stable@vger.kernel.org
Signed-off-by: Stepan Ionichev <sozdayvek@gmail.com>
---
drivers/iio/pressure/rohm-bm1390.c | 15 ++++++++++-----
1 file changed, 10 insertions(+), 5 deletions(-)
diff --git a/drivers/iio/pressure/rohm-bm1390.c b/drivers/iio/pressure/rohm-bm1390.c
index 08146ca0f..c18352399 100644
--- a/drivers/iio/pressure/rohm-bm1390.c
+++ b/drivers/iio/pressure/rohm-bm1390.c
@@ -626,12 +626,15 @@ static irqreturn_t bm1390_trigger_handler(int irq, void *p)
struct iio_poll_func *pf = p;
struct iio_dev *idev = pf->indio_dev;
struct bm1390_data *data = iio_priv(idev);
+ irqreturn_t result = IRQ_HANDLED;
int ret, status;
/* DRDY is acked by reading status reg */
ret = regmap_read(data->regmap, BM1390_REG_STATUS, &status);
- if (ret || !status)
- return IRQ_NONE;
+ if (ret || !status) {
+ result = IRQ_NONE;
+ goto done;
+ }
dev_dbg(data->dev, "DRDY trig status 0x%x\n", status);
@@ -639,7 +642,8 @@ static irqreturn_t bm1390_trigger_handler(int irq, void *p)
ret = bm1390_pressure_read(data, &data->buf.pressure);
if (ret) {
dev_warn(data->dev, "sample read failed %d\n", ret);
- return IRQ_NONE;
+ result = IRQ_NONE;
+ goto done;
}
}
@@ -648,15 +652,16 @@ static irqreturn_t bm1390_trigger_handler(int irq, void *p)
&data->buf.temp, sizeof(data->buf.temp));
if (ret) {
dev_warn(data->dev, "temp read failed %d\n", ret);
- return IRQ_HANDLED;
+ goto done;
}
}
iio_push_to_buffers_with_ts(idev, &data->buf, sizeof(data->buf),
data->timestamp);
+done:
iio_trigger_notify_done(idev->trig);
- return IRQ_HANDLED;
+ return result;
}
/* Get timestamps and wake the thread if we need to read data */
--
2.43.0
next reply other threads:[~2026-05-17 16:08 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-17 16:08 Stepan Ionichev [this message]
2026-05-17 17:12 ` [PATCH] iio: pressure: rohm-bm1390: notify trigger on all error paths David Lechner
2026-05-17 17:18 ` Stepan Ionichev
2026-05-18 5:21 ` Matti Vaittinen
2026-05-18 6:59 ` Andy Shevchenko
2026-05-18 7:35 ` Matti Vaittinen
2026-05-18 14:55 ` Jonathan Cameron
2026-05-18 18:31 ` Andy Shevchenko
2026-05-20 10:39 ` Jonathan Cameron
2026-05-18 14:50 ` Jonathan Cameron
2026-05-18 6:54 ` Andy Shevchenko
2026-05-18 9:42 ` [PATCH v2] " Stepan Ionichev
2026-05-18 10:42 ` Andy Shevchenko
2026-05-18 13:06 ` Matti Vaittinen
2026-05-18 15:15 ` Jonathan Cameron
2026-05-19 5:48 ` Matti Vaittinen
2026-05-20 11:08 ` Jonathan Cameron
2026-05-22 12:38 ` Matti Vaittinen
2026-05-29 8:21 ` Matti Vaittinen
2026-06-01 18:36 ` Andy Shevchenko
2026-06-04 6:10 ` Matti Vaittinen
2026-06-03 17:26 ` Jonathan Cameron
2026-06-04 6:05 ` Matti Vaittinen
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=20260517160801.269-1-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=mazziesaccount@gmail.com \
--cc=nuno.sa@analog.com \
--cc=stable@vger.kernel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox