CVE-2026-31647: idpf: fix PREEMPT_RT raw/bh spinlock nesting for async VC handling

Published Apr 24, 2026
·
Updated

In the Linux kernel, the following vulnerability has been resolved:

idpf: fix PREEMPTRT raw/bh spinlock nesting for async VC handling

Switch from using the completion's raw spinlock to a local lock in the idpfvcxn 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 (&vportconfig->macfilterlistlock){+...}-{3:3}, at: idpfmacfilterasynchandler+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 ((wqcompletion)idpf-0000:83:00.0-mbx){+.+.}-{0:0}, at: processonework+0x4b5/0x730 [ 805.727163] #1: ff3c6f0a6131fe50 ((workcompletion)(&(&adapter->mbxtask)->work)){+.+.}-{0:0}, at: processonework+0x1e5/0x730 [ 805.727191] #2: ff190da765190020 (&x->wait#34){+.+.}-{2:2}, at: idpfrecvmbmsg+0xc8/0x710 [idpf] [ 805.727218] stack backtrace: ... [ 805.727238] Workqueue: idpf-0000:83:00.0-mbx idpfmbxtask [idpf] [ 805.727247] Call Trace: [ 805.727249] <TASK> [ 805.727251] dumpstacklvl+0x77/0xb0 [ 805.727259] lockacquire+0xb3b/0x2290 [ 805.727268] ? irqworkqueuelocal+0x59/0x130 [ 805.727275] lockacquire+0xc6/0x2f0 [ 805.727277] ? idpfmacfilterasynchandler+0xe9/0x260 [idpf] [ 805.727284] ? printk+0x5b/0x80 [ 805.727290] rawspinlockbh+0x38/0x50 [ 805.727298] ? idpfmacfilterasynchandler+0xe9/0x260 [idpf] [ 805.727303] idpfmacfilterasynchandler+0xe9/0x260 [idpf] [ 805.727310] idpfrecvmbmsg+0x1c8/0x710 [idpf] [ 805.727317] processonework+0x226/0x730 [ 805.727322] workerthread+0x19e/0x340 [ 805.727325] ? pfxworkerthread+0x10/0x10 [ 805.727328] kthread+0xf4/0x130 [ 805.727333] ? pfxkthread+0x10/0x10 [ 805.727336] retfromfork+0x32c/0x410 [ 805.727345] ? pfxkthread+0x10/0x10 [ 805.727347] retfromforkasm+0x1a/0x30 [ 805.727354] </TASK>

Affected Software

