Description
In the Linux kernel, the following vulnerability has been resolved: net/sched: sch_taprio: Replace direct dequeue call with peek and qdisc_dequeue_peeked When taprio's software path peeks a non-work-conserving child qdisc, the child stashes the peeked skb in its gso_skb; taprio_dequeue_from_txq() then takes the packet with a direct child ->dequeue() call, which ignores that stash, orphans the peeked skb and desyncs the child's qlen/backlog. With a qfq child this re-enters the child on an emptied list and dereferences NULL, panicking the kernel from softirq on ordinary egress. Take the packet through qdisc_dequeue_peeked(), as sch_red and sch_sfb now do. The helper returns the child's stashed skb first and is a no-op when there is none, so a work-conserving child is unaffected and the gated path now consumes the skb whose length was charged to the budget.
Affected products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
Linux Linux
Default version status: unaffected
5a781ccbd19e4664babcbe4b4ead7aa2b9283d22 to < 51f8af240aed903e988755af33d7491030b50ae9affected5a781ccbd19e4664babcbe4b4ead7aa2b9283d22 to < 17ab5f76f3899f67e5569722f334591f4b88b17baffected5a781ccbd19e4664babcbe4b4ead7aa2b9283d22 to < f60d5c12e0551012cee5c272b0bcbcc78f7bb506affected5a781ccbd19e4664babcbe4b4ead7aa2b9283d22 to < 6ee5a7665a9080bcb05d703bf981a579436fd05eaffected5a781ccbd19e4664babcbe4b4ead7aa2b9283d22 to < 18d580cb00c55805633bae45e90cf22ed6b8e424affected5a781ccbd19e4664babcbe4b4ead7aa2b9283d22 to < e2b7ee61989f2d39df6c2cc06f9db1aea69bdb09affected5a781ccbd19e4664babcbe4b4ead7aa2b9283d22 to < 2dcebbd1ad2e180fe7b98bf346ced69a872e11e6affected5a781ccbd19e4664babcbe4b4ead7aa2b9283d22 to < e056e1dfcddca877dd46d704e8ec9860cfc9ec44affected
Linux Linux
Default version status: affected
4.20affected0 to < 4.20unaffected5.10.266 to ≤ 5.10.*unaffected5.15.217 to ≤ 5.15.*unaffected6.1.184 to ≤ 6.1.*unaffected6.6.145 to ≤ 6.6.*unaffected6.12.97 to ≤ 6.12.*unaffected6.18.40 to ≤ 6.18.*unaffected7.1.5 to ≤ 7.1.*unaffected7.2 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/51f8af240aed903e988755af33d7491030b50ae9 ↗
- https://git.kernel.org/stable/c/17ab5f76f3899f67e5569722f334591f4b88b17b ↗
- https://git.kernel.org/stable/c/f60d5c12e0551012cee5c272b0bcbcc78f7bb506 ↗
- https://git.kernel.org/stable/c/6ee5a7665a9080bcb05d703bf981a579436fd05e ↗
- https://git.kernel.org/stable/c/18d580cb00c55805633bae45e90cf22ed6b8e424 ↗
- https://git.kernel.org/stable/c/e2b7ee61989f2d39df6c2cc06f9db1aea69bdb09 ↗
- https://git.kernel.org/stable/c/2dcebbd1ad2e180fe7b98bf346ced69a872e11e6 ↗
- https://git.kernel.org/stable/c/e056e1dfcddca877dd46d704e8ec9860cfc9ec44 ↗