CVE-2025-38468

In the Linux kernel, the following vulnerability has been resolved:

net/sched: Return NULL when htb_lookup_leaf encounters an empty rbtree

htb_lookup_leaf has a BUG_ON that can trigger with the following:

tc qdisc del dev lo root
tc qdisc add dev lo root handle 1: htb default 1
tc class add dev lo parent 1: classid 1:1 htb rate 64bit
tc qdisc add dev lo parent 1:1 handle 2: netem
tc qdisc add dev lo parent 2:1 handle 3: blackhole
ping -I lo -c1 -W0.001 127.0.0.1

The root cause is the following:

1. htb_dequeue calls htb_dequeue_tree which calls the dequeue handler on
   the selected leaf qdisc
2. netem_dequeue calls enqueue on the child qdisc
3. blackhole_enqueue drops the packet and returns a value that is not
   just NET_XMIT_SUCCESS
4. Because of this, netem_dequeue calls qdisc_tree_reduce_backlog, and
   since qlen is now 0, it calls htb_qlen_notify -> htb_deactivate ->
   htb_deactiviate_prios -> htb_remove_class_from_row -> htb_safe_rb_erase
5. As this is the only class in the selected hprio rbtree,
   __rb_change_child in __rb_erase_augmented sets the rb_root pointer to
   NULL
6. Because blackhole_dequeue returns NULL, netem_dequeue returns NULL,
   which causes htb_dequeue_tree to call htb_lookup_leaf with the same
   hprio rbtree, and fail the BUG_ON

The function graph for this scenario is shown here:
 0)               |  htb_enqueue() {
 0) + 13.635 us   |    netem_enqueue();
 0)   4.719 us    |    htb_activate_prios();
 0) # 2249.199 us |  }
 0)               |  htb_dequeue() {
 0)   2.355 us    |    htb_lookup_leaf();
 0)               |    netem_dequeue() {
 0) + 11.061 us   |      blackhole_enqueue();
 0)               |      qdisc_tree_reduce_backlog() {
 0)               |        qdisc_lookup_rcu() {
 0)   1.873 us    |          qdisc_match_from_root();
 0)   6.292 us    |        }
 0)   1.894 us    |        htb_search();
 0)               |        htb_qlen_notify() {
 0)   2.655 us    |          htb_deactivate_prios();
 0)   6.933 us    |        }
 0) + 25.227 us   |      }
 0)   1.983 us    |      blackhole_dequeue();
 0) + 86.553 us   |    }
 0) # 2932.761 us |    qdisc_warn_nonwc();
 0)               |    htb_lookup_leaf() {
 0)               |      BUG_ON();
 ------------------------------------------

The full original bug report can be seen here [1].

We can fix this just by returning NULL instead of the BUG_ON,
as htb_dequeue_tree returns NULL when htb_lookup_leaf returns
NULL.

