Linux: net/sched: act_ct: don't WARN on benign flow_offload_alloc() failure
What fixes it
- 424ba52c0058deeb940d02cba52eb0aeb288db33LinuxCVE List
- 00734f3684fcec42c319bedfe68a5d357c720b53LinuxCVE List
- 650787233c2fd6e515a7c5f371019a9fa080ccd2LinuxCVE List
- 47abe7a5c4eb53269aca3506446f851572a059a3LinuxCVE List
A fixed version on one release line is not the upgrade target for every line. Check your exact version and any vendor backports.
Description
In the Linux kernel, the following vulnerability has been resolved:
net/sched: act_ct: don't WARN on benign flow_offload_alloc() failure
flow_offload_alloc() returns NULL when the conntrack entry is dying (e.g. raced with a conntrack flush) or when the GFP_ATOMIC allocation fails; both are expected under load and neither is a kernel bug. This path runs from softirq on every committed packet, so with panic_on_warn=1 an unprivileged user can panic the box just by racing a conntrack flush against a tc ... action ct commit classifier.
Reproduced with a custom repro under QEMU: a small, fixed set of UDP flows through tc filter ... action ct commit on lo, raced against threads flooding bare ctnetlink CT_DELETE (flush) requests. Hits WARNING: net/sched/act_ct.c:437 (tcf_ct_flow_table_add(), inlined into tcf_ct_act() in this build) within ~15s on the unpatched kernel; same setup is clean on the patched kernel. The fix itself is behavior-preserving: both branches already did goto err_alloc before and after, only the WARN is removed.
Text from CVE List
Affected versions 18
- Linuxaffected: 64ff70b80fd403110b67dd9f7184a604fdb0da43 before e8fcf3f08834e939b797311742ee72b1e2a08096CVE List
- Linuxaffected: 64ff70b80fd403110b67dd9f7184a604fdb0da43 before af475f599270e59313552e6c6f3af8507da672b8CVE List
- Linuxaffected: 64ff70b80fd403110b67dd9f7184a604fdb0da43 before 424ba52c0058deeb940d02cba52eb0aeb288db33CVE List
- Linuxaffected: 64ff70b80fd403110b67dd9f7184a604fdb0da43 before d512c484bd93a5f2794aa03c9faeb7bcb82dbd4aCVE List
- Linuxaffected: 64ff70b80fd403110b67dd9f7184a604fdb0da43 before d805560ad69cb266d669341ca01e26bffb0d2c67CVE List
- Linuxaffected: 64ff70b80fd403110b67dd9f7184a604fdb0da43 before 00734f3684fcec42c319bedfe68a5d357c720b53CVE List
- Linuxaffected: 64ff70b80fd403110b67dd9f7184a604fdb0da43 before 650787233c2fd6e515a7c5f371019a9fa080ccd2CVE List
- Linuxaffected: 64ff70b80fd403110b67dd9f7184a604fdb0da43 before 47abe7a5c4eb53269aca3506446f851572a059a3CVE List
- Linuxaffected: 5.7CVE List
- Linuxunaffected: all versions before 5.7CVE List
- Linuxunaffected: 5.10.271 through 5.10.*CVE List
- Linuxunaffected: 5.15.222 through 5.15.*CVE List
- Linuxunaffected: 6.1.189 through 6.1.*CVE List
- Linuxunaffected: 6.6.158 through 6.6.*CVE List
- Linuxunaffected: 6.12.112 through 6.12.*CVE List
- Linuxunaffected: 6.18.55 through 6.18.*CVE List
- Linuxunaffected: 7.2.9 through 7.2.*CVE List
- Linuxunaffected: 7.3CVE List
References 8
- git.kernel.org/stable/c/e8fcf3f08834e939b797311742ee72b1e2a08096Referencevia CVE List
- git.kernel.org/stable/c/af475f599270e59313552e6c6f3af8507da672b8Referencevia CVE List
- git.kernel.org/stable/c/424ba52c0058deeb940d02cba52eb0aeb288db33Referencevia CVE List
- git.kernel.org/stable/c/d512c484bd93a5f2794aa03c9faeb7bcb82dbd4aReferencevia CVE List
- git.kernel.org/stable/c/d805560ad69cb266d669341ca01e26bffb0d2c67Referencevia CVE List
- git.kernel.org/stable/c/00734f3684fcec42c319bedfe68a5d357c720b53Referencevia CVE List
- git.kernel.org/stable/c/650787233c2fd6e515a7c5f371019a9fa080ccd2Referencevia CVE List
- git.kernel.org/stable/c/47abe7a5c4eb53269aca3506446f851572a059a3Referencevia CVE List