CVE-2025-38468

Source
https://cve.org/CVERecord?id=CVE-2025-38468
Import Source
https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2025-38468.json
JSON Data
https://api.test.osv.dev/v1/vulns/CVE-2025-38468
Downstream
Related
Published
2025-07-28T11:12:20.188Z
Modified
2026-05-28T03:52:45.589643447Z
Summary
net/sched: Return NULL when htb_lookup_leaf encounters an empty rbtree
Details

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

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

htblookupleaf 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. htbdequeue calls htbdequeue_tree which calls the dequeue handler on the selected leaf qdisc
  2. netem_dequeue calls enqueue on the child qdisc
  3. blackholeenqueue drops the packet and returns a value that is not just NETXMIT_SUCCESS
  4. Because of this, netemdequeue calls qdisctreereducebacklog, and since qlen is now 0, it calls htbqlennotify -> htbdeactivate -> htbdeactiviateprios -> htbremoveclassfromrow -> htbsaferberase
  5. As this is the only class in the selected hprio rbtree, __rbchangechild in _rberaseaugmented sets the rbroot pointer to NULL
  6. Because blackholedequeue returns NULL, netemdequeue returns NULL, which causes htbdequeuetree to call htblookupleaf with the same hprio rbtree, and fail the BUG_ON

The function graph for this scenario is shown here: 0) | htbenqueue() { 0) + 13.635 us | netemenqueue(); 0) 4.719 us | htbactivateprios(); 0) # 2249.199 us | } 0) | htbdequeue() { 0) 2.355 us | htblookupleaf(); 0) | netemdequeue() { 0) + 11.061 us | blackholeenqueue(); 0) | qdisctreereducebacklog() { 0) | qdisclookuprcu() { 0) 1.873 us | qdiscmatchfromroot(); 0) 6.292 us | } 0) 1.894 us | htbsearch(); 0) | htbqlennotify() { 0) 2.655 us | htbdeactivateprios(); 0) 6.933 us | } 0) + 25.227 us | } 0) 1.983 us | blackholedequeue(); 0) + 86.553 us | } 0) # 2932.761 us | qdiscwarnnonwc(); 0) | htblookupleaf() { 0) | BUGON();


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

We can fix this just by returning NULL instead of the BUGON, as htbdequeuetree returns NULL when htblookup_leaf returns NULL.

[1] https://lore.kernel.org/netdev/pF5XOOIim0IuEfhI-SOxTgRvNoDwuux7UHKnE_Y5-zVd4wmGvNk2ceHjKb8ORnzw0cGwfmVu42g9dL7XyJLf1NEzaztboTWcm0Ogxuojoeo=@willsroot.io/

Database specific
{
    "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2025/38xxx/CVE-2025-38468.json",
    "cna_assigner": "Linux"
}
References

Affected packages

Git / git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git

Affected ranges

Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
512bb43eb5422ee69a1be05ea0d89dc074fac9a2
Fixed
fed3570e548a6c9f95c5f4c9e1a7afc1679fd90d
Fixed
5c0506cd1b1a3b145bda2612bbf7fe78d186c355
Fixed
850226aef8d28a00cf966ef26d2f8f2bff344535
Fixed
890a5d423ef0a7bd13447ceaffad21189f557301
Fixed
7ff2d83ecf2619060f30ecf9fad4f2a700fca344
Fixed
e5c480dc62a3025b8428d4818e722da30ad6804f
Fixed
3691f84269a23f7edd263e9b6edbc27b7ae332f4
Fixed
0e1d5d9b5c5966e2e42e298670808590db5ed628

Database specific

source
"https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2025-38468.json"

Linux / Kernel

Package

Name
Kernel

Affected ranges

Type
ECOSYSTEM
Events
Introduced
2.6.29
Fixed
5.4.297
Type
ECOSYSTEM
Events
Introduced
5.5.0
Fixed
5.10.241
Type
ECOSYSTEM
Events
Introduced
5.11.0
Fixed
5.15.190
Type
ECOSYSTEM
Events
Introduced
5.16.0
Fixed
6.1.147
Type
ECOSYSTEM
Events
Introduced
6.2.0
Fixed
6.6.100
Type
ECOSYSTEM
Events
Introduced
6.7.0
Fixed
6.12.40
Type
ECOSYSTEM
Events
Introduced
6.13.0
Fixed
6.15.8

Database specific

source
"https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2025-38468.json"