]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
net: ngbe: fix NULL pointer dereference in non-MSI-X interrupt enabling
authorJiawen Wu <jiawenwu@trustnetic.com>
Fri, 7 Aug 2026 06:22:14 +0000 (14:22 +0800)
committerPaolo Abeni <pabeni@redhat.com>
Tue, 11 Aug 2026 11:25:03 +0000 (13:25 +0200)
In non-MSI-X mode (such as legacy INTx or single MSI), wx->msix_entry is
not allocated or initialized. Calling NGBE_INTR_MISC(wx) dereferences
wx->msix_entry->entry, leading to a NULL pointer dereference crash.

This issue was introduced by fixing the IRQ vector when the number of
VFs is 7. Fix the issue by explicitly checking `pdev->msix_enabled` to
determine the correct vector index.

Additionally, as a side fix, set the interrupt mask to BIT(0) for the
non-MSI-X fallback. In MSI/INTx mode, the MISC and queue interrupts
share vector 0, and the WX_PX_MISC_IVAR register is only valid in the
MSI-X case. Thus, BIT(0) is the correct mask for the miscellaneous cause
when MSI-X is disabled.

Fixes: 4174c0c331a2 ("net: ngbe: specify IRQ vector when the number of VFs is 7")
Signed-off-by: Jiawen Wu <jiawenwu@trustnetic.com>
Reviewed-by: Breno Leitao <leitao@debian.org>
Reviewed-by: Simon Horman <horms@kernel.org>
Link: https://patch.msgid.link/B2693E9A8BFAD110+20260807062214.410838-1-jiawenwu@trustnetic.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c

index a16221995909f9fa1fadbc1dc41989a4fccfb36d..cb653861aad8d0ec243aabf98e22335b83a758ed 100644 (file)
@@ -180,8 +180,10 @@ static void ngbe_irq_enable(struct wx *wx, bool queues)
        /* mask interrupt */
        if (queues)
                wx_intr_enable(wx, NGBE_INTR_ALL);
-       else
+       else if (wx->pdev->msix_enabled)
                wx_intr_enable(wx, NGBE_INTR_MISC(wx));
+       else
+               wx_intr_enable(wx, BIT(0));
 }
 
 /**