Commit a10f910c authored by Loic Poulain's avatar Loic Poulain Committed by Dmitry Baryshkov
Browse files

drm: bridge: anx7625: Fix NULL pointer dereference with early IRQ



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: default avatarLoic Poulain <loic.poulain@oss.qualcomm.com>
Fixes: 8bdfc5da ("drm/bridge: anx7625: Add anx7625 MIPI DSI/DPI to DP")
Reviewed-by: default avatarDmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Link: https://lore.kernel.org/r/20250709085438.56188-1-loic.poulain@oss.qualcomm.com


Signed-off-by: default avatarDmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
parent 07c24945
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -2677,7 +2677,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");
@@ -2746,8 +2746,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);