# CVE-2023-54288: linux: In the Linux kernel, the following vulnerability has been resolved:  wifi: mac80211: fortify the spinlock against dea...

CVE-2023-54288 is fixed in linux on 1 platform, first by DEBIAN-CVE-2023-54288, released December 30, 2025. It is not reported as exploited. Patch Radar priority: Routine.

- Web page: https://patchblox.com/security/cve/CVE-2023-54288
- Priority: Routine
- CVSS: n/a
- EPSS: 0.0020
- CISA KEV: not listed
- Exploited (vendor report): no
- Publicly disclosed: no
- Published: Dec 30, 2025

## Description

In the Linux kernel, the following vulnerability has been resolved:  wifi: mac80211: fortify the spinlock against deadlock by interrupt  In the function ieee80211_tx_dequeue() there is a particular locking sequence:  begin: 	spin_lock(&local->queue_stop_reason_lock); 	q_stopped = local->queue_stop_reasons[q]; 	spin_unlock(&local->queue_stop_reason_lock);  However small the chance (increased by ftracetest), an asynchronous interrupt can occur in between of spin_lock() and spin_unlock(), and the interrupt routine will attempt to lock the same &local->queue_stop_reason_lock again.  This will cause a costly reset of the CPU and the wifi device or an altogether hang in the single CPU and single core scenario.  The only remaining spin_lock(&local->queue_stop_reason_lock) that did not disable interrupts was patched, which should prevent any deadlocks on the same CPU/core and the same wifi device.  This is the probable trace of the deadlock:  kernel: ================================ kernel: WARNING: inconsistent lock state kernel: 6.3.0-rc6-mt-20230401-00001-gf86822a1170f #4 Tainted: G        W kernel: -------------------------------- kernel: inconsistent {IN-SOFTIRQ-W} -> {SOFTIRQ-ON-W} usage. kernel: kworker/5:0/25656 [HC0[0]:SC0[0]:HE1:SE1] takes: kernel: ffff9d6190779478 (&local->queue_stop_reason_lock){+.?.}-{2:2}, at: return_to_handler+0x0/0x40 kernel: {IN-SOFTIRQ-W} state was registered at: kernel:   lock_acquire+0xc7/0x2d0 kernel:   _raw_spin_lock+0x36/0x50 kernel:   ieee80211_tx_dequeue+0xb4/0x1330 [mac80211] kernel:   iwl_mvm_mac_itxq_xmit+0xae/0x210 [iwlmvm] kernel:   iwl_mvm_mac_wake_tx_queue+0x2d/0xd0 [iwlmvm] kernel:   ieee80211_queue_skb+0x450/0x730 [mac80211] kernel:   __ieee80211_xmit_fast.constprop.66+0x834/0xa50 [mac80211] kernel:   __ieee80211_subif_start_xmit+0x217/0x530 [mac80211] kernel:   ieee80211_subif_start_xmit+0x60/0x580 [mac80211] kernel:   dev_hard_start_xmit+0xb5/0x260 kernel:   __dev_queue_xmit+0xdbe/0x1200 kernel:   neigh_resolve_output+0x166/0x260 kernel:   ip_finish_output2+0x216/0xb80 kernel:   __ip_finish_output+0x2a4/0x4d0 kernel:   ip_finish_output+0x2d/0xd0 kernel:   ip_output+0x82/0x2b0 kernel:   ip_local_out+0xec/0x110 kernel:   igmpv3_sendpack+0x5c/0x90 kernel:   igmp_ifc_timer_expire+0x26e/0x4e0 kernel:   call_timer_fn+0xa5/0x230 kernel:   run_timer_softirq+0x27f/0x550 kernel:   __do_softirq+0xb4/0x3a4 kernel:   irq_exit_rcu+0x9b/0xc0 kernel:   sysvec_apic_timer_interrupt+0x80/0xa0 kernel:   asm_sysvec_apic_timer_interrupt+0x1f/0x30 kernel:   _raw_spin_unlock_irqrestore+0x3f/0x70 kernel:   free_to_partial_list+0x3d6/0x590 kernel:   __slab_free+0x1b7/0x310 kernel:   kmem_cache_free+0x52d/0x550 kernel:   putname+0x5d/0x70 kernel:   do_sys_openat2+0x1d7/0x310 kernel:   do_sys_open+0x51/0x80 kernel:   __x64_sys_openat+0x24/0x30 kernel:   do_syscall_64+0x5c/0x90 kernel:   entry_SYSCALL_64_after_hwframe+0x72/0xdc kernel: irq event stamp: 5120729 kernel: hardirqs last  enabled at (5120729): [<ffffffff9d149936>] trace_graph_return+0xd6/0x120 kernel: hardirqs last disabled at (5120728): [<ffffffff9d149950>] trace_graph_return+0xf0/0x120 kernel: softirqs last  enabled at (5069900): [<ffffffff9cf65b60>] return_to_handler+0x0/0x40 kernel: softirqs last disabled at (5067555): [<ffffffff9cf65b60>] return_to_handler+0x0/0x40 kernel:         other info that might help us debug this: kernel:  Possible unsafe locking scenario: kernel:        CPU0 kernel:        ---- kernel:   lock(&local->queue_stop_reason_lock); kernel:   <Interrupt> kernel:     lock(&local->queue_stop_reason_lock); kernel:          *** DEADLOCK *** kernel: 8 locks held by kworker/5:0/25656: kernel:  #0: ffff9d618009d138 ((wq_completion)events_freezable){+.+.}-{0:0}, at: process_one_work+0x1ca/0x530 kernel:  #1: ffffb1ef4637fe68 ((work_completion)(&local->restart_work)){+.+.}-{0:0}, at: process_one_work+0x1ce/0x530 kernel:  #2: ffffffff9f166548 (rtnl_mutex){+.+.}-{3:3}, at: return_to_handler+0x0/0x40 kernel:  #3: ffff9d619 ---truncated---

## Where it's fixed

| Platform | Product | Fixed in | Fix | Released |
|---|---|---|---|---|
| Linux | linux Debian 12.15 (bookworm) | 6.1.37-1 | [DEBIAN-CVE-2023-54288](https://patchblox.com/security/data/fix/linux/debian-cve-2023-54288.md) | Dec 30, 2025 |
| Linux | linux Debian 13.5 (trixie) | 6.3.7-1 | [DEBIAN-CVE-2023-54288](https://patchblox.com/security/data/fix/linux/debian-cve-2023-54288.md) | Dec 30, 2025 |
| Linux | linux Debian 14 | 6.3.7-1 | [DEBIAN-CVE-2023-54288](https://patchblox.com/security/data/fix/linux/debian-cve-2023-54288.md) | Dec 30, 2025 |

---

Data as of 2026-11-08T19:12:23Z UTC. Source: Patchblox Patch Radar (https://patchblox.com/security/patch-radar). Patchblox finds out-of-date software on Windows, macOS and Linux and updates it through release rings: https://patchblox.com/demo

Free to use with attribution: show "Data: Patchblox Patch Radar" with a link to https://patchblox.com/security/patch-radar. Terms, including what needs a written agreement: https://patchblox.com/security/patch-radar/use-the-data

Product names, logos and trademarks shown on Patch Radar belong to their respective owners. They are used only to identify the software each security fix applies to and to help readers find their platform. Their use does not imply any affiliation with, or endorsement by, those owners, and Patchblox is not affiliated with any of them.
