CVE-2025-38457

Source
https://nvd.nist.gov/vuln/detail/CVE-2025-38457
Import Source
https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2025-38457.json
JSON Data
https://api.test.osv.dev/v1/vulns/CVE-2025-38457
Downstream
Related
Published
2025-07-25T15:27:36.226Z
Modified
2025-11-28T02:34:24.520581Z
Summary
net/sched: Abort __tc_modify_qdisc if parent class does not exist
Details

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

net/sched: Abort _tcmodify_qdisc if parent class does not exist

Lion's patch [1] revealed an ancient bug in the qdisc API. Whenever a user creates/modifies a qdisc specifying as a parent another qdisc, the qdisc API will, during grafting, detect that the user is not trying to attach to a class and reject. However grafting is performed after qdisccreate (and thus the qdiscs' init callback) is executed. In qdiscs that eventually call qdisctreereducebacklog during init or change (such as fq, hhf, choke, etc), an issue arises. For example, executing the following commands:

sudo tc qdisc add dev lo root handle a: htb default 2 sudo tc qdisc add dev lo parent a: handle beef fq

Qdiscs such as fq, hhf, choke, etc unconditionally invoke qdisctreereducebacklog() in their control path init() or change() which then causes a failure to find the child class; however, that does not stop the unconditional invocation of the assumed child qdisc's qlennotify with a null class. All these qdiscs make the assumption that class is non-null.

The solution is ensure that qdiscleaf() which looks up the parent class, and is invoked prior to qdisccreate(), should return failure on not finding the class. In this patch, we leverage qdiscleaf to return ERRPTRs whenever the parentid doesn't correspond to a class, so that we can detect it earlier on and abort before qdisc_create is called.

[1] https://lore.kernel.org/netdev/d912cbd7-193b-4269-9857-525bee8bbb6a@gmail.com/

Database specific
{
    "cna_assigner": "Linux",
    "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2025/38xxx/CVE-2025-38457.json"
}
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
5e50da01d0ce7ef0ba3ed6cfabd62f327da0aca6
Fixed
923a276c74e25073ae391e930792ac86a9f77f1e
Fixed
90436e72c9622c2f70389070088325a3232d339f
Fixed
25452638f133ac19d75af3f928327d8016952c8e
Fixed
23c165dde88eac405eebb59051ea1fe139a45803
Fixed
4c691d1b6b6dbd73f30ed9ee7da05f037b0c49af
Fixed
8ecd651ef24ab50123692a4e3e25db93cb11602a
Fixed
e28a383d6485c3bb51dc5953552f76c4dea33eea
Fixed
ffdde7bf5a439aaa1955ebd581f5c64ab1533963

Linux / Kernel

Package

Name
Kernel

Affected ranges

Type
ECOSYSTEM
Events
Introduced
2.6.20
Fixed
5.4.296
Type
ECOSYSTEM
Events
Introduced
5.5.0
Fixed
5.10.240
Type
ECOSYSTEM
Events
Introduced
5.11.0
Fixed
5.15.189
Type
ECOSYSTEM
Events
Introduced
5.16.0
Fixed
6.1.146
Type
ECOSYSTEM
Events
Introduced
6.2.0
Fixed
6.6.99
Type
ECOSYSTEM
Events
Introduced
6.7.0
Fixed
6.12.39
Type
ECOSYSTEM
Events
Introduced
6.13.0
Fixed
6.15.7