[1] https://lore.kernel.org/netdev/pF5XOOIim0IuEfhI-SOxTgRvNoDwuux7UHKnE_Y5-zVd4wmGvNk2ceHjKb8ORnzw0cGwfmVu42g9dL7XyJLf1NEzaztboTWcm0Ogxuojoeo=@willsroot.io/
ProviderTypeBase ScoreAtk. VectorAtk. ComplexityPriv. RequiredVector
NISTNIST
UNKNOWN
---
LinuxCNA
---
---
Awaiting analysis
This vulnerability is currently awaiting analysis.
Base Score
CVSS 3.x
EPSS Score
Percentile: 8%
Debian logo
Debian Releases
Debian Product
Codename
linux
bullseye
vulnerable
bullseye (security)
vulnerable
bookworm
6.1.148-1
fixed
bookworm (security)
6.1.147-1
fixed
trixie
6.12.43-1
fixed
trixie (security)
6.12.41-1
fixed
forky
6.16.3-1
fixed
sid
6.16.7-1
fixed
Ubuntu logo
Ubuntu Releases
Ubuntu Product
Codename
linux-hwe
plucky
dne
noble
dne
jammy
dne
focal
dne
bionic
ignored
xenial
ignored
trusty
dne
linux-hwe-5.4
plucky
dne
noble
dne
jammy
dne
focal
dne
bionic
ignored
xenial
dne
trusty
dne
linux-hwe-5.8
plucky
dne
noble
dne
jammy
dne
focal
ignored
bionic
dne
xenial
dne
trusty
dne
linux-hwe-5.11
plucky
dne
noble
dne
jammy
dne
focal
ignored
bionic
dne
xenial
dne
trusty
dne
linux-hwe-5.13
plucky
dne
noble
dne
jammy
dne
focal
ignored
bionic
dne
xenial
dne
trusty
dne
linux-hwe-5.15
plucky
dne
noble
dne
jammy
dne
focal
ignored
bionic
dne
xenial
dne
trusty
dne
linux-hwe-5.19
plucky
dne
noble
dne
jammy
ignored
focal
dne
bionic
dne
xenial
dne
trusty
dne
linux-hwe-6.2
plucky
dne
noble
dne
jammy
ignored
focal
dne
bionic
dne
xenial
dne
trusty
dne
linux-hwe-6.5
plucky
dne
noble
dne
jammy
ignored
focal
dne
bionic
dne
xenial
dne
trusty
dne
linux-hwe-6.8
plucky
dne
noble
dne
jammy
needed
focal
dne
bionic
dne
xenial
dne
trusty
dne
linux-hwe-6.11
plucky
dne
noble
ignored
jammy
dne
focal
dne
bionic
dne
xenial
dne
trusty
dne
linux-hwe-6.14
plucky
dne
noble
needed
jammy
dne
focal
dne
bionic
dne
xenial
dne
trusty
dne
linux-hwe-edge
plucky
dne
noble
dne
jammy
dne
focal
dne
bionic
ignored
xenial
ignored
trusty
dne
linux-lts-xenial
plucky
dne
noble
dne
jammy
dne
focal
dne
bionic
dne
xenial
dne
trusty
ignored
linux-kvm
plucky
dne
noble
dne
jammy
needed
focal
ignored
bionic
ignored
xenial
ignored
trusty
dne
linux-allwinner-5.19
plucky
dne
noble
dne
jammy
ignored
focal
dne
bionic
dne
xenial
dne
trusty
dne
linux-aws-5.0
plucky
dne
noble
dne
jammy
dne
focal
dne
bionic
ignored
xenial
dne
trusty
dne
linux-aws-5.3
plucky
dne
noble
dne
jammy
dne
focal
dne
bionic
ignored
xenial
dne
trusty
dne
linux-aws-5.4
plucky
dne
noble
dne
jammy
dne
focal
dne
bionic
ignored
xenial
dne
trusty
dne
linux-aws-5.8
plucky
dne
noble
dne
jammy
dne
focal
ignored
bionic
dne
xenial
dne
trusty
dne
linux-aws-5.11
plucky
dne
noble
dne
jammy
dne
focal
ignored
bionic
dne
xenial
dne
trusty
dne
linux-aws-5.13
plucky
dne
noble
dne
jammy
dne
focal
ignored
bionic
dne
xenial
dne
trusty
dne
linux-aws-5.15
plucky
dne
noble
dne
jammy
dne
focal
ignored
bionic
dne
xenial
dne
trusty
dne
linux-aws-5.19
plucky
dne
noble
dne
jammy
ignored
focal
dne
bionic
dne
xenial
dne
trusty
dne
linux-aws-6.2
plucky
dne
noble
dne
jammy
ignored
focal
dne
bionic
dne
xenial
dne
trusty
dne
linux-aws-6.5
plucky
dne
noble
dne
jammy
ignored
focal
dne
bionic
dne
xenial
dne
trusty
dne
linux-aws-6.8
plucky
dne
noble
dne
jammy
needed
focal
dne
bionic
dne
xenial
dne
trusty
dne
linux-aws-6.14
plucky
dne
noble
needed
jammy
dne
focal
dne
bionic
dne
xenial
dne
trusty
dne
linux-aws-hwe
plucky
dne
noble
dne
jammy
dne
focal
dne
bionic
dne
xenial
ignored
trusty
dne
linux-azure
plucky
needed
noble
needed
jammy
needed
focal
ignored
bionic
ignored
xenial
ignored
trusty
ignored
linux-azure-4.15
plucky
dne
noble
dne
jammy
dne
focal
dne
bionic
ignored
xenial
dne
trusty
dne
linux-azure-5.3
plucky
dne
noble
dne
jammy
dne
focal
dne
bionic
ignored
xenial
dne
trusty
dne
linux-azure-5.4
plucky
dne
noble
dne
jammy
dne
focal
dne
bionic
ignored
xenial
dne
trusty
dne
linux-azure-5.8
plucky
dne
noble
dne
jammy
dne
focal
ignored
bionic
dne
xenial
dne
trusty
dne
linux-azure-5.11
plucky
dne
noble
dne
jammy
dne
focal
ignored
bionic
dne
xenial
dne
trusty
dne
linux-azure-5.13
plucky
dne
noble
dne
jammy
dne
focal
ignored
bionic
dne
xenial
dne
trusty
dne
linux-azure-5.15
plucky
dne
noble
dne
jammy
dne
focal
ignored
bionic
dne
xenial
dne
trusty
dne
linux-azure-5.19
plucky
dne
noble
dne
jammy
ignored
focal
dne
bionic
dne
xenial
dne
trusty
dne
linux-azure-6.2
plucky
dne
noble
dne
jammy
ignored
focal
dne
bionic
dne
xenial
dne
trusty
dne
linux-azure-6.5
plucky
dne
noble
dne
jammy
ignored
focal
dne
bionic
dne
xenial
dne
trusty
dne
linux-azure-6.8
plucky
dne
noble
dne
jammy
needed
focal
dne
bionic
dne
xenial
dne
trusty
dne
linux-azure-6.11
plucky
dne
noble
ignored
jammy
dne
focal
dne
bionic
dne
xenial
dne
trusty
dne
linux-azure-fde
plucky
dne
noble
dne
jammy
needed
focal
ignored
bionic
dne
xenial
dne
trusty
dne
linux-azure-fde-5.15
plucky
dne
noble
dne
jammy
dne
focal
not-affected
bionic
dne
xenial
dne
trusty
dne
linux-azure-fde-5.19
plucky
dne
noble
dne
jammy
ignored
focal
dne
bionic
dne
xenial
dne
trusty
dne
linux-azure-fde-6.2
plucky
dne
noble
dne
jammy
ignored
focal
dne
bionic
dne
xenial
dne
trusty
dne
linux-azure-nvidia
plucky
dne
noble
needed
jammy
dne
focal
dne
bionic
dne
xenial
dne
trusty
dne
linux-bluefield
plucky
dne
noble
dne
jammy
dne
focal
ignored
bionic
dne
xenial
dne
trusty
dne
linux-azure-edge
plucky
dne
noble
dne
jammy
dne
focal
dne
bionic
ignored
xenial
dne
trusty
dne
linux-fips
plucky
dne
noble
dne
jammy
needed
focal
needed
bionic
needed
xenial
needed
trusty
dne
linux-aws-fips
plucky
dne
noble
dne
jammy
needed
focal
needed
bionic
needed
xenial
dne
trusty
dne
linux-azure-fips
plucky
dne
noble
dne
jammy
needed
focal
needed
bionic
needed
xenial
dne
trusty
dne
linux-gcp-fips
plucky
dne
noble
dne
jammy
needed
focal
needed
bionic
needed
xenial
dne
trusty
dne
linux-gcp
plucky
needed
noble
needed
jammy
needed
focal
ignored
bionic
ignored
xenial
ignored
trusty
dne
linux-gcp-4.15
plucky
dne
noble
dne
jammy
dne
focal
dne
bionic
ignored
xenial
dne
trusty
dne
linux-gcp-5.3
plucky
dne
noble
dne
jammy
dne
focal
dne
bionic
ignored
xenial
dne
trusty
dne
linux-gcp-5.4
plucky
dne
noble
dne
jammy
dne
focal
dne
bionic
ignored
xenial
dne
trusty
dne
linux-gcp-5.8
plucky
dne
noble
dne
jammy
dne
focal
ignored
bionic
dne
xenial
dne
trusty
dne
linux-gcp-5.11
plucky
dne
noble
dne
jammy
dne
focal
ignored
bionic
dne
xenial
dne
trusty
dne
linux-gcp-5.13
plucky
dne
noble
dne
jammy
dne
focal
ignored
bionic
dne
xenial
dne
trusty
dne
linux-gcp-5.15
plucky
dne
noble
dne
jammy
dne
focal
ignored
bionic
dne
xenial
dne
trusty
dne
linux-gcp-5.19
plucky
dne
noble
dne
jammy
ignored
focal
dne
bionic
dne
xenial
dne
trusty
dne
linux-gcp-6.2
plucky
dne
noble
dne
jammy
ignored
focal
dne
bionic
dne
xenial
dne
trusty
dne
linux-gcp-6.5
plucky
dne
noble
dne
jammy
ignored
focal
dne
bionic
dne
xenial
dne
trusty
dne
linux-gcp-6.8
plucky
dne
noble
dne
jammy
needed
focal
dne
bionic
dne
xenial
dne
trusty
dne
linux-gcp-6.11
plucky
dne
noble
ignored
jammy
dne
focal
dne
bionic
dne
xenial
dne
trusty
dne
linux-gcp-6.14
plucky
dne
noble
needed
jammy
dne
focal
dne
bionic
dne
xenial
dne
trusty
dne
linux-gke
plucky
dne
noble
needed
jammy
needed
focal
ignored
bionic
dne
xenial
ignored
trusty
dne
linux-gke-4.15
plucky
dne
noble
dne
jammy
dne
focal
dne
bionic
ignored
xenial
dne
trusty
dne
linux-gke-5.4
plucky
dne
noble
dne
jammy
dne
focal
dne
bionic
ignored
xenial
dne
trusty
dne
linux-gke-5.15
plucky
dne
noble
dne
jammy
dne
focal
ignored
bionic
dne
xenial
dne
trusty
dne
linux-gkeop
plucky
dne
noble
needed
jammy
needed
focal
ignored
bionic
dne
xenial
dne
trusty
dne
linux-gkeop-5.4
plucky
dne
noble
dne
jammy
dne
focal
dne
bionic
ignored
xenial
dne
trusty
dne
linux-gkeop-5.15
plucky
dne
noble
dne
jammy
dne
focal
ignored
bionic
dne
xenial
dne
trusty
dne
linux-ibm
plucky
dne
noble
needed
jammy
needed
focal
ignored
bionic
dne
xenial
dne
trusty
dne
linux-ibm-5.4
plucky
dne
noble
dne
jammy
dne
focal
dne
bionic
ignored
xenial
dne
trusty
dne
linux-ibm-5.15
plucky
dne
noble
dne
jammy
dne
focal
ignored
bionic
dne
xenial
dne
trusty
dne
linux-ibm-6.8
plucky
dne
noble
dne
jammy
needed
focal
dne
bionic
dne
xenial
dne
trusty
dne
linux-intel-5.13
plucky
dne
noble
dne
jammy
dne
focal
ignored
bionic
dne
xenial
dne
trusty
dne
linux-intel-iotg
plucky
dne
noble
dne
jammy
needed
focal
dne
bionic
dne
xenial
dne
trusty
dne
linux-intel-iotg-5.15
plucky
dne
noble
dne
jammy
dne
focal
ignored
bionic
dne
xenial
dne
trusty
dne
linux-iot
plucky
dne
noble
dne
jammy
dne
focal
ignored
bionic
dne
xenial
dne
trusty
dne
linux-intel-iot-realtime
plucky
dne
noble
dne
jammy
needed
focal
dne
bionic
dne
xenial
dne
trusty
dne
linux-lowlatency
plucky
dne
noble
needed
jammy
needed
focal
dne
bionic
dne
xenial
dne
trusty
dne
linux-lowlatency-hwe-5.15
plucky
dne
noble
dne
jammy
dne
focal
ignored
bionic
dne
xenial
dne
trusty
dne
linux-lowlatency-hwe-5.19
plucky
dne
noble
dne
jammy
ignored
focal
dne
bionic
dne
xenial
dne
trusty
dne
linux-lowlatency-hwe-6.2
plucky
dne
noble
dne
jammy
ignored
focal
dne
bionic
dne
xenial
dne
trusty
dne
linux-lowlatency-hwe-6.5
plucky
dne
noble
dne
jammy
ignored
focal
dne
bionic
dne
xenial
dne
trusty
dne
linux-lowlatency-hwe-6.8
plucky
dne
noble
dne
jammy
needed
focal
dne
bionic
dne
xenial
dne
trusty
dne
linux-lowlatency-hwe-6.11
plucky
dne
noble
ignored
jammy
dne
focal
dne
bionic
dne
xenial
dne
trusty
dne
linux-nvidia
plucky
dne
noble
needed
jammy
needed
focal
dne
bionic
dne
xenial
dne
trusty
dne
linux-nvidia-6.2
plucky
dne
noble
dne
jammy
ignored
focal
dne
bionic
dne
xenial
dne
trusty
dne
linux-nvidia-6.5
plucky
dne
noble
dne
jammy
ignored
focal
dne
bionic
dne
xenial
dne
trusty
dne
linux-nvidia-6.8
plucky
dne
noble
dne
jammy
needed
focal
dne
bionic
dne
xenial
dne
trusty
dne
linux-nvidia-lowlatency
plucky
dne
noble
needed
jammy
dne
focal
dne
bionic
dne
xenial
dne
trusty
dne
linux-nvidia-tegra
plucky
dne
noble
needed
jammy
needed
focal
dne
bionic
dne
xenial
dne
trusty
dne
linux-nvidia-tegra-5.15
plucky
dne
noble
dne
jammy
dne
focal
ignored
bionic
dne
xenial
dne
trusty
dne
linux-nvidia-tegra-igx
plucky
dne
noble
dne
jammy
needed
focal
dne
bionic
dne
xenial
dne
trusty
dne
linux-oracle-5.0
plucky
dne
noble
dne
jammy
dne
focal
dne
bionic
ignored
xenial
dne
trusty
dne
linux-oracle-5.3
plucky
dne
noble
dne
jammy
dne
focal
dne
bionic
ignored
xenial
dne
trusty
dne
linux-oracle-5.4
plucky
dne
noble
dne
jammy
dne
focal
dne
bionic
ignored
xenial
dne
trusty
dne
linux-oracle-5.8
plucky
dne
noble
dne
jammy
dne
focal
ignored
bionic
dne
xenial
dne
trusty
dne
linux-oracle-5.11
plucky
dne
noble
dne
jammy
dne
focal
ignored
bionic
dne
xenial
dne
trusty
dne
linux-oracle-5.13
plucky
dne
noble
dne
jammy
dne
focal
ignored
bionic
dne
xenial
dne
trusty
dne
linux-oracle-5.15
plucky
dne
noble
dne
jammy
dne
focal
ignored
bionic
dne
xenial
dne
trusty
dne
linux-oracle-6.5
plucky
dne
noble
dne
jammy
ignored
focal
dne
bionic
dne
xenial
dne
trusty
dne
linux-oracle-6.8
plucky
dne
noble
dne
jammy
needed
focal
dne
bionic
dne
xenial
dne
trusty
dne
linux-oracle-6.14
plucky
dne
noble
needed
jammy
dne
focal
dne
bionic
dne
xenial
dne
trusty
dne
linux-oem
plucky
dne
noble
dne
jammy
dne
focal
dne
bionic
ignored
xenial
ignored
trusty
dne
linux-oem-5.6
plucky
dne
noble
dne
jammy
dne
focal
ignored
bionic
dne
xenial
dne
trusty
dne
linux-oem-5.10
plucky
dne
noble
dne
jammy
dne
focal
ignored
bionic
dne
xenial
dne
trusty
dne
linux-oem-5.13
plucky
dne
noble
dne
jammy
dne
focal
ignored
bionic
dne
xenial
dne
trusty
dne
linux-oem-5.14
plucky
dne
noble
dne
jammy
dne
focal
ignored
bionic
dne
xenial
dne
trusty
dne
linux-oem-5.17
plucky
dne
noble
dne
jammy
ignored
focal
dne
bionic
dne
xenial
dne
trusty
dne
linux-oem-6.0
plucky
dne
noble
dne
jammy
ignored
focal
dne
bionic
dne
xenial
dne
trusty
dne
linux-oem-6.1
plucky
dne
noble
dne
jammy
ignored
focal
dne
bionic
dne
xenial
dne
trusty
dne
linux-oem-6.5
plucky
dne
noble
dne
jammy
ignored
focal
dne
bionic
dne
xenial
dne
trusty
dne
linux-oem-6.8
plucky
dne
noble
ignored
jammy
dne
focal
dne
bionic
dne
xenial
dne
trusty
dne
linux-oem-6.11
plucky
dne
noble
needed
jammy
dne
focal
dne
bionic
dne
xenial
dne
trusty
dne
linux-oem-6.14
plucky
dne
noble
needed
jammy
dne
focal
dne
bionic
dne
xenial
dne
trusty
dne
linux-raspi2
plucky
dne
noble
dne
jammy
dne
focal
ignored
bionic
ignored
xenial
ignored
trusty
dne
linux-raspi-5.4
plucky
dne
noble
dne
jammy
dne
focal
dne
bionic
ignored
xenial
dne
trusty
dne
linux-raspi-realtime
plucky
dne
noble
needed
jammy
dne
focal
dne
bionic
dne
xenial
dne
trusty
dne
linux-riscv
plucky
needed
noble
ignored
jammy
ignored
focal
ignored
bionic
dne
xenial
dne
trusty
dne
linux-riscv-5.8
plucky
dne
noble
dne
jammy
dne
focal
ignored
bionic
dne
xenial
dne
trusty
dne
linux-riscv-5.11
plucky
dne
noble
dne
jammy
dne
focal
ignored
bionic
dne
xenial
dne
trusty
dne
linux-riscv-5.15
plucky
dne
noble
dne
jammy
dne
focal
ignored
bionic
dne
xenial
dne
trusty
dne
linux-riscv-5.19
plucky
dne
noble
dne
jammy
ignored
focal
dne
bionic
dne
xenial
dne
trusty
dne
linux-riscv-6.5
plucky
dne
noble
dne
jammy
ignored
focal
dne
bionic
dne
xenial
dne
trusty
dne
linux-riscv-6.8
plucky
dne
noble
dne
jammy
needed
focal
dne
bionic
dne
xenial
dne
trusty
dne
linux-riscv-6.14
plucky
dne
noble
needed
jammy
dne
focal
dne
bionic
dne
xenial
dne
trusty
dne
linux-starfive-5.19
plucky
dne
noble
dne
jammy
ignored
focal
dne
bionic
dne
xenial
dne
trusty
dne
linux-starfive-6.2
plucky
dne
noble
dne
jammy
ignored
focal
dne
bionic
dne
xenial
dne
trusty
dne
linux-starfive-6.5
plucky
dne
noble
dne
jammy
ignored
focal
dne
bionic
dne
xenial
dne
trusty
dne
linux-xilinx-zynqmp
plucky
dne
noble
dne
jammy
needed
focal
ignored
bionic
dne
xenial
dne
trusty
dne
linux
plucky
needed
noble
needed
jammy
needed
focal
ignored
bionic
ignored
xenial
ignored
trusty
ignored
linux-aws
plucky
needed
noble
needed
jammy
needed
focal
ignored
bionic
ignored
xenial
ignored
trusty
ignored
linux-oracle
plucky
needed
noble
needed
jammy
needed
focal
ignored
bionic
ignored
xenial
ignored
trusty
dne
linux-raspi
plucky
needed
noble
needed
jammy
needed
focal
ignored
bionic
dne
xenial
dne
trusty
dne
linux-realtime
plucky
needed
noble
needed
jammy
needed
focal
dne
bionic
dne
xenial
dne
trusty
dne
linux-intel
plucky
dne
noble
ignored
jammy
dne
focal
dne
bionic
dne
xenial
dne
trusty
dne
linux-nvidia-6.11
plucky
dne
noble
needed
jammy
dne
focal
dne
bionic
dne
xenial
dne
trusty
dne
linux-realtime-6.14
plucky
dne
noble
needed
jammy
dne
focal
dne
bionic
dne
xenial
dne
trusty
dne
linux-realtime-6.8
plucky
dne
noble
dne
jammy
needed
focal
dne
bionic
dne
xenial
dne
trusty
dne