In the Linux kernel, the following vulnerability has been resolved:
wifi: ath11k: fix RCU stall while reaping monitor destination ring
While processing the monitor destination ring, MSDUs are reaped from the link descriptor based on the corresponding buf_id.
However, sometimes the driver cannot obtain a valid buffer corresponding to the buf_id received from the hardware. This causes an infinite loop in the destination processing, resulting in a kernel crash.
kernel log: ath11kpci 0000:58:00.0: data msdupop: invalid bufid 309 ath11kpci 0000:58:00.0: data dprxmonitorlinkdescreturn failed ath11kpci 0000:58:00.0: data msdupop: invalid bufid 309 ath11kpci 0000:58:00.0: data dprxmonitorlinkdescreturn failed
Fix this by skipping the problematic buf_id and reaping the next entry, replacing the break with the next MSDU processing.
Tested-on: WCN6855 hw2.0 PCI WLAN.HSP.1.1-03125-QCAHSPSWPLV1V2SILICONZLITE-3.6510.30 Tested-on: QCN9074 hw1.0 PCI WLAN.HK.2.7.0.1-01744-QCAHKSWPL_SILICONZ-1
[
{
"digest": {
"threshold": 0.9,
"line_hashes": [
"338347643670485404951263423265755868063",
"57092735674589421168829791548002401316",
"78395540773497726292822589191704359229",
"87211786233703584551663925593705366000",
"117499088993968732157560843050439564595",
"330126150945099397866403729730374926942",
"41192998696280713506397458009539337520",
"62370136805078392447754040692546374131"
]
},
"id": "CVE-2024-58097-4e5cbf80",
"signature_type": "Line",
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@16c6c35c03ea73054a1f6d3302a4ce4a331b427d",
"target": {
"file": "drivers/net/wireless/ath/ath11k/dp_rx.c"
},
"deprecated": false
},
{
"digest": {
"function_hash": "301109917846385998645302534472030239762",
"length": 3053.0
},
"id": "CVE-2024-58097-83c8a015",
"signature_type": "Function",
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@b4991fc41745645f8050506f5a8578bd11e6b378",
"target": {
"file": "drivers/net/wireless/ath/ath11k/dp_rx.c",
"function": "ath11k_dp_rx_full_mon_mpdu_pop"
},
"deprecated": false
},
{
"digest": {
"function_hash": "22761294995384771752437631242211740459",
"length": 3935.0
},
"id": "CVE-2024-58097-a762c612",
"signature_type": "Function",
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@b4991fc41745645f8050506f5a8578bd11e6b378",
"target": {
"file": "drivers/net/wireless/ath/ath11k/dp_rx.c",
"function": "ath11k_dp_rx_mon_mpdu_pop"
},
"deprecated": false
},
{
"digest": {
"function_hash": "301109917846385998645302534472030239762",
"length": 3053.0
},
"id": "CVE-2024-58097-ceca8639",
"signature_type": "Function",
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@16c6c35c03ea73054a1f6d3302a4ce4a331b427d",
"target": {
"file": "drivers/net/wireless/ath/ath11k/dp_rx.c",
"function": "ath11k_dp_rx_full_mon_mpdu_pop"
},
"deprecated": false
},
{
"digest": {
"function_hash": "22761294995384771752437631242211740459",
"length": 3935.0
},
"id": "CVE-2024-58097-ed7051a5",
"signature_type": "Function",
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@16c6c35c03ea73054a1f6d3302a4ce4a331b427d",
"target": {
"file": "drivers/net/wireless/ath/ath11k/dp_rx.c",
"function": "ath11k_dp_rx_mon_mpdu_pop"
},
"deprecated": false
},
{
"digest": {
"threshold": 0.9,
"line_hashes": [
"338347643670485404951263423265755868063",
"57092735674589421168829791548002401316",
"78395540773497726292822589191704359229",
"87211786233703584551663925593705366000",
"117499088993968732157560843050439564595",
"330126150945099397866403729730374926942",
"41192998696280713506397458009539337520",
"62370136805078392447754040692546374131"
]
},
"id": "CVE-2024-58097-f2dc6550",
"signature_type": "Line",
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@b4991fc41745645f8050506f5a8578bd11e6b378",
"target": {
"file": "drivers/net/wireless/ath/ath11k/dp_rx.c"
},
"deprecated": false
}
]