CVE-2026-46297
Description
In the Linux kernel, the following vulnerability has been resolved:
net: libwx: use request_irq for VF misc interrupt
Currently, request_threaded_irq() is used with a primary handler but a NULL threaded handler, while also setting the IRQF_ONESHOT flag. This specific combination triggers a WARNING since the commit aef30c8d569c ("genirq: Warn about using IRQF_ONESHOT without a threaded handler").
WARNING: kernel/irq/manage.c:1502 at __setup_irq+0x4fa/0x760
Fix the issue by switching to request_irq(), which is the appropriate interface or a non-threaded interrupt handler, and removing the unnecessary IRQF_ONESHOT flag.
Affected products
1Patches
67a33345153eenet: libwx: use request_irq for VF misc interrupt
1 file changed · +2 −3
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c+2 −3 modifieddiff --git a/drivers/net/ethernet/wangxun/libwx/wx_vf_common.c b/drivers/net/ethernet/wangxun/libwx/wx_vf_common.c index 29cdbed2e5ecd..94ff8f5f0b4c8 100644 --- a/drivers/net/ethernet/wangxun/libwx/wx_vf_common.c +++ b/drivers/net/ethernet/wangxun/libwx/wx_vf_common.c @@ -99,8 +99,8 @@ int wx_request_msix_irqs_vf(struct wx *wx) } } - err = request_threaded_irq(wx->msix_entry->vector, wx_msix_misc_vf, - NULL, IRQF_ONESHOT, netdev->name, wx); + err = request_irq(wx->msix_entry->vector, wx_msix_misc_vf, + 0, netdev->name, wx); if (err) { wx_err(wx, "request_irq for msix_other failed: %d\n", err); goto free_queue_irqs; -- cgit 1.3-korg
1bca036fe360net: libwx: use request_irq for VF misc interrupt
1 file changed · +2 −3
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c+2 −3 modifieddiff --git a/drivers/net/ethernet/wangxun/libwx/wx_vf_common.c b/drivers/net/ethernet/wangxun/libwx/wx_vf_common.c index ade2bfe563aaa..5478f2fdfce88 100644 --- a/drivers/net/ethernet/wangxun/libwx/wx_vf_common.c +++ b/drivers/net/ethernet/wangxun/libwx/wx_vf_common.c @@ -98,8 +98,8 @@ int wx_request_msix_irqs_vf(struct wx *wx) } } - err = request_threaded_irq(wx->msix_entry->vector, wx_msix_misc_vf, - NULL, IRQF_ONESHOT, netdev->name, wx); + err = request_irq(wx->msix_entry->vector, wx_msix_misc_vf, + 0, netdev->name, wx); if (err) { wx_err(wx, "request_irq for msix_other failed: %d\n", err); goto free_queue_irqs; -- cgit 1.3-korg
a841574c6e57net: libwx: use request_irq for VF misc interrupt
1 file changed · +2 −3
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c+2 −3 modifieddiff --git a/drivers/net/ethernet/wangxun/libwx/wx_vf_common.c b/drivers/net/ethernet/wangxun/libwx/wx_vf_common.c index ade2bfe563aaa..5478f2fdfce88 100644 --- a/drivers/net/ethernet/wangxun/libwx/wx_vf_common.c +++ b/drivers/net/ethernet/wangxun/libwx/wx_vf_common.c @@ -98,8 +98,8 @@ int wx_request_msix_irqs_vf(struct wx *wx) } } - err = request_threaded_irq(wx->msix_entry->vector, wx_msix_misc_vf, - NULL, IRQF_ONESHOT, netdev->name, wx); + err = request_irq(wx->msix_entry->vector, wx_msix_misc_vf, + 0, netdev->name, wx); if (err) { wx_err(wx, "request_irq for msix_other failed: %d\n", err); goto free_queue_irqs; -- cgit 1.3-korg
7a33345153eenet: libwx: use request_irq for VF misc interrupt
1 file changed · +2 −3
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c+2 −3 modifieddiff --git a/drivers/net/ethernet/wangxun/libwx/wx_vf_common.c b/drivers/net/ethernet/wangxun/libwx/wx_vf_common.c index 29cdbed2e5ecd..94ff8f5f0b4c8 100644 --- a/drivers/net/ethernet/wangxun/libwx/wx_vf_common.c +++ b/drivers/net/ethernet/wangxun/libwx/wx_vf_common.c @@ -99,8 +99,8 @@ int wx_request_msix_irqs_vf(struct wx *wx) } } - err = request_threaded_irq(wx->msix_entry->vector, wx_msix_misc_vf, - NULL, IRQF_ONESHOT, netdev->name, wx); + err = request_irq(wx->msix_entry->vector, wx_msix_misc_vf, + 0, netdev->name, wx); if (err) { wx_err(wx, "request_irq for msix_other failed: %d\n", err); goto free_queue_irqs; -- cgit 1.3-korg
1bca036fe360net: libwx: use request_irq for VF misc interrupt
1 file changed · +2 −3
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c+2 −3 modifieddiff --git a/drivers/net/ethernet/wangxun/libwx/wx_vf_common.c b/drivers/net/ethernet/wangxun/libwx/wx_vf_common.c index ade2bfe563aaa..5478f2fdfce88 100644 --- a/drivers/net/ethernet/wangxun/libwx/wx_vf_common.c +++ b/drivers/net/ethernet/wangxun/libwx/wx_vf_common.c @@ -98,8 +98,8 @@ int wx_request_msix_irqs_vf(struct wx *wx) } } - err = request_threaded_irq(wx->msix_entry->vector, wx_msix_misc_vf, - NULL, IRQF_ONESHOT, netdev->name, wx); + err = request_irq(wx->msix_entry->vector, wx_msix_misc_vf, + 0, netdev->name, wx); if (err) { wx_err(wx, "request_irq for msix_other failed: %d\n", err); goto free_queue_irqs; -- cgit 1.3-korg
a841574c6e57net: libwx: use request_irq for VF misc interrupt
1 file changed · +2 −3
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c+2 −3 modifieddiff --git a/drivers/net/ethernet/wangxun/libwx/wx_vf_common.c b/drivers/net/ethernet/wangxun/libwx/wx_vf_common.c index ade2bfe563aaa..5478f2fdfce88 100644 --- a/drivers/net/ethernet/wangxun/libwx/wx_vf_common.c +++ b/drivers/net/ethernet/wangxun/libwx/wx_vf_common.c @@ -98,8 +98,8 @@ int wx_request_msix_irqs_vf(struct wx *wx) } } - err = request_threaded_irq(wx->msix_entry->vector, wx_msix_misc_vf, - NULL, IRQF_ONESHOT, netdev->name, wx); + err = request_irq(wx->msix_entry->vector, wx_msix_misc_vf, + 0, netdev->name, wx); if (err) { wx_err(wx, "request_irq for msix_other failed: %d\n", err); goto free_queue_irqs; -- cgit 1.3-korg
Vulnerability mechanics
Root cause
"The kernel incorrectly uses `request_threaded_irq` with a NULL threaded handler and the `IRQF_ONESHOT` flag, causing a warning."
Attack vector
The vulnerability is triggered when the `wx_request_msix_irqs_vf` function is called within the `net: libwx` subsystem. This function incorrectly uses `request_threaded_irq` with a NULL threaded handler and the `IRQF_ONESHOT` flag. This specific combination leads to a kernel warning, indicating a misconfiguration in interrupt handling. The issue arises from the interaction between the interrupt request function and the `IRQF_ONESHOT` flag, which is intended for threaded handlers.
Affected code
The vulnerability resides in the `wx_request_msix_irqs_vf` function located in `drivers/net/ethernet/wangxun/libwx/wx_vf_common.c`. The problematic code involves the use of `request_threaded_irq` with a NULL threaded handler and the `IRQF_ONESHOT` flag. This specific combination triggers a warning in the kernel's interrupt management code.
What the fix does
The patch resolves the issue by replacing the call to `request_threaded_irq` with `request_irq` in the `wx_request_msix_irqs_vf` function within `drivers/net/ethernet/wangxun/libwx/wx_vf_common.c` [patch_id=5239866]. This change is appropriate because `request_irq` is designed for non-threaded interrupt handlers. Additionally, the unnecessary `IRQF_ONESHOT` flag is removed. This corrects the interrupt registration, preventing the kernel warning that occurred due to the misuse of `request_threaded_irq` with a NULL threaded handler and the `IRQF_ONESHOT` flag.
Generated on Jun 8, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.
References
3News mentions
1- Linux Kernel: 25 Vulnerabilities Disclosed in Single Batch on June 8, 2026Vypr Intelligence · Jun 8, 2026