CVE-2026-23454CWE-416

CVE-2026-23454

High · published April 3, 2026

CVSS v3.1
7.0
EPSS
0%
Percentile
1.9
In the wild
Unconfirmed
What it is

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.

The record
Technical detail
CVSS v3.1
7.0 · HIGH
Vector
CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H
CVSS v4.0
Not supplied
EPSS
0.00124 · 1.9th percentile
Weakness
CWE-416 · Use After Free
Published
2026-04-03T20:16Z
Affected products (10)
ProductVersionsFixed in
linux/linux_kernel≥ 5.13, < 5.15.2035.15.203
linux/linux_kernel≥ 5.16, < 6.1.1676.1.167
linux/linux_kernel≥ 6.2, < 6.6.1306.6.130
linux/linux_kernel≥ 6.7, < 6.12.786.12.78
linux/linux_kernel≥ 6.13, < 6.18.206.18.20
linux/linux_kernel≥ 6.19, < 6.19.106.19.10
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
References (10)
EPSS history
Timeline
  • 03 APR 15:15Z
    net: mana: fix use-after-free in mana_hwc_destroy_channel() by reordering teardown
    cvelistv5