Description
In the Linux kernel, the following vulnerability has been resolved: net: mana: fix use-after-free in mana_hwc_destroy_channel() by reordering teardown A potential race condition exists in mana_hwc_destroy_channel() where hwc->caller_ctx is freed before the HWC's Completion Queue (CQ) and Event Queue (EQ) are destroyed. This allows an in-flight CQ interrupt handler to dereference freed memory, leading to a use-after-free or NULL pointer dereference in mana_hwc_handle_resp(). mana_smc_teardown_hwc() signals the hardware to stop but does not synchronize against IRQ handlers already executing on other CPUs. The IRQ synchronization only happens in mana_hwc_destroy_cq() via mana_gd_destroy_eq() -> mana_gd_deregister_irq(). Since this runs after kfree(hwc->caller_ctx), a concurrent mana_hwc_rx_event_handler() can dereference freed caller_ctx (and rxq->msg_buf) in mana_hwc_handle_resp(). Fix this by reordering teardown to reverse-of-creation order: destroy the TX/RX work queues and CQ/EQ before freeing hwc->caller_ctx. This ensures all in-flight interrupt handlers complete before the memory they access is freed.
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
ca9c54d2d6a5ab2430c4eda364c77125d62e5e0f to < b88edf12fc3779521ae5f6f1584153b15f7da6dfaffectedca9c54d2d6a5ab2430c4eda364c77125d62e5e0f to < e23bf444512cb85d76012080a76cd1f9e967448eaffectedca9c54d2d6a5ab2430c4eda364c77125d62e5e0f to < 249e905571583a434d4ea8d6f92ccc0eef337115affectedca9c54d2d6a5ab2430c4eda364c77125d62e5e0f to < 2b001901f689021acd7bf2dceed74a1bdcaaa1f9affectedca9c54d2d6a5ab2430c4eda364c77125d62e5e0f to < afdb1533eb9c05432aeb793a7280fa827c502f5caffectedca9c54d2d6a5ab2430c4eda364c77125d62e5e0f to < 05d345719d85b927cba74afac4d5322de3aa4256affectedca9c54d2d6a5ab2430c4eda364c77125d62e5e0f to < fa103fc8f56954a60699a29215cb713448a39e87affected
Linux Linux
Default version status: affected
5.13affected0 to < 5.13unaffected5.15.203 to ≤ 5.15.*unaffected6.1.167 to ≤ 6.1.*unaffected6.6.130 to ≤ 6.6.*unaffected6.12.78 to ≤ 6.12.*unaffected6.18.20 to ≤ 6.18.*unaffected6.19.10 to ≤ 6.19.*unaffected7.0 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/b88edf12fc3779521ae5f6f1584153b15f7da6df ↗
- https://git.kernel.org/stable/c/e23bf444512cb85d76012080a76cd1f9e967448e ↗
- https://git.kernel.org/stable/c/249e905571583a434d4ea8d6f92ccc0eef337115 ↗
- https://git.kernel.org/stable/c/2b001901f689021acd7bf2dceed74a1bdcaaa1f9 ↗
- https://git.kernel.org/stable/c/afdb1533eb9c05432aeb793a7280fa827c502f5c ↗
- https://git.kernel.org/stable/c/05d345719d85b927cba74afac4d5322de3aa4256 ↗
- https://git.kernel.org/stable/c/fa103fc8f56954a60699a29215cb713448a39e87 ↗
- https://cert-portal.siemens.com/productcert/html/ssa-082556.html ↗
- https://cert-portal.siemens.com/productcert/html/ssa-019113.html ↗
- https://cert-portal.siemens.com/productcert/html/ssa-457936.html ↗