134 affected componentsFixes available
Linux Linux kernel (idpf)
Linux Linux kernel>=6.9.1<6.12.83
Linux Linux kernel>=6.13<6.18.23
Linux Linux kernel>=6.19<6.19.13
Linux Linux kernel=6.9
Linux Linux kernel=7.0-rc1
Linux Linux kernel=7.0-rc2
Linux Linux kernel=7.0-rc3
Linux Linux kernel=7.0-rc4
Linux Linux kernel=7.0-rc5
Linux Linux kernel=7.0-rc6
Linux Linux kernel=7.0-rc7
linux/kernel>=6.9.0<6.12.83
6.12.83
linux/kernel>=6.13.0<6.18.23
6.18.23
linux/kernel>=6.19.0<6.19.13
6.19.13
ubuntu/linux-hwe-edge*
ubuntu/linux-aws-5.0*
ubuntu/linux-aws-5.3*
ubuntu/linux-azure*
ubuntu/linux-azure-5.3*
ubuntu/linux-azure-edge*
ubuntu/linux-gcp*
ubuntu/linux-gcp-5.3*
ubuntu/linux-gke-4.15*
ubuntu/linux-gke-5.4*
ubuntu/linux-gkeop-5.4*
ubuntu/linux-hwe*
ubuntu/linux-hwe-edge*
ubuntu/linux-oem*
ubuntu/linux-oracle-5.0*
ubuntu/linux-oracle-5.3*
ubuntu/linux-aws-5.11*
ubuntu/linux-aws-5.13*
ubuntu/linux-aws-5.8*
ubuntu/linux-azure-5.11*
ubuntu/linux-azure-5.13*
ubuntu/linux-azure-5.8*
ubuntu/linux-azure-fde*
ubuntu/linux-gcp-5.11*
ubuntu/linux-gcp-5.13*
ubuntu/linux-gcp-5.8*
ubuntu/linux-gke*
ubuntu/linux-gke-5.15*
ubuntu/linux-gkeop*
ubuntu/linux-gkeop-5.15*
ubuntu/linux-hwe-5.11*
ubuntu/linux-hwe-5.13*
ubuntu/linux-hwe-5.8*
ubuntu/linux-intel-5.13*
ubuntu/linux-oem-5.10*
ubuntu/linux-oem-5.13*
ubuntu/linux-oem-5.6*
ubuntu/linux-oracle-5.11*
ubuntu/linux-oracle-5.13*
ubuntu/linux-oracle-5.8*
ubuntu/linux-raspi2*
ubuntu/linux-riscv*
ubuntu/linux-riscv-5.11*
ubuntu/linux-riscv-5.8*
ubuntu/linux-allwinner-5.19*
ubuntu/linux-aws-5.19*
ubuntu/linux-aws-6.2*
ubuntu/linux-aws-6.5*
ubuntu/linux-azure-5.19*
ubuntu/linux-azure-6.2*
ubuntu/linux-azure-6.5*
ubuntu/linux-azure-fde-5.19*
ubuntu/linux-azure-fde-6.2*
ubuntu/linux-gcp-5.19*
ubuntu/linux-gcp-6.2*
ubuntu/linux-gcp-6.5*
ubuntu/linux-hwe-5.19*
ubuntu/linux-hwe-6.2*
ubuntu/linux-hwe-6.5*
ubuntu/linux-intel-iot-realtime*
ubuntu/linux-lowlatency-hwe-5.19*
ubuntu/linux-lowlatency-hwe-6.2*
ubuntu/linux-lowlatency-hwe-6.5*
ubuntu/linux-nvidia-6.2*
ubuntu/linux-nvidia-6.5*
ubuntu/linux-oem-5.17*
ubuntu/linux-oem-6.0*
ubuntu/linux-oem-6.1*
ubuntu/linux-oem-6.5*
ubuntu/linux-oracle-6.5*
ubuntu/linux-realtime*
ubuntu/linux-riscv*
ubuntu/linux-riscv-5.19*
ubuntu/linux-riscv-6.5*
ubuntu/linux-starfive-5.19*
ubuntu/linux-starfive-6.2*
ubuntu/linux-starfive-6.5*
ubuntu/linux-aws-6.14*
ubuntu/linux-aws-6.17*
ubuntu/linux-azure-6.11*
ubuntu/linux-azure-6.14*
ubuntu/linux-azure-6.17*
ubuntu/linux-azure-fde-6.14*
ubuntu/linux-azure-nvidia-6.14*
ubuntu/linux-gcp-6.11*
ubuntu/linux-gcp-6.14*
ubuntu/linux-hwe-6.11*
ubuntu/linux-hwe-6.14*
ubuntu/linux-hwe-6.17*
ubuntu/linux-lowlatency-hwe-6.11*
ubuntu/linux-nvidia-6.11*
ubuntu/linux-nvidia-6.17*
ubuntu/linux-oem-6.11*
ubuntu/linux-oem-6.14*
ubuntu/linux-oem-6.17*
ubuntu/linux-oem-6.8*
ubuntu/linux-oracle-6.14*
ubuntu/linux-oracle-6.17*
ubuntu/linux-raspi-realtime*
ubuntu/linux-realtime*
ubuntu/linux-riscv*
ubuntu/linux-riscv-6.14*
ubuntu/linux-riscv-6.17*
ubuntu/linux-realtime-6.14*
ubuntu/linux-realtime-6.17*
ubuntu/linux*
ubuntu/linux-aws*
ubuntu/linux-azure*
ubuntu/linux-azure-fde*
ubuntu/linux-gcp*
ubuntu/linux-oracle*
ubuntu/linux-raspi*
ubuntu/linux-realtime*
ubuntu/linux-riscv*
ubuntu/linux-nvidia<7.0.0-1006.6
7.0.0-1006.6
ubuntu/linux-vmware*
debian/linux<6.12.85-1
6.12.85-1
debian/linux<6.19.13-1
6.19.13-1
debian/linux
6.1.176-16.1.190-16.12.107-16.12.116-17.2.15-17.3.4-1

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade linux/Kernel to a version that resolves this vulnerability.

    Fixed in 6.12.83
  2. Upgrade

    Upgrade linux/Kernel to a version that resolves this vulnerability.

    Fixed in 6.18.23
  3. Upgrade

    Upgrade linux/Kernel to a version that resolves this vulnerability.

    Fixed in 6.19.13
  4. Upgrade

    Upgrade ubuntu/linux-nvidia to a version that resolves this vulnerability.

    Fixed in 7.0.0-1006.6
  5. Upgrade

    Upgrade debian/linux to a version that resolves this vulnerability.

    Fixed in 6.12.85-1
  6. Upgrade

    Upgrade debian/linux to a version that resolves this vulnerability.

    Fixed in 6.19.13-1
  7. Upgrade

    Upgrade debian/linux to a version that resolves this vulnerability.

    Fixed in 6.1.176-1Fixed in 6.1.190-1Fixed in 6.12.107-1Fixed in 6.12.116-1Fixed in 7.2.15-1Fixed in 7.3.4-1
  8. Compensating control

    In the Linux kernel idpf driver, switch async VC handling from the completion's raw spinlock to a local lock in the idpf_vc_xn struct; keep complete() and complete_all() calls outside the lock.

Event History

Apr 24, 2026
CVE Published
via MITRE·02:45 PM
Data Sourced
via MITRE·02:45 PM
Description
Data Sourced
via OSV·02:45 PM
DescriptionAffected Software
Data Sourced
via NVD·03:16 PM
RemedyDescriptionSeverityAffected Software
Nov 11, 2026
Data Sourced
via OSV·09:39 AM
Severity

Parent advisories

This vulnerability appears in the following advisories.

Frequently Asked Questions

1

What access would an attacker need to exploit this issue?

The CVSS vector indicates local access and low privileges are required. No user interaction is required.

2

What is the expected security impact?

The reported impact is limited to availability: exploitation may cause a denial of service. The provided vector reports no confidentiality or integrity impact.

3

Which systems are most relevant to investigate?

Systems using the Linux kernel idpf driver with PREEMPT_RT and asynchronous virtual-channel handling are implicated. The supplied diagnostic shows the failure occurring in an idpf worker while handling MAC filter configuration.

4

How can I identify a possible occurrence?

Check kernel logs for an "BUG: Invalid wait context" report involving the idpf module, particularly idpf_mac_filter_async_handler and mac_filter_list_lock. The example report identifies a kworker attempting to take that lock in an invalid context.

5

Are fixes available?

The issue is described as resolved, and three stable kernel commit references are provided. The supplied data does not identify the kernel versions containing those fixes.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203