If the interrupt occurs before resource initialization is complete, the
interrupt handler/worker may access uninitialized data such as the I2C
tcpc_client device, potentially leading to NULL pointer dereference.

Signed-off-by: Loic Poulain <loic.poul...@oss.qualcomm.com>
---
 drivers/gpu/drm/bridge/analogix/anx7625.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/bridge/analogix/anx7625.c 
b/drivers/gpu/drm/bridge/analogix/anx7625.c
index 5a81d1bfc815..0d8f4cc05387 100644
--- a/drivers/gpu/drm/bridge/analogix/anx7625.c
+++ b/drivers/gpu/drm/bridge/analogix/anx7625.c
@@ -2678,7 +2678,7 @@ static int anx7625_i2c_probe(struct i2c_client *client)
                ret = devm_request_threaded_irq(dev, platform->pdata.intp_irq,
                                                NULL, anx7625_intr_hpd_isr,
                                                IRQF_TRIGGER_FALLING |
-                                               IRQF_ONESHOT,
+                                               IRQF_ONESHOT | IRQF_NO_AUTOEN,
                                                "anx7625-intp", platform);
                if (ret) {
                        DRM_DEV_ERROR(dev, "fail to request irq\n");
@@ -2747,8 +2747,10 @@ static int anx7625_i2c_probe(struct i2c_client *client)
        }
 
        /* Add work function */
-       if (platform->pdata.intp_irq)
+       if (platform->pdata.intp_irq) {
+               enable_irq(platform->pdata.intp_irq);
                queue_work(platform->workqueue, &platform->work);
+       }
 
        if (platform->pdata.audio_en)
                anx7625_register_audio(dev, platform);
-- 
2.34.1

Reply via email to