[PATCH] genirq/core: Free per-CPU enabled mask when releasing an IRQ descriptor

From: Avi Weiss

Date: Sun Nov 01 2026 - 00:54:28 EST


irq_set_percpu_devid() allocates desc->percpu_enabled separately from
the descriptor's affinity masks. irq_kobj_release() frees the other
descriptor allocations but leaves this mask allocated when a sparse
IRQ descriptor is destroyed.

Free desc->percpu_enabled during descriptor release.

Fixes: 31d9d9b6d830 ("genirq: Add support for per-cpu dev_id interrupts")
Signed-off-by: Avi Weiss <thnkslprpt@xxxxxxxxx>
---

Validation: Source-extracted ASan/LSan harness.
Baseline leak reproduced; patched test and controls passed.
Kernel object compilation not performed (no verified .config).

kernel/irq/irqdesc.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/kernel/irq/irqdesc.c b/kernel/irq/irqdesc.c
index 7cbcc3fb9e6d..ee8b4646372e 100644
--- a/kernel/irq/irqdesc.c
+++ b/kernel/irq/irqdesc.c
@@ -461,6 +461,7 @@ static void irq_kobj_release(struct kobject *kobj)

free_masks(desc);
free_percpu(desc->kstat_irqs);
+ kfree(desc->percpu_enabled);
kfree(desc);
}

--
2.43.0