CVE-2026-98811: net/sched: cls_api: reclaim an empty proto on the error path

Published Oct 18, 2026
·
Updated

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

net/sched: clsapi: reclaim an empty proto on the error path

Two racing tc filter add requests on the same chain/prio of an unlocked classifier both run change() on the shared proto and both can fail: the winner's tcfchaintpdeleteempty() attempt gives up because the loser's handle is still in the idr, and the loser's error path drops only its own reference without a second reclamation attempt. The empty proto stays linked in the chain, holding the chain reference, a block reference and the classifier module reference until the chain or block is torn down.

Reclaim the proto on the error path of any failed request that holds a proto reference. The reclamation is emptiness-gated: tcfchaintpdeleteempty() unlinks the proto only when deleteempty() admits it is empty, so a live shared proto is never unlinked. A proto the request created is reclaimed unconditionally - it is the only owner, so marking it for deletion is safe even without a deleteempty callback. Classifiers without one (the check marks the proto unconditionally) are rtnl-serialized, so the raced window this guard closes cannot arise for them.

This is a follow-up to commit d4e359b3608a ("net/sched: clsapi: fix teardown of an adopted proto on insert-race loss"), which stopped the loser of the insert race from unlinking the winner's live proto but left the empty-proto residual in place.

Conditions to recreate: - CONFIGNETCLSFLOWER=y; veth pair - tc qdisc add dev veth0 ingress - two concurrent tc filter add dev veth0 ingress protocol ip pref 1 flower skipsw ... action drop (both fail in flhwreplacefilter after publishing their handle in the idr); repeat in a loop - an empty flower tp stays linked after both requests fail; visible as a bare filter protocol ip pref 1 flower chain 0 header in tc filter show with no filter entries - CAPNETADMIN (namespace-local via unshare -Urn suffices)

Affected Software

1 affected component
Linux Linux kernel

Event History

Oct 18, 2026
CVE Published
via MITRE·03:48 PM
Data Sourced
via MITRE·03:48 PM
Description
Data Sourced
via NVD·04:17 PM
Description

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203