Skip to main content
← All vulnerabilities
CVE-2024-47713

wifi: mac80211: use two-phase skb reclamation in ieee80211_do_stop()

Published
Last modified
published
Not listed in CISA KEV
Fix
Fixed in 4.19.323, 5.4.285, 5.10.227, 5.15.168, 6.1.113, and 3 more
None on Exploit-DB, Metasploit or GitHub
  • Exploitation: none
  • Automatable: no
  • Technical impact: partial

Summary

In the Linux kernel, the following vulnerability has been resolved: wifi: mac80211: use two-phase skb reclamation in ieee80211_do_stop() Since '__dev_queue_xmit()' should be called with interrupts enabled, the following backtrace: ieee80211_do_stop() ... spin_lock_irqsave(&local->queue_stop_reason_lock, flags) ... ieee80211_free_txskb() ieee80211_report_used_skb() ieee80211_report_ack_skb() cfg80211_mgmt_tx_status_ext() nl80211_frame_tx_status() genlmsg_multicast_netns() genlmsg_multicast_netns_filtered() nlmsg_multicast_filtered() netlink_broadcast_filtered() do_one_broadcast() netlink_broadcast_deliver() __netlink_sendskb() netlink_deliver_tap() __netlink_deliver_tap_skb() dev_queue_xmit() __dev_queue_xmit() ; with IRQS disabled ... spin_unlock_irqrestore(&local->queue_stop_reason_lock, flags) issues the warning (as reported by syzbot reproducer): WARNING: CPU: 2 PID: 5128 at kernel/softirq.c:362 __local_bh_enable_ip+0xc3/0x120 Fix this by implementing a two-phase skb reclamation in 'ieee80211_do_stop()', where actual work is performed outside of a section with interrupts disabled.

Timeline

  1. CVE published
  2. CISA SSVC assessment

    Exploitation: none · Automatable: no · Technical impact: partial

  3. Record last updated

Affected versions

  • Linux Linux

    From 5061b0c2b9066de426fbc63f1278d2210e789412 · fixed in 07eb0bd7b0a8abed9d45e0f567c9af1dc83e5268; From 5061b0c2b9066de426fbc63f1278d2210e789412 · fixed in 04f75f5bae33349283d6886901d9acd2f110c024; From 5061b0c2b9066de426fbc63f1278d2210e789412 · fixed in f232916fab67ca1c3425926df4a866e59ff26908; From 5061b0c2b9066de426fbc63f1278d2210e789412 · fixed in acb53a716e492a02479345157c43f21edc8bc64b; From 5061b0c2b9066de426fbc63f1278d2210e789412 · fixed in db5ca4b42ccfa42d2af7b335ff12578e57775c02; From 5061b0c2b9066de426fbc63f1278d2210e789412 · fixed in 058c9026ad79dc98572442fd4c7e9a36aba6f596; From 5061b0c2b9066de426fbc63f1278d2210e789412 · fixed in eab272972cffff9cd973b8e4055a8e81c64f7e6a; From 5061b0c2b9066de426fbc63f1278d2210e789412 · fixed in ad4b7068b101fbbb4a9ca4b99b25eb051a9482ec; From 5061b0c2b9066de426fbc63f1278d2210e789412 · fixed in 9d301de12da6e1bb069a9835c38359b8e8135121

  • Linux Linux

    2.6.32

  • KernelLinux

    From 2.6.32 · fixed in 4.19.323; From 4.20.0 · fixed in 5.4.285; From 5.5.0 · fixed in 5.10.227; From 5.11.0 · fixed in 5.15.168; From 5.16.0 · fixed in 6.1.113; From 6.2.0 · fixed in 6.6.54; From 6.7.0 · fixed in 6.10.13; From 6.11.0 · fixed in 6.11.2

References 9

git.kernel.org