genirq/msi: Prevent NULL pointer dereference in msi_domain_debug_show()
authorAndrew Jones <ajones@ventanamicro.com>
Wed, 30 Apr 2025 12:48:37 +0000 (14:48 +0200)
committerThomas Gleixner <tglx@linutronix.de>
Wed, 30 Apr 2025 21:25:10 +0000 (23:25 +0200)
irq_domain_debug_show_one() calls msi_domain_debug_show() with a non-NULL
domain pointer and a NULL irq_data pointer. irq_debug_show_data() calls it
with a NULL domain pointer.

The domain pointer is not used, but the irq_data pointer is required to be
non-NULL and lacks a NULL pointer check.

Add the missing NULL pointer check to ensure there is a non-NULL irq_data
pointer in msi_domain_debug_show() before dereferencing it.

[ tglx: Massaged change log ]

Fixes: 01499ae673dc ("genirq/msi: Expose MSI message data in debugfs")
Signed-off-by: Andrew Jones <ajones@ventanamicro.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Link: https://lore.kernel.org/all/20250430124836.49964-2-ajones@ventanamicro.com
kernel/irq/msi.c

index 5c8d43cdb0a318d7daf887ac339979cbec135bc3..c05ba7ca00faad05d0076ed3ca300fc5d1159a3d 100644 (file)
@@ -761,7 +761,7 @@ static int msi_domain_translate(struct irq_domain *domain, struct irq_fwspec *fw
 static void msi_domain_debug_show(struct seq_file *m, struct irq_domain *d,
                                  struct irq_data *irqd, int ind)
 {
-       struct msi_desc *desc = irq_data_get_msi_desc(irqd);
+       struct msi_desc *desc = irqd ? irq_data_get_msi_desc(irqd) : NULL;
 
        if (!desc)
                return;