Linux: wifi: ath11k: cleanup arsta in ath11k_mac_peer_cleanup_all()
What fixes it
- 57bc3cd46458eafa1c38e3044a61b7399cde7642LinuxCVE List
- 820b8cff81c796ba20573e04722ab62500713f97LinuxCVE List
A fixed version on one release line is not the upgrade target for every line. Check your exact version and any vendor backports.
Description
In the Linux kernel, the following vulnerability has been resolved:
wifi: ath11k: cleanup arsta in ath11k_mac_peer_cleanup_all()
When mac80211 removes a sta, it calls .sta_state() which in turn calls ath11k_mac_station_remove(). In that function we clean up both peers & arsta related resources.
But when the firmware crashes, ath11k calls ieee80211_restart_hw(), which assumes that all driver related resources are cleaned up beforehand. This cleanup is supposedly done by ath11k_mac_peer_cleanup_all() but does not in fact free arsta->rx_stats / tx_stats.
Extract the arsta cleanup from ath11k_mac_station_remove() into a new ath11k_mac_station_cleanup() and call it from both there and ath11k_mac_peer_cleanup_all().
This should handle kmemleaks reports like: unreferenced object 0xffffff801ae66400 (size 1024): comm "hostapd", pid 1306, jiffies 4295011565 hex dump (first 32 bytes): 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ backtrace (crc d61c08ec): kmemleak_alloc+0x3c/0x50 __kmalloc_cache_noprof+0x2b0/0x3e0 ath11k_mac_op_sta_state+0x1dc/0xb10 drv_sta_state+0xac/0x6f8 sta_info_insert_rcu+0x314/0x5e0 sta_info_insert+0x14/0x38 ieee80211_add_station+0x10c/0x1a0 nl80211_new_station+0x3e8/0x680 genl_family_rcv_msg_doit+0xc0/0x120 genl_rcv_msg+0x1b4/0x258 netlink_rcv_skb+0x4c/0x108 genl_rcv+0x38/0x60 netlink_unicast+0x190/0x278 netlink_sendmsg+0x15c/0x370 ____sys_sendmsg+0x120/0x290 ___sys_sendmsg+0x70/0xa0
Tested-on: QCN9074 hw1.0 PCI WLAN.HK.2.9.0.1-01977-QCAHKSWPL_SILICONZ-1
Text from CVE List
Affected versions 10
- Linuxaffected: d5c65159f2895379e11ca13f62feabe93278985d before c4108dce0838ec7d38d782f76f9c007cfe2fff45CVE List
- Linuxaffected: d5c65159f2895379e11ca13f62feabe93278985d before 57bc3cd46458eafa1c38e3044a61b7399cde7642CVE List
- Linuxaffected: d5c65159f2895379e11ca13f62feabe93278985d before be1d5e95ec499ed5ee9704aa27dd1407ccf0d0acCVE List
- Linuxaffected: d5c65159f2895379e11ca13f62feabe93278985d before 820b8cff81c796ba20573e04722ab62500713f97CVE List
- Linuxaffected: 5.6CVE List
- Linuxunaffected: all versions before 5.6CVE List
- Linuxunaffected: 6.12.112 through 6.12.*CVE List
- Linuxunaffected: 6.18.54 through 6.18.*CVE List
- Linuxunaffected: 7.2.8 through 7.2.*CVE List
- Linuxunaffected: 7.3CVE List
References 4
- git.kernel.org/stable/c/c4108dce0838ec7d38d782f76f9c007cfe2fff45Referencevia CVE List
- git.kernel.org/stable/c/57bc3cd46458eafa1c38e3044a61b7399cde7642Referencevia CVE List
- git.kernel.org/stable/c/be1d5e95ec499ed5ee9704aa27dd1407ccf0d0acReferencevia CVE List
- git.kernel.org/stable/c/820b8cff81c796ba20573e04722ab62500713f97Referencevia CVE List