Description
In the Linux kernel, the following vulnerability has been resolved: net/sched: sch_cake: Fix incorrect qlen reduction in cake_drop In cake_drop(), qdisc_tree_reduce_backlog() is used to update the qlen and backlog of the qdisc hierarchy. Its caller, cake_enqueue(), assumes that the parent qdisc will enqueue the current packet. However, this assumption breaks when cake_enqueue() returns NET_XMIT_CN: the parent qdisc stops enqueuing current packet, leaving the tree qlen/backlog accounting inconsistent. This mismatch can lead to a NULL dereference (e.g., when the parent Qdisc is qfq_qdisc). This patch computes the qlen/backlog delta in a more robust way by observing the difference before and after the series of cake_drop() calls, and then compensates the qdisc tree accounting if cake_enqueue() returns NET_XMIT_CN. To ensure correct compensation when ACK thinning is enabled, a new variable is introduced to keep qlen unchanged.
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
de04ddd2980b48caa8d7e24a7db2742917a8b280 to < a3f4e3de41a3f115db35276c6b186ccbc913934aaffected0dacfc5372e314d1219f03e64dde3ab495a5a25e to < 38abf6e931b169ea88d7529b49096f53a5dcf8feaffected710866fc0a64eafcb8bacd91bcb1329eb7e5035f to < fcb91be52eb6e92e00b533ebd7c77fecada537e1affectedaa12ee1c1bd260943fd6ab556d8635811c332eeb to < d01f0e072dadb02fe10f436b940dd957aff0d7d4affectedff57186b2cc39766672c4c0332323933e5faaa88 to < 0b6216f9b3d1c33c76f74511026e5de5385ee520affected15de71d06a400f7fdc15bf377a2552b0ec437cf5 to < 529c284cc2815c8350860e9a31722050fe7117cbaffected15de71d06a400f7fdc15bf377a2552b0ec437cf5 to < 3ed6c458530a547ed0c9ea0b02b19bab620be88baffected15de71d06a400f7fdc15bf377a2552b0ec437cf5 to < 9fefc78f7f02d71810776fdeb119a05a946a27ccaffected7689ab22de36f8db19095f6bdf11f28cfde92f5caffected62d591dde4defb1333d202410609c4ddeae060b3affected5.10.241 to < 5.10.248affected5.15.190 to < 5.15.198affected6.1.149 to < 6.1.160affected6.6.103 to < 6.6.120affected6.12.44 to < 6.12.63affected5.4.297 to < 5.5affected6.16.4 to < 6.17affected
Linux Linux
Default version status: affected
6.17affected0 to < 6.17unaffected5.10.248 to ≤ 5.10.*unaffected5.15.198 to ≤ 5.15.*unaffected6.1.160 to ≤ 6.1.*unaffected6.6.120 to ≤ 6.6.*unaffected6.12.63 to ≤ 6.12.*unaffected6.17.13 to ≤ 6.17.*unaffected6.18.2 to ≤ 6.18.*unaffected6.19 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/a3f4e3de41a3f115db35276c6b186ccbc913934a ↗
- https://git.kernel.org/stable/c/38abf6e931b169ea88d7529b49096f53a5dcf8fe ↗
- https://git.kernel.org/stable/c/fcb91be52eb6e92e00b533ebd7c77fecada537e1 ↗
- https://git.kernel.org/stable/c/d01f0e072dadb02fe10f436b940dd957aff0d7d4 ↗
- https://git.kernel.org/stable/c/0b6216f9b3d1c33c76f74511026e5de5385ee520 ↗
- https://git.kernel.org/stable/c/529c284cc2815c8350860e9a31722050fe7117cb ↗
- https://git.kernel.org/stable/c/3ed6c458530a547ed0c9ea0b02b19bab620be88b ↗
- https://git.kernel.org/stable/c/9fefc78f7f02d71810776fdeb119a05a946a27cc ↗