From: Chen Ni Date: Mon, 19 Jan 2026 05:57:15 +0000 (+0800) Subject: soc: fsl: qe: qe_ports_ic: Consolidate chained IRQ handler install/remove X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=65d5727645acbc019fd17d47f47b743eb116ff14;p=thirdparty%2Fkernel%2Flinux.git soc: fsl: qe: qe_ports_ic: Consolidate chained IRQ handler install/remove The driver currently sets the handler data and the chained handler in two separate steps. This creates a theoretical race window where an interrupt could fire after the handler is set but before the data is assigned, leading to a NULL pointer dereference. Replace the two calls with irq_set_chained_handler_and_data() to set both the handler and its data atomically under the irq_desc->lock. Signed-off-by: Chen Ni Link: https://lore.kernel.org/r/20260119055715.889001-1-nichen@iscas.ac.cn Signed-off-by: Christophe Leroy (CS GROUP) --- diff --git a/drivers/soc/fsl/qe/qe_ports_ic.c b/drivers/soc/fsl/qe/qe_ports_ic.c index 61dd09fec6f6e..8e2107e2cde5b 100644 --- a/drivers/soc/fsl/qe/qe_ports_ic.c +++ b/drivers/soc/fsl/qe/qe_ports_ic.c @@ -114,8 +114,7 @@ static int qepic_probe(struct platform_device *pdev) if (!data->host) return -ENODEV; - irq_set_handler_data(irq, data); - irq_set_chained_handler(irq, qepic_cascade); + irq_set_chained_handler_and_data(irq, qepic_cascade, data); return 0; }