{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2025-39750","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","state":"PUBLISHED","assignerShortName":"Linux","dateReserved":"2025-04-16T07:20:57.125Z","datePublished":"2025-09-11T16:52:21.917Z","dateUpdated":"2026-08-05T12:04:58.907Z"},"containers":{"cna":{"providerMetadata":{"orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","shortName":"Linux","dateUpdated":"2026-08-05T12:04:58.907Z"},"descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nwifi: ath12k: Correct tid cleanup when tid setup fails\n\nCurrently, if any error occurs during ath12k_dp_rx_peer_tid_setup(),\nthe tid value is already incremented, even though the corresponding\nTID is not actually allocated. Proceed to\nath12k_dp_rx_peer_tid_delete() starting from unallocated tid,\nwhich might leads to freeing unallocated TID and cause potential\ncrash or out-of-bounds access.\n\nHence, fix by correctly decrementing tid before cleanup to match only\nthe successfully allocated TIDs.\n\nAlso, remove tid-- from failure case of ath12k_dp_rx_peer_frag_setup(),\nas decrementing the tid before cleanup in loop will take care of this.\n\nCompile tested only."}],"metrics":[{"cvssV3_1":{"version":"3.1","vectorString":"CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","baseScore":8.8,"baseSeverity":"HIGH"},"scenarios":[{"lang":"en","value":"AV:A - The vulnerable path is entered from the ath12k WiFi driver's mac80211 `sta_state` callback when a peer is added in response to received 802.11 management frames, so the attacker must be within radio range of the AP/STA, i.e. on the same wireless segment.\nAC:L - The attacker controls both sides of the trigger — repeatedly transmitting auth/assoc frames from spoofed MACs (each allocating 17 GFP_ATOMIC REO queue descriptors) and immediately deauthing to race peer teardown against the 17-TID setup loop — so the `ath12k_dp_rx_peer_frag_setup()` failure needed to reach `rx_tid[17]` is attacker-driven rather than beyond their influence.\nPR:N - In AP mode mac80211/hostapd add the station (NOTEXIST→NONE) upon an 802.11 Authentication frame, before any credentials, PSK, or 802.1X exchange is verified, so the attacker needs no account or key on the target.\nUI:N - Exploitation requires only that the attacker transmit 802.11 frames to a listening ath12k AP; no action by a local user or administrator is needed.\nS:U - The out-of-bounds read/write and invalid free corrupt kernel heap memory managed by the same kernel security authority; there is no crossing into a hypervisor, guest, or sandbox boundary.\nC:H - `ath12k_dp_reo_cmd_send()` performs a 128-byte `memcpy` from `&peer->rx_tid[17]`, copying out-of-bounds heap contents (including kernel pointers and DMA addresses) into a cached REO command element, and the OOB-read address is also handed to hardware — an unbounded adjacent-memory read.\nI:H - The bug yields out-of-bounds writes past `peer->rx_tid[]` (`vaddr = NULL`, `active = false`, plus an 8-byte write one entry past the REO LUT), a `kfree()` of a pointer synthesized from out-of-bounds bytes (arbitrary-free primitive), and a REO hardware queue-descriptor write at an attacker-influenced physical address — all usable for control-flow-relevant heap corruption.\nA:H - Freeing a wild pointer and `dma_unmap_single()` on a bogus DMA address reliably produce slab corruption, IOMMU faults, or an oops/panic, taking down the kernel and the WiFi interface."}]}],"affected":[{"product":"Linux","vendor":"Linux","defaultStatus":"unaffected","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/net/wireless/ath/ath12k/dp.c"],"versions":[{"version":"d889913205cf7ebda905b1e62c5867ed4e39f6c2","lessThan":"30cad87978057516c93467516bc481a3eacfd66a","status":"affected","versionType":"git"},{"version":"d889913205cf7ebda905b1e62c5867ed4e39f6c2","lessThan":"2ef17d1476ab26bce89764e2f16833d7f52acc38","status":"affected","versionType":"git"},{"version":"d889913205cf7ebda905b1e62c5867ed4e39f6c2","lessThan":"907c630e58af9e86e215f3951c7b287bd86d0f15","status":"affected","versionType":"git"},{"version":"d889913205cf7ebda905b1e62c5867ed4e39f6c2","lessThan":"6301fe4f209165334d251a1c6da8ae47f93cb32c","status":"affected","versionType":"git"},{"version":"d889913205cf7ebda905b1e62c5867ed4e39f6c2","lessThan":"4a2bf707270f897ab8077baee8ed5842a5321686","status":"affected","versionType":"git"}]},{"product":"Linux","vendor":"Linux","defaultStatus":"affected","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/net/wireless/ath/ath12k/dp.c"],"versions":[{"version":"6.3","status":"affected"},{"version":"0","lessThan":"6.3","status":"unaffected","versionType":"semver"},{"version":"6.6.103","lessThanOrEqual":"6.6.*","status":"unaffected","versionType":"semver"},{"version":"6.12.43","lessThanOrEqual":"6.12.*","status":"unaffected","versionType":"semver"},{"version":"6.15.11","lessThanOrEqual":"6.15.*","status":"unaffected","versionType":"semver"},{"version":"6.16.2","lessThanOrEqual":"6.16.*","status":"unaffected","versionType":"semver"},{"version":"6.17","lessThanOrEqual":"*","status":"unaffected","versionType":"original_commit_for_fix"}]}],"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.3","versionEndExcluding":"6.6.103"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.3","versionEndExcluding":"6.12.43"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.3","versionEndExcluding":"6.15.11"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.3","versionEndExcluding":"6.16.2"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.3","versionEndExcluding":"6.17"}]}]}],"references":[{"url":"https://git.kernel.org/stable/c/30cad87978057516c93467516bc481a3eacfd66a"},{"url":"https://git.kernel.org/stable/c/2ef17d1476ab26bce89764e2f16833d7f52acc38"},{"url":"https://git.kernel.org/stable/c/907c630e58af9e86e215f3951c7b287bd86d0f15"},{"url":"https://git.kernel.org/stable/c/6301fe4f209165334d251a1c6da8ae47f93cb32c"},{"url":"https://git.kernel.org/stable/c/4a2bf707270f897ab8077baee8ed5842a5321686"}],"title":"wifi: ath12k: Correct tid cleanup when tid setup fails","x_generator":{"engine":"bippy-1.2.0"}}}}