CVE-2022-50880
Description
In the Linux kernel, the following vulnerability has been resolved:
wifi: ath10k: add peer map clean up for peer delete in ath10k_sta_state()
When peer delete failed in a disconnect operation, use-after-free detected by KFENCE in below log. It is because for each vdev_id and address, it has only one struct ath10k_peer, it is allocated in ath10k_peer_map_event(). When connected to an AP, it has more than one HTT_T2H_MSG_TYPE_PEER_MAP reported from firmware, then the array peer_map of struct ath10k will be set muti-elements to the same ath10k_peer in ath10k_peer_map_event(). When peer delete failed in ath10k_sta_state(), the ath10k_peer will be free for the 1st peer id in array peer_map of struct ath10k, and then use-after-free happened for the 2nd peer id because they map to the same ath10k_peer.
And clean up all peers in array peer_map for the ath10k_peer, then user-after-free disappeared
peer map event log: [ 306.911021] wlan0: authenticate with b0:2a:43:e6:75:0e [ 306.957187] ath10k_pci 0000:01:00.0: mac vdev 0 peer create b0:2a:43:e6:75:0e (new sta) sta 1 / 32 peer 1 / 33 [ 306.957395] ath10k_pci 0000:01:00.0: htt peer map vdev 0 peer b0:2a:43:e6:75:0e id 246 [ 306.957404] ath10k_pci 0000:01:00.0: htt peer map vdev 0 peer b0:2a:43:e6:75:0e id 198 [ 306.986924] ath10k_pci 0000:01:00.0: htt peer map vdev 0 peer b0:2a:43:e6:75:0e id 166
peer unmap event log: [ 435.715691] wlan0: deauthenticating from b0:2a:43:e6:75:0e by local choice (Reason: 3=DEAUTH_LEAVING) [ 435.716802] ath10k_pci 0000:01:00.0: mac vdev 0 peer delete b0:2a:43:e6:75:0e sta ffff990e0e9c2b50 (sta gone) [ 435.717177] ath10k_pci 0000:01:00.0: htt peer unmap vdev 0 peer b0:2a:43:e6:75:0e id 246 [ 435.717186] ath10k_pci 0000:01:00.0: htt peer unmap vdev 0 peer b0:2a:43:e6:75:0e id 198 [ 435.717193] ath10k_pci 0000:01:00.0: htt peer unmap vdev 0 peer b0:2a:43:e6:75:0e id 166
use-after-free log: [21705.888627] wlan0: deauthenticating from d0:76:8f:82:be:75 by local choice (Reason: 3=DEAUTH_LEAVING) [21713.799910] ath10k_pci 0000:01:00.0: failed to delete peer d0:76:8f:82:be:75 for vdev 0: -110 [21713.799925] ath10k_pci 0000:01:00.0: found sta peer d0:76:8f:82:be:75 (ptr 0000000000000000 id 102) entry on vdev 0 after it was supposedly removed [21713.799968] ================================================================== [21713.799991] BUG: KFENCE: use-after-free read in ath10k_sta_state+0x265/0xb8a [ath10k_core] [21713.799991] [21713.799997] Use-after-free read at 0x00000000abe1c75e (in kfence-#69): [21713.800010] ath10k_sta_state+0x265/0xb8a [ath10k_core] [21713.800041] drv_sta_state+0x115/0x677 [mac80211] [21713.800059] __sta_info_destroy_part2+0xb1/0x133 [mac80211] [21713.800076] __sta_info_flush+0x11d/0x162 [mac80211] [21713.800093] ieee80211_set_disassoc+0x12d/0x2f4 [mac80211] [21713.800110] ieee80211_mgd_deauth+0x26c/0x29b [mac80211] [21713.800137] cfg80211_mlme_deauth+0x13f/0x1bb [cfg80211] [21713.800153] nl80211_deauthenticate+0xf8/0x121 [cfg80211] [21713.800161] genl_rcv_msg+0x38e/0x3be [21713.800166] netlink_rcv_skb+0x89/0xf7 [21713.800171] genl_rcv+0x28/0x36 [21713.800176] netlink_unicast+0x179/0x24b [21713.800181] netlink_sendmsg+0x3a0/0x40e [21713.800187] sock_sendmsg+0x72/0x76 [21713.800192] ____sys_sendmsg+0x16d/0x1e3 [21713.800196] ___sys_sendmsg+0x95/0xd1 [21713.800200] __sys_sendmsg+0x85/0xbf [21713.800205] do_syscall_64+0x43/0x55 [21713.800210] entry_SYSCALL_64_after_hwframe+0x44/0xa9 [21713.800213] [21713.800219] kfence-#69: 0x000000009149b0d5-0x000000004c0697fb, size=1064, cache=kmalloc-2k [21713.800219] [21713.800224] allocated by task 13 on cpu 0 at 21705.501373s: [21713.800241] ath10k_peer_map_event+0x7e/0x154 [ath10k_core] [21713.800254] ath10k_htt_t2h_msg_handler+0x586/0x1039 [ath10k_core] [21713.800265] ath10k_htt_htc_t2h_msg_handler+0x12/0x28 [ath10k_core] [21713.800277] ath10k_htc_rx_completion_handler+0x14c/0x1b5 [ath10k_core] [21713.800283] ath10k_pci_process_rx_cb+0x195/0x1d ---truncated---
AI Insight
LLM-synthesized narrative grounded in this CVE's description and references.
A use-after-free in Linux kernel's ath10k WiFi driver occurs when firmware sends multiple peer map events for the same peer map events, leading to memory corruption on disconnect.
Root
Cause
In the Linux kernel's ath10k WiFi driver, the ath10k_sta_state() function fails to properly clean up peer mappings when a peer delete operation fails during disconnect. The firmware may send multiple HTT_T2H_MSG_TYPE_PEER_MAP events for the same station, causing the driver's peer_map array to store multiple entries pointing to the same ath10k_peer structure. When peer deletion fails, only the first mapping is freed, leaving stale pointers that lead to a use-after-free when the firmware later unmaps the remaining peer IDs [1][2].
Exploitation
An attacker within the driver's handling of station state transitions. An attacker within Wi-Fi range could trigger this by connecting to an AP that causes the firmware to emit duplicate peer map events, then forcing a disconnect. The race condition between peer map and unmap events, combined with the incomplete cleanup, results in the kernel accessing freed memory [3]. No special privileges beyond basic Wi-Fi association are required.
Impact
A successful exploit could cause a kernel crash (denial of service) or potentially allow an attacker to execute arbitrary code in kernel context, depending on memory layout. The KFENCE detector caught the use-after-free, confirming memory corruption. Systems running affected kernels are vulnerable to system instability or privilege escalation [4].
Mitigation
The fix was applied to the Linux kernel stable tree in commits that properly cleans up all entries in peer_map for a given peer when deletion occurs. Users should update to a kernel containing the commit that resolves this issue.
AI Insight generated on May 19, 2026. Synthesized from this CVE's description and the cited reference URLs; citations are validated against the source bundle.
Affected products
1Patches
915604ab671792d6259715c95f12fc305c1274494ec1c0bb808faf07717be54a3201f3c1f2bf916418d2138245f2d62cdf020d9570a04Vulnerability mechanics
Generated on May 9, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.
References
9- git.kernel.org/stable/c/08faf07717be0c88b02b5aa45aad2225dfcdd2dcnvd
- git.kernel.org/stable/c/15604ab67179ae27ea3c7fb24b6df32b143257c4nvd
- git.kernel.org/stable/c/2bf916418d2141b810c40812433ab4ecfd3c2934nvd
- git.kernel.org/stable/c/2d6259715c9597a6cfa25db8911683eb0073b1c6nvd
- git.kernel.org/stable/c/38245f2d62cd4d1f38a763a7b4045ab4565b30a0nvd
- git.kernel.org/stable/c/4494ec1c0bb850eaa80fed98e5b041d961011d3envd
- git.kernel.org/stable/c/54a3201f3c1ff813523937da78b5fa7649dbab71nvd
- git.kernel.org/stable/c/f020d9570a04df0762a2ac5c50cf1d8c511c9164nvd
- git.kernel.org/stable/c/f12fc305c127bd07bb50373e29c6037696f916a8nvd
News mentions
0No linked articles in our index yet.