Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

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 <nichen@iscas.ac.cn>
Link: https://lore.kernel.org/r/20260119055715.889001-1-nichen@iscas.ac.cn
Signed-off-by: Christophe Leroy (CS GROUP) <chleroy@kernel.org>

authored by

Chen Ni and committed by
Christophe Leroy (CS GROUP)
65d57276 0d069bb3

+1 -2
+1 -2
drivers/soc/fsl/qe/qe_ports_ic.c
··· 114 114 if (!data->host) 115 115 return -ENODEV; 116 116 117 - irq_set_handler_data(irq, data); 118 - irq_set_chained_handler(irq, qepic_cascade); 117 + irq_set_chained_handler_and_data(irq, qepic_cascade, data); 119 118 120 119 return 0; 121 120 }