Description
In the Linux kernel, the following vulnerability has been resolved: wifi: brcmfmac: make release_scratchbuffers idempotent brcmf_pcie_release_scratchbuffers() frees the shared.scratch and shared.ringupd DMA buffers with dma_free_coherent() but does not clear the pointers afterwards, unlike the sibling release_ringbuffers() which NULLs commonrings/flowrings/idxbuf on release. Both the bus_reset .reset callback (brcmf_pcie_reset) and brcmf_pcie_remove() call release_scratchbuffers. When reset teardown has run before removal, remove's own teardown would call dma_free_coherent() a second time on the already-freed DMA allocation. NULL the pointers after free, matching release_ringbuffers(), so a later release observes that the allocation has already been released. This patch makes repeated sequential release safe; the reset-work lifetime is handled separately by the following patch. This issue was found by an in-house static analysis tool.
Affected products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
Linux Linux
Default version status: unaffected
4684997d9eea29380000e062755aa6d368d789a3 to < 81c58a206d1deee01f4c29236d4154c0872f2a38affected4684997d9eea29380000e062755aa6d368d789a3 to < 382ee00b2d1e31869ae576a60d3fbe7a2153512faffected4684997d9eea29380000e062755aa6d368d789a3 to < 739b686aecdb14a6065300ea53401f043e51fd22affected4684997d9eea29380000e062755aa6d368d789a3 to < b7d1d8cb1bdca56aecebacd2896615da0acc126aaffected4684997d9eea29380000e062755aa6d368d789a3 to < 5a045c2f0fbf029873d2295178fa0785ade35af0affected4684997d9eea29380000e062755aa6d368d789a3 to < 044fca8f45ba9ab6ca526163155234cf88287ff5affected4684997d9eea29380000e062755aa6d368d789a3 to < 0ca80328df23f851c86866720d4977783c919ee6affected4684997d9eea29380000e062755aa6d368d789a3 to < 538c51e9d124cf656f2dd0c0394a8545efc7102daffected
Linux Linux
Default version status: affected
5.2affected0 to < 5.2unaffected5.10.265 to ≤ 5.10.*unaffected5.15.216 to ≤ 5.15.*unaffected6.1.183 to ≤ 6.1.*unaffected6.6.148 to ≤ 6.6.*unaffected6.12.101 to ≤ 6.12.*unaffected6.18.42 to ≤ 6.18.*unaffected7.1.6 to ≤ 7.1.*unaffected7.2 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/81c58a206d1deee01f4c29236d4154c0872f2a38 ↗
- https://git.kernel.org/stable/c/382ee00b2d1e31869ae576a60d3fbe7a2153512f ↗
- https://git.kernel.org/stable/c/739b686aecdb14a6065300ea53401f043e51fd22 ↗
- https://git.kernel.org/stable/c/b7d1d8cb1bdca56aecebacd2896615da0acc126a ↗
- https://git.kernel.org/stable/c/5a045c2f0fbf029873d2295178fa0785ade35af0 ↗
- https://git.kernel.org/stable/c/044fca8f45ba9ab6ca526163155234cf88287ff5 ↗
- https://git.kernel.org/stable/c/0ca80328df23f851c86866720d4977783c919ee6 ↗
- https://git.kernel.org/stable/c/538c51e9d124cf656f2dd0c0394a8545efc7102d ↗