CVE-2026-31647
Medium · 5.5CVSS
5.5
EPSS
0.1%
Published
Apr 24, 2026
CISA due date
—
Cloudanix analysis
A flaw in a Linux network driver can let a local user or faulty workload crash or destabilize affected systems, so vulnerable kernels should be updated.
- Exploitation
- Local Privilege
- Attacker needs
- Low Privilege
- Complexity
- Low
- Impact
- Denial Of Service
- Component
- OS kernel
- Class
- Denial of service
- Remediation
- Patch
- Effort
- Medium
- Patch risk
- Medium
What it actually does
This flaw is a Linux kernel denial-of-service issue in the idpf network driver’s asynchronous virtual-channel handling, especially relevant to PREEMPT_RT or real-time kernel configurations. The driver incorrectly nests locking contexts by using a completion raw spinlock where a local lock is appropriate, allowing certain asynchronous mailbox or MAC-filter handling paths to trigger an invalid wait context. In affected systems, this can produce kernel lock debugging splats, instability, stalls, or potentially a kernel panic depending on kernel configuration and panic-on-warning behavior. The impact is availability only; there is no known confidentiality or integrity impact.
Why it matters to the business
Systems using affected Linux kernels with the idpf driver may experience network-driver instability or host outages if the vulnerable code path is triggered. The practical business risk is service disruption on workloads that depend on affected network adapters or virtual functions, particularly in latency-sensitive, real-time, virtualized, or infrastructure environments. The vulnerability is not listed in CISA KEV, has very low EPSS activity, no known public exploit maturity, and is not known to be used in ransomware campaigns, so urgency is lower than for remotely exploitable issues; however, availability-sensitive systems should still prioritize kernel maintenance because a local low-privileged user could contribute to a denial-of-service condition.
How an attack unfolds
An attacker first needs local access to an affected Linux system with sufficient ability to exercise the affected idpf network-driver paths. They then cause activity that reaches the idpf asynchronous virtual-channel mailbox handling logic, such as operations involving virtual port or MAC-filter state changes. In vulnerable kernels, the async handler can attempt to acquire a bottom-half spinlock while already in an invalid wait context caused by the completion lock usage. The kernel detects the invalid lock nesting and may log a BUG or lockdep warning; on systems configured to panic on warnings or under unfavorable timing, this can degrade networking, stall kernel workqueues, or crash the host. There is no indication that this vulnerability enables code execution or privilege escalation.
How to fix it
Upgrade to a Linux kernel build that includes the idpf locking fix changing async virtual-channel handling from use of the completion raw spinlock to a local lock in the idpf_vc_xn structure. No exact fixed package versions were provided, so use the latest stable kernel from the operating-system vendor or distribution security channel and confirm that the vendor advisory includes the fix for this issue. For source-based or custom kernels, backport the upstream idpf patch that fixes PREEMPT_RT raw/BH spinlock nesting for async virtual-channel handling. If immediate patching is not possible, reduce exposure by disabling or unloading the idpf driver where it is not required, removing unused affected network devices or virtual functions, restricting local shell access, limiting users who can perform network-interface configuration, and reviewing panic-on-warning settings for availability-sensitive systems.
How to confirm the fix worked
Confirm exposure by checking whether the running kernel includes the vulnerable idpf code and whether the idpf module is loaded or built in. Administrators can review the running kernel version, distribution changelog, and vendor advisory status, and check for the idpf module with tools such as lsmod, modinfo, and kernel package metadata. Validate remediation by booting into the patched kernel, confirming the patched kernel is active, and verifying that idpf-related virtual-channel or MAC-filter operations no longer produce 'BUG: Invalid wait context' messages in dmesg, journalctl, or kernel logs. For custom kernels, verify the source contains the corrected local-lock implementation in the idpf virtual-channel transaction handling path.
Typical attack path
- Obtain local access to a Linux host running an affected kernel with the idpf driver active.
- Confirm that the idpf network device or virtual function is present and the driver is loaded.
- Trigger network-driver management activity that exercises asynchronous virtual-channel handling, such as repeated interface, MAC-filter, or virtual-port related operations.
- Cause the vulnerable lock nesting path in idpf_mac_filter_async_handler or related mailbox handling code to execute.
- Induce kernel lock warnings, driver instability, workqueue stalls, or a host panic depending on runtime and kernel panic settings.
How to detect it
Look for evidence in kernel logs rather than application logs. Useful sources include dmesg output, system journal entries from journald, /var/log/kern.log, /var/log/messages, /var/log/syslog, crash dumps, kdump artifacts, and monitoring alerts for unexpected host reboots or network-driver resets. Search for kernel messages referencing 'BUG: Invalid wait context' together with idpf functions such as idpf_mac_filter_async_handler, idpf_recv_mb_msg, idpf_mbx_task, or idpf mailbox workqueues. Also review audit or shell history only where appropriate for repeated local network-interface manipulation around the same time, such as frequent MAC address, link, or virtual-function configuration changes. There are no known public exploit artifacts, named threat actors, malware filenames, command-and-control indicators, or ransomware indicators associated with this issue, so detection should focus on kernel telemetry and operational symptoms.
- BUG: Invalid wait context
- idpf_mac_filter_async_handler
- idpf_recv_mb_msg
- idpf_mbx_task [idpf]
- Workqueue: idpf-
- _raw_spin_lock_bh
- &vport_config->mac_filter_list_lock
- kworker/
- Invalid wait context
- [idpf]
What your security team should do
- Prioritize patching affected Linux kernels on systems that use idpf network devices, virtual functions, PREEMPT_RT kernels, or real-time workloads.
- Inventory hosts where the idpf driver is loaded or available, especially infrastructure, virtualization, and high-availability systems.
- Apply the latest vendor-supported kernel update and reboot into the fixed kernel; kernel package installation alone is not sufficient until the patched kernel is running.
- If patching must be delayed, restrict local user access and administrative capabilities that can manipulate network interfaces or MAC-filter state.
- Consider disabling or unloading idpf on systems where the hardware or virtual function is not needed.
- Review kernel panic-on-warning and watchdog settings to understand whether lock warnings could translate into full host outages.
- Monitor kernel logs for idpf lockdep, invalid wait context, workqueue, or mailbox-task errors as evidence of attempted triggering or natural fault occurrence.
- Because EPSS is very low, exploit maturity is listed as none, and the issue is not in KEV, treat this as a targeted availability and stability maintenance item rather than an internet-wide emergency.
The record
In the Linux kernel, the following vulnerability has been resolved: idpf: fix PREEMPT_RT raw/bh spinlock nesting for async VC handling Switch from using the completion's raw spinlock to a local lock in the idpf_vc_xn struct. The conversion is safe because complete/_all() are called outside the lock and there is no reason to share the completion lock in the current logic. This avoids invalid wait context reported by the kernel due to the async handler taking BH spinlock: [ 805.726977] ============================= [ 805.726991] [ BUG: Invalid wait context ] [ 805.727006] 7.0.0-rc2-net-devq-031026+ #28 Tainted: G S OE [ 805.727026] ----------------------------- [ 805.727038] kworker/u261:0/572 is trying to lock: [ 805.727051] ff190da6a8dbb6a0 (&vport_config->mac_filter_list_lock){+...}-{3:3}, at: idpf_mac_filter_async_handler+0xe9/0x260 [idpf] [ 805.727099] other info that might help us debug this: [ 805.727111] context-{5:5} [ 805.727119] 3 locks held by kworker/u261:0/572: [ 805.727132] #0: ff190da6db3e6148 ((wq_completion)idpf-0000:83:00.0-mbx){+.+.}-{0:0}, at: process_one_work+0x4b5/0x730 [ 805.727163] #1: ff3c6f0a6131fe50 ((work_completion)(&(&adapter->mbx_task)->work)){+.+.}-{0:0}, at: process_one_work+0x1e5/0x730 [ 805.727191] #2: ff190da765190020 (&x->wait#34){+.+.}-{2:2}, at: idpf_recv_mb_msg+0xc8/0x710 [idpf] [ 805.727218] stack backtrace: ... [ 805.727238] Workqueue: idpf-0000:83:00.0-mbx idpf_mbx_task [idpf] [ 805.727247] Call Trace: [ 805.727249] <TASK> [ 805.727251] dump_stack_lvl+0x77/0xb0 [ 805.727259] __lock_acquire+0xb3b/0x2290 [ 805.727268] ? __irq_work_queue_local+0x59/0x130 [ 805.727275] lock_acquire+0xc6/0x2f0 [ 805.727277] ? idpf_mac_filter_async_handler+0xe9/0x260 [idpf] [ 805.727284] ? _printk+0x5b/0x80 [ 805.727290] _raw_spin_lock_bh+0x38/0x50 [ 805.727298] ? idpf_mac_filter_async_handler+0xe9/0x260 [idpf] [ 805.727303] idpf_mac_filter_async_handler+0xe9/0x260 [idpf] [ 805.727310] idpf_recv_mb_msg+0x1c8/0x710 [idpf] [ 805.727317] process_one_work+0x226/0x730 [ 805.727322] worker_thread+0x19e/0x340 [ 805.727325] ? __pfx_worker_thread+0x10/0x10 [ 805.727328] kthread+0xf4/0x130 [ 805.727333] ? __pfx_kthread+0x10/0x10 [ 805.727336] ret_from_fork+0x32c/0x410 [ 805.727345] ? __pfx_kthread+0x10/0x10 [ 805.727347] ret_from_fork_asm+0x1a/0x30 [ 805.727354] </TASK>
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|