CVE-2026-90248

Source
https://cve.org/CVERecord?id=CVE-2026-90248
Import Source
https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-90248.json
JSON Data
https://api.osv.dev/v1/vulns/CVE-2026-90248
Downstream
Published
2026-09-17T16:07:50Z
Modified
2026-09-19T03:47:25Z
Summary
net/sched: cls_api: fix teardown of an adopted proto on insert-race loss
Details

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

net/sched: cls_api: fix teardown of an adopted proto on insert-race loss

In tc_new_tfilter() the create branch sets tp_created = 1 before calling tcf_chain_tp_insert_unique(). When the caller loses the race (another request inserted a proto at the same chain/prio first), insert_unique() destroys the caller's own tp_new and returns the winner's proto with an extra reference. tp_created was never cleared, so the loser's errout path treated the winner's live proto as its own and called tcf_chain_tp_delete_empty() on it, silently unlinking an active classifier that the winning request already advertised via RTM_NEWTFILTER.

Track the outcome of the insert step in a single tri-state variable so each errout path reacts correctly:

  • TP_NOT_CREATED: no proto created; pursue the old path.
  • TP_CREATED: proto inserted successfully; same code path as before.
  • TP_NOT_OWNED: New - lost the insert race; tp is another request's proto (chain ref already released by tp_new's destroy)

Both errout reactions are single expressions derived from the state.

This fix is motivated by the Sashiko's automated review of Patch (net/sched: cls_api: Always acquire rtnl_lock when destroying locked classifiers) [1][2]. The review identified the silent-unlink behaviour of an adopted proto's teardown when a request loses the tcf_chain_tp_insert_unique() race.

[1] https://sashiko.dev/#/patchset/20260801125632.360365-1-jhs%40mojatatu.com [2] https://netdev-ai.bots.linux.dev/sashiko/#/patchset/20260801125632.360365-1-jhs%40mojatatu.com

Database specific
{
    "cna_assigner": "Linux",
    "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/90xxx/CVE-2026-90248.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
8b64678e0af8f4d62a40149baedebe78503a5255
Fixed
a68e664ddf16ecae6d769d6a2eb356f8abab75c9
Fixed
df02b6dc136af45e92ee4c86f4aa6c9a60790b1e
Fixed
bee2208276c8e0e40a249ffdcf6e5434a79a847c
Fixed
219c87aeefdcc8c1caf28cc99e9b361ce7393d3a
Fixed
bbe2fd6d77df630356185406a97317f6aa6a92cf
Fixed
dc8b33b819cb02a75936940c120aa669ad89942d
Fixed
d4e359b3608a0e184bbe8d61a5c3b50d0831c44a

Database specific

source
"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-90248.json"

Linux / Kernel

Package

Name
Kernel

Affected ranges

Type
ECOSYSTEM
Events
Introduced
5.1.0
Fixed
5.15.221
Type
ECOSYSTEM
Events
Introduced
5.16.0
Fixed
6.1.188
Type
ECOSYSTEM
Events
Introduced
6.2.0
Fixed
6.6.157
Type
ECOSYSTEM
Events
Introduced
6.7.0
Fixed
6.12.110
Type
ECOSYSTEM
Events
Introduced
6.13.0
Fixed
6.18.52
Type
ECOSYSTEM
Events
Introduced
6.19.0
Fixed
7.2.6

Database specific

source
"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-90248.json"