CVE-2026-97595

EUVD-2026-86903
In the Linux kernel, the following vulnerability has been resolved:

mac802154: fix use-after-free of sdata via queued RX frames

The RX softirq producer ieee802154_subif_frame() queues received beacon
and MAC-command frames onto local->rx_beacon_list / rx_mac_cmd_list and
schedules a process-context worker, storing a raw mac_pkt->sdata (and
skb->dev == sdata->dev) with neither a reference nor any locking:

 - the lists have no lock: the softirq producer list_add_tail()s while the
   mac_wq worker list_del()s, so sibling interfaces on the same phy corrupt
   the list;

 - the workers dereference the interface after it may have been freed.
   mac802154_rx_mac_cmd_worker() touches mac_pkt->sdata directly, and
   mac802154_rx_beacon_worker() -> mac802154_process_beacon() dereferences
   skb->dev (== sdata->dev). Removing an interface frees its sdata
   (netdev_priv) while a queued frame still points at it, so a later worker
   run is a use-after-free.

Reproduced under KASAN by flooding a victim interface with MAC command
frames and removing it (the beacon path is the same class via skb->dev):

  BUG: KASAN: slab-use-after-free in mac802154_rx_mac_cmd_worker+0x463/0x630 [mac802154]
  Read of size 4 at addr ffff888002f9ea18 by task kworker/u8:1/31
  Workqueue: phy0-mac-cmds mac802154_rx_mac_cmd_worker [mac802154]
  Call Trace:
   mac802154_rx_mac_cmd_worker+0x463/0x630 [mac802154]
   process_one_work+0x611/0xe80
   worker_thread+0x52e/0xdc0
   kthread+0x30c/0x630
   ret_from_fork+0x2fd/0x3e0

Fix both lists together:

 - add local->rx_lock and take it around every list access: the softirq
   producer (plain spin_lock, softirq context) and the workers and flush
   (spin_lock_bh, process context);

 - pin the interface for the lifetime of a queued frame with
   netdev_hold()/netdev_put(), so the worker can safely dereference sdata /
   skb->dev even while the interface is being removed;

 - dequeue under the lock at the head and loop-drain the whole list in the
   workers (they previously processed one frame per run and relied on a
   later enqueue to drain the rest);

 - drop not-yet-started frames of an interface before it is unregistered,
   from ieee802154_if_remove() (after the RCU grace period) and from the
   ieee802154_remove_interfaces() loop -- the latter is the whole-phy
   teardown path, which does not go through ieee802154_if_remove().

An in-flight worker that already dequeued a frame keeps its own netdev
reference; unregister_netdevice() then waits it out in netdev_run_todo(),
which runs at rtnl_unlock() (rtnl released) and after the interface has
been closed, so it does not pin rtnl. A worker blocked in an association
TX only delays that one interface's unregister (the usual "waiting for %s
to become free"), it does not hold rtnl. netdev_hold() is used for this
reason instead of a cancel_work_sync() under rtnl, which would block on
the worker's unbounded MLME TX wait via ieee802154_sync_queue().

