CVE-2026-98427: net/sched: codel: bound the dropping loop per dequeue call
In the Linux kernel, the following vulnerability has been resolved:
net/sched: codel: bound the dropping loop per dequeue call
The CoDel control law schedules the next drop one interval/sqrt(count) after the previous drop, using the configured interval (codelparams.interval). For very small intervals the scheduled step rounds down to zero, so the dropping loop in codeldequeue() never advances and drains the entire backlog under the qdisc lock in one call - an unprivileged user can trigger a soft lockup this way.
Fix in the shared codel code used by both codel and fqcodel:
1. Make the control-law step at least 1 tick so the dropping loop always moves forward.
2. Cap the dropping loop at CODELMAXDROPSPERDEQUEUE (256) drops per codeldequeue() call, resyncing dropnext to now when the cap is hit: the catch-up owed to the loop grows with the idle gap and the backlog, which no interval threshold can bound. This is a deliberate behaviour change after long idle gaps.
The cap applies to fqcodel (4b549a2ef4be) and the mac80211 TXQ path (fixed interval, cap only).
The target sojourn delay (codelparams.target) is not validated: it does not feed the control law, so a sub-tick value is aggressive rather than deadlock-prone.
Conditions to recreate the bug: - tc qdisc add dev lo root handle 1: tbf rate 1kbit burst 2kb limit 1000000 - tc qdisc add dev lo parent 1:1 handle 10: codel interval 2us target 1ms noecn limit 1000000 (same for fqcodel) - unpatched kernel: tc accepts it; a UDP flood under the 1kbit tbf soft-lockups (watchdog: BUG: soft lockup) while one codeldequeue() call drops the backlog under the qdisc lock - patched kernel: same setup, at most 256 drops per dequeue call, no soft lockup
Testing: claim reproducer and interval 2us/3us variants run clean; tdc qdisc category passes (see the selftests patch).
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade to a fixed release to a version that resolves this vulnerability.
Patch 4b549a2ef4be
Event History
Frequently Asked Questions
Who is realistically exposed to this issue?
Systems using the Linux kernel CoDel or fq_codel queueing disciplines are exposed. The shared CoDel code is affected, and the cap also applies to the mac80211 TXQ path.
What does an attacker need to do to trigger the problem?
An unprivileged user must be able to cause CoDel to operate with a very small configured interval and create backlog conditions that enter the dropping loop. When the calculated control-law step rounds down to zero, the loop can drain the backlog while holding the qdisc lock and trigger a soft lockup.
What changes in the resolved behavior?
The control-law step is forced to at least one tick, preventing the drop schedule from failing to advance. Each codel_dequeue() call is also limited to 256 drops; when that limit is reached, drop_next is resynchronized to the current time.
Is configuring only a very small target delay sufficient to trigger it?
No. The target sojourn delay is not part of the control law, so a sub-tick target value does not cause this behavior. The relevant setting is the configured CoDel interval.