[PATCH v6 05/13] drm/bridge: it6505: bail out of the IRQ handler when status reads fail

From: Daniel Golle

Date: Fri Jul 24 2026 - 23:01:08 EST


When reading the interrupt status registers fails, the negative error
codes end up in int_status[], where it6505_test_bit() sees almost all
bits set: every interrupt sub-handler runs on garbage and the error
values are even written back to the status registers. Return IRQ_NONE
instead.

Fixes: b5c84a9edcd4 ("drm/bridge: add it6505 driver")
Signed-off-by: Daniel Golle <daniel@xxxxxxxxxxxxxx>
---
v6: no changes

v5: new patch

drivers/gpu/drm/bridge/ite-it6505.c | 5 +++++
1 file changed, 5 insertions(+)

diff --git a/drivers/gpu/drm/bridge/ite-it6505.c b/drivers/gpu/drm/bridge/ite-it6505.c
index fb6030a2c18c..3806b0b96637 100644
--- a/drivers/gpu/drm/bridge/ite-it6505.c
+++ b/drivers/gpu/drm/bridge/ite-it6505.c
@@ -2714,6 +2714,11 @@ static irqreturn_t it6505_int_threaded_handler(int unused, void *data)
int_status[1] = it6505_read(it6505, INT_STATUS_02);
int_status[2] = it6505_read(it6505, INT_STATUS_03);

+ if (int_status[0] < 0 || int_status[1] < 0 || int_status[2] < 0) {
+ pm_runtime_put_sync(dev);
+ return IRQ_NONE;
+ }
+
it6505_write(it6505, INT_STATUS_01, int_status[0]);
it6505_write(it6505, INT_STATUS_02, int_status[1]);
it6505_write(it6505, INT_STATUS_03, int_status[2]);
--
2.55.0