The mac-command worker additionally skips processing for a stopped
interface (ieee802154_sdata_running()), avoiding a needless association
response during teardown.
ProviderTypeBase ScoreAtk. VectorAtk. ComplexityPriv. RequiredVector
NISTPrimary
7.5 HIGH
ADJACENT_NETWORK
HIGH
NONE
CVSS:3.1/AV:A/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
Awaiting analysis
This vulnerability is currently awaiting analysis.
Base Score
CVSS 3.x
EPSS Score
Percentile: Unknown
Debian logo
Debian Releases
Debian Product
Codename
linux
bookworm
6.1.176-1
fixed
bookworm (security)
6.1.187-1
fixed
forky
vulnerable
sid
7.2.7-1
fixed
trixie
vulnerable
trixie (security)
vulnerable
Ubuntu logo
Ubuntu Releases
Ubuntu Product
Codename
linux
bionic
needs-triage
focal
needs-triage
jammy
needs-triage
noble
needs-triage
resolute
needs-triage
trusty
needs-triage
xenial
needs-triage
linux-hwe
bionic
ignored
jammy
dne
noble
dne
resolute
dne
xenial
needs-triage
linux-hwe-5.4
bionic
needs-triage
jammy
dne
noble
dne
resolute
dne
linux-hwe-5.8
focal
ignored
jammy
dne
noble
dne
resolute
dne
linux-hwe-5.11
focal
ignored
jammy
dne
noble
dne
resolute
dne
linux-hwe-5.13
focal
ignored
jammy
dne
noble
dne
resolute
dne
linux-hwe-5.15
focal
needs-triage
jammy
dne
noble
dne
resolute
dne
linux-hwe-5.19
jammy
ignored
noble
dne
resolute
dne
linux-hwe-6.2
jammy
ignored
noble
dne
resolute
dne
linux-hwe-6.5
jammy
ignored
noble
dne
resolute
dne
linux-hwe-6.8
jammy
needs-triage
noble
dne
resolute
dne
linux-hwe-6.11
jammy
dne
noble
ignored
resolute
dne
linux-hwe-6.14
jammy
dne
noble
needs-triage
resolute
dne
linux-hwe-6.17
jammy
dne
noble
needs-triage
resolute
dne
linux-hwe-7.0
jammy
dne
noble
needs-triage
resolute
dne
linux-hwe-edge
bionic
ignored
jammy
dne
noble
dne
resolute
dne
xenial
ignored
linux-lts-xenial
jammy
dne
noble
dne
resolute
dne
trusty
needs-triage
linux-kvm
bionic
needs-triage
focal
needs-triage
jammy
needs-triage
noble
dne
resolute
dne
xenial
needs-triage
linux-allwinner-5.19
jammy
ignored
noble
dne
resolute
dne
linux-aws
bionic
needs-triage
focal
needs-triage
jammy
needs-triage
noble
needs-triage
resolute
needs-triage
trusty
needs-triage
xenial
needs-triage
linux-aws-5.0
bionic
ignored
jammy
dne
noble
dne
resolute
dne
linux-aws-5.3
bionic
ignored
jammy
dne
noble
dne
resolute
dne
linux-aws-5.4
bionic
needs-triage
jammy
dne
noble
dne
resolute
dne
linux-aws-5.8
focal
ignored
jammy
dne
noble
dne
resolute
dne
linux-aws-5.11
focal
ignored
jammy
dne
noble
dne
resolute
dne
linux-aws-5.13
focal
ignored
jammy
dne
noble
dne
resolute
dne
linux-aws-5.15
focal
needs-triage
jammy
dne
noble
dne
resolute
dne
linux-aws-5.19
jammy
ignored
noble
dne
resolute
dne
linux-aws-6.2
jammy
ignored
noble
dne
resolute
dne
linux-aws-6.5
jammy
ignored
noble
dne
resolute
dne
linux-aws-6.8
jammy
needs-triage
noble
dne
resolute
dne
linux-aws-6.14
jammy
dne
noble
needs-triage
resolute
dne
linux-aws-6.17
jammy
dne
noble
needs-triage
resolute
dne
linux-aws-7.0
jammy
dne
noble
needs-triage
resolute
dne
linux-aws-hwe
jammy
dne
noble
dne
resolute
dne
xenial
needs-triage
linux-azure
bionic
ignored
focal
needs-triage
jammy
needs-triage
noble
needs-triage
resolute
needs-triage
trusty
needs-triage
xenial
needs-triage
linux-azure-4.15
bionic
needs-triage
jammy
dne
noble
dne
resolute
dne
linux-azure-5.3
bionic
ignored
jammy
dne
noble
dne
resolute
dne
linux-azure-5.4
bionic
needs-triage
jammy
dne
noble
dne
resolute
dne
linux-azure-5.8
focal
ignored
jammy
dne
noble
dne
resolute
dne
linux-azure-5.11
focal
ignored
jammy
dne
noble
dne
resolute
dne
linux-azure-5.13
focal
ignored
jammy
dne
noble
dne
resolute
dne
linux-azure-5.15
focal
needs-triage
jammy
dne
noble
dne
resolute
dne
linux-azure-5.19
jammy
ignored
noble
dne
resolute
dne
linux-azure-6.2
jammy
ignored
noble
dne
resolute
dne
linux-azure-6.5
jammy
ignored
noble
dne
resolute
dne
linux-azure-6.8
jammy
needs-triage
noble
dne
resolute
dne
linux-azure-6.11
jammy
dne
noble
ignored
resolute
dne
linux-azure-6.14
jammy
dne
noble
needs-triage
resolute
dne
linux-azure-6.17
jammy
dne
noble
needs-triage
resolute
dne
linux-azure-7.0
jammy
dne
noble
needs-triage
resolute
dne
linux-azure-fde
focal
ignored
jammy
needs-triage
noble
needs-triage
resolute
needs-triage
linux-azure-fde-5.15
focal
needs-triage
jammy
dne
noble
dne
resolute
dne
linux-azure-fde-5.19
jammy
ignored
noble
dne
resolute
dne
linux-azure-fde-6.2
jammy
ignored
noble
dne
resolute
dne
linux-azure-fde-6.8
jammy
needs-triage
noble
dne
resolute
dne
linux-azure-fde-6.14
jammy
dne
noble
needs-triage
resolute
dne
linux-azure-fde-6.17
jammy
dne
noble
needs-triage
resolute
dne
linux-azure-fde-7.0
jammy
dne
noble
needs-triage
resolute
dne
linux-azure-nvidia
jammy
dne
noble
needs-triage
resolute
dne
linux-azure-nvidia-6.14
jammy
dne
noble
needs-triage
resolute
dne
linux-bluefield
focal
needs-triage
jammy
dne
noble
dne
resolute
dne
linux-azure-edge
bionic
ignored
jammy
dne
noble
dne
resolute
dne
linux-fips
bionic
needs-triage
focal
needs-triage
jammy
dne
noble
dne
resolute
dne
xenial
needs-triage
linux-aws-fips
bionic
needs-triage
focal
needs-triage
jammy
dne
noble
dne
resolute
dne
linux-azure-fips
bionic
needs-triage
focal
needs-triage
jammy
dne
noble
dne
resolute
dne
linux-gcp-fips
bionic
needs-triage
focal
needs-triage
jammy
dne
noble
dne
resolute
dne
linux-gcp
bionic
ignored
focal
needs-triage
jammy
needs-triage
noble
needs-triage
resolute
needs-triage
xenial
needs-triage
linux-gcp-4.15
bionic
needs-triage
jammy
dne
noble
dne
resolute
dne
linux-gcp-5.3
bionic
ignored
jammy
dne
noble
dne
resolute
dne
linux-gcp-5.4
bionic
needs-triage
jammy
dne
noble
dne
resolute
dne
linux-gcp-5.8
focal
ignored
jammy
dne
noble
dne
resolute
dne
linux-gcp-5.11
focal
ignored
jammy
dne
noble
dne
resolute
dne
linux-gcp-5.13
focal
ignored
jammy
dne
noble
dne
resolute
dne
linux-gcp-5.15
focal
needs-triage
jammy
dne
noble
dne
resolute
dne
linux-gcp-5.19
jammy
ignored
noble
dne
resolute
dne
linux-gcp-6.2
jammy
ignored
noble
dne
resolute
dne
linux-gcp-6.5
jammy
ignored
noble
dne
resolute
dne
linux-gcp-6.8
jammy
needs-triage
noble
dne
resolute
dne
linux-gcp-6.11
jammy
dne
noble
ignored
resolute
dne
linux-gcp-6.14
jammy
dne
noble
needs-triage
resolute
dne
linux-gcp-6.17
jammy
dne
noble
needs-triage
resolute
dne
linux-gcp-7.0
jammy
dne
noble
needs-triage
resolute
dne
linux-gke
focal
ignored
jammy
needs-triage
noble
needs-triage
resolute
needs-triage
linux-gke-4.15
bionic
ignored
jammy
dne
noble
dne
resolute
dne
linux-gke-5.4
bionic
ignored
jammy
dne
noble
dne
resolute
dne
linux-gke-5.15
focal
ignored
jammy
dne
noble
dne
resolute
dne
linux-gkeop
focal
ignored
jammy
needs-triage
noble
needs-triage
resolute
dne
linux-gkeop-5.4
bionic
ignored
jammy
dne
noble
dne
resolute
dne
linux-gkeop-5.15
focal
ignored
jammy
dne
noble
dne
resolute
dne
linux-ibm
focal
needs-triage
jammy
needs-triage
noble
needs-triage
resolute
needs-triage
linux-ibm-5.4
bionic
needs-triage
jammy
dne
noble
dne
resolute
dne
linux-ibm-5.15
focal
needs-triage
jammy
dne
noble
dne
resolute
dne
linux-ibm-6.8
jammy
needs-triage
noble
dne
resolute
dne
linux-intel-5.13
focal
ignored
jammy
dne
noble
dne
resolute
dne
linux-intel-iotg
jammy
needs-triage
noble
dne
resolute
dne
linux-intel-iotg-5.15
focal
needs-triage
jammy
dne
noble
dne
resolute
dne
linux-iot
focal
needs-triage
jammy
dne
noble
dne
resolute
dne
linux-intel-iot-realtime
jammy
needs-triage
noble
dne
resolute
dne
linux-lowlatency
jammy
needs-triage
noble
needs-triage
resolute
dne
linux-lowlatency-hwe-5.15
focal
needs-triage
jammy
dne
noble
dne
resolute
dne
linux-lowlatency-hwe-5.19
jammy
ignored
noble
dne
resolute
dne
linux-lowlatency-hwe-6.2
jammy
ignored
noble
dne
resolute
dne
linux-lowlatency-hwe-6.5
jammy
ignored
noble
dne
resolute
dne
linux-lowlatency-hwe-6.8
jammy
needs-triage
noble
dne
resolute
dne
linux-lowlatency-hwe-6.11
jammy
dne
noble
ignored
resolute
dne
linux-nvidia
jammy
needs-triage
noble
needs-triage
resolute
needs-triage
linux-nvidia-6.2
jammy
ignored
noble
dne
resolute
dne
linux-nvidia-6.5
jammy
ignored
noble
dne
resolute
dne
linux-nvidia-6.8
jammy
needs-triage
noble
dne
resolute
dne
linux-nvidia-6.11
jammy
dne
noble
ignored
resolute
dne
linux-nvidia-6.17
jammy
dne
noble
needs-triage
resolute
dne
linux-nvidia-7.0
jammy
dne
noble
needs-triage
resolute
dne
linux-nvidia-bos
jammy
dne
noble
dne
resolute
needs-triage
linux-nvidia-lowlatency
jammy
dne
noble
needs-triage
resolute
dne
linux-nvidia-tegra
jammy
needs-triage
noble
needs-triage
resolute
dne
linux-nvidia-tegra-5.15
focal
needs-triage
jammy
dne
noble
dne
resolute
dne
linux-nvidia-tegra-igx
jammy
needs-triage
noble
dne
resolute
dne
linux-oracle
bionic
needs-triage
focal
needs-triage
jammy
needs-triage
noble
needs-triage
resolute
needs-triage
xenial
needs-triage
linux-oracle-5.0
bionic
ignored
jammy
dne
noble
dne
resolute
dne
linux-oracle-5.3
bionic
ignored
jammy
dne
noble
dne
resolute
dne
linux-oracle-5.4
bionic
needs-triage
jammy
dne
noble
dne
resolute
dne
linux-oracle-5.8
focal
ignored
jammy
dne
noble
dne
resolute
dne
linux-oracle-5.11
focal
ignored
jammy
dne
noble
dne
resolute
dne
linux-oracle-5.13
focal
ignored
jammy
dne
noble
dne
resolute
dne
linux-oracle-5.15
focal
needs-triage
jammy
dne
noble
dne
resolute
dne
linux-oracle-6.5
jammy
ignored
noble
dne
resolute
dne
linux-oracle-6.8
jammy
needs-triage
noble
dne
resolute
dne
linux-oracle-6.14
jammy
dne
noble
needs-triage
resolute
dne
linux-oracle-6.17
jammy
dne
noble
needs-triage
resolute
dne
linux-oracle-7.0
jammy
dne
noble
needs-triage
resolute
dne
linux-oem
bionic
ignored
jammy
dne
noble
dne
resolute
dne
linux-oem-5.6
focal
ignored
jammy
dne
noble
dne
resolute
dne
linux-oem-5.10
focal
ignored
jammy
dne
noble
dne
resolute
dne
linux-oem-5.13
focal
ignored
jammy
dne
noble
dne
resolute
dne
linux-oem-5.14
focal
ignored
jammy
dne
noble
dne
resolute
dne
linux-oem-5.17
jammy
ignored
noble
dne
resolute
dne
linux-oem-6.0
jammy
ignored
noble
dne
resolute
dne
linux-oem-6.1
jammy
ignored
noble
dne
resolute
dne
linux-oem-6.5
jammy
ignored
noble
dne
resolute
dne
linux-oem-6.8
jammy
dne
noble
ignored
resolute
dne
linux-oem-6.11
jammy
dne
noble
ignored
resolute
dne
linux-oem-6.14
jammy
dne
noble
needs-triage
resolute
dne
linux-oem-6.17
jammy
dne
noble
needs-triage
resolute
dne
linux-oem-7.0
jammy
dne
noble
dne
resolute
needs-triage
linux-raspi
focal
needs-triage
jammy
needs-triage
noble
needs-triage
resolute
needs-triage
linux-raspi2
focal
ignored
jammy
dne
noble
dne
resolute
dne
linux-raspi-5.4
bionic
needs-triage
jammy
dne
noble
dne
resolute
dne
linux-raspi-realtime
jammy
dne
noble
needs-triage
resolute
dne
linux-realtime
jammy
needs-triage
noble
needs-triage
resolute
needs-triage
linux-realtime-6.8
jammy
dne
noble
dne
resolute
dne
linux-realtime-6.14
jammy
dne
noble
dne
resolute
dne
linux-riscv
focal
ignored
jammy
ignored
noble
ignored
resolute
needs-triage
linux-riscv-5.8
focal
ignored
jammy
dne
noble
dne
resolute
dne
linux-riscv-5.11
focal
ignored
jammy
dne
noble
dne
resolute
dne
linux-riscv-5.15
focal
needs-triage
jammy
dne
noble
dne
resolute
dne
linux-riscv-5.19
jammy
ignored
noble
dne
resolute
dne
linux-riscv-6.5
jammy
ignored
noble
dne
resolute
dne
linux-riscv-6.8
jammy
needs-triage
noble
dne
resolute
dne
linux-riscv-6.14
jammy
dne
noble
ignored
resolute
dne
linux-riscv-6.17
jammy
dne
noble
needs-triage
resolute
dne
linux-riscv-7.0
jammy
dne
noble
needs-triage
resolute
dne
linux-starfive-5.19
jammy
ignored
noble
dne
resolute
dne
linux-starfive-6.2
jammy
ignored
noble
dne
resolute
dne
linux-starfive-6.5
jammy
ignored
noble
dne
resolute
dne
linux-xilinx
jammy
dne
noble
needs-triage
resolute
dne
linux-xilinx-zynqmp
focal
needs-triage
jammy
needs-triage
noble
dne
resolute
dne
linux-realtime-6.17
jammy
dne
noble
dne
resolute
dne