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.
Product status
ca9c54d2d6a5ab2430c4eda364c77125d62e5e0f (git) before b88edf12fc3779521ae5f6f1584153b15f7da6df
ca9c54d2d6a5ab2430c4eda364c77125d62e5e0f (git) before e23bf444512cb85d76012080a76cd1f9e967448e
ca9c54d2d6a5ab2430c4eda364c77125d62e5e0f (git) before 249e905571583a434d4ea8d6f92ccc0eef337115
ca9c54d2d6a5ab2430c4eda364c77125d62e5e0f (git) before 2b001901f689021acd7bf2dceed74a1bdcaaa1f9
ca9c54d2d6a5ab2430c4eda364c77125d62e5e0f (git) before afdb1533eb9c05432aeb793a7280fa827c502f5c
ca9c54d2d6a5ab2430c4eda364c77125d62e5e0f (git) before 05d345719d85b927cba74afac4d5322de3aa4256
ca9c54d2d6a5ab2430c4eda364c77125d62e5e0f (git) before fa103fc8f56954a60699a29215cb713448a39e87
5.13
Any version before 5.13
5.15.203 (semver)
6.1.167 (semver)
6.6.130 (semver)
6.12.78 (semver)
6.18.20 (semver)
6.19.10 (semver)
7.0 (original_commit_for_fix)
References
git.kernel.org/...c/b88edf12fc3779521ae5f6f1584153b15f7da6df
git.kernel.org/...c/e23bf444512cb85d76012080a76cd1f9e967448e
git.kernel.org/...c/249e905571583a434d4ea8d6f92ccc0eef337115
git.kernel.org/...c/2b001901f689021acd7bf2dceed74a1bdcaaa1f9
git.kernel.org/...c/afdb1533eb9c05432aeb793a7280fa827c502f5c
git.kernel.org/...c/05d345719d85b927cba74afac4d5322de3aa4256
git.kernel.org/...c/fa103fc8f56954a60699a29215cb713448a39e87