In the Linux kernel, the following vulnerability has been resolved:
net/sched: act_api: use RCU with deferred freeing for action lifecycle
When NEWTFILTER and DELFILTER are run concurrently it is possible to create a race with an associated action.
Let's illustrate with CPU0 running NEWTFILTER and CPU1 running DELFILTER:
0: mutex_lock() <-- holds the idr lock 0: rcu_read_lock() 0: p = idr_find(idr, index) <-- action p is valid (RCU protects IDR) 0: mutex_unlock() <-- releases the idr lock 1: refcount_dec_and_mutex_lock() <-- refcnt 1->0, mutex held 1: idr_remove(idr, index) <-- Action removed from IDR 1: mutex_unlock() <-- mutex released allowing us to delete the action 1: tcf_action_cleanup(p); kfree(p) <-- Kfrees p immediately, no deferral 0: refcount_inc_not_zero(&p->tcfa_refcnt) <-- ouch, UAF p points to freed memory
This patch fixes the race condition between NEWTFILTER and DELFILTER by adding struct rcu_head to tc_action used in the deferral and introducing a call_rcu() in the delete path to defer the final kfree().
Note: this is a revert of commit d7fb60b9cafb ("net_sched: get rid of tcfa_rcu") but also modernization/simplification to directly use kfree_rcu().
Let's illustrate the new restored code path:
0: rcu_read_lock() 1: refcount_dec_and_mutex_lock() <-- refcnt 1->0, mutex held 1: idr_remove(idr, index) 1: mutex_unlock() 1: call_rcu(&p->tcfa_rcu, tcf_action_rcu_free) <-- defer kfree after grace period 0: p = idr_find(idr, index) 0: refcount_inc_not_zero(&p->tcfa_refcnt) <-- fails, refcnt already 0 1: rcu_read_unlock() <-- release so freeing can run after grace period
After CPU1 calls idr_remove(), the object is no longer reachable through the IDR. CPU0's subsequent idr_find() will return NULL, and even if it still held a stale pointer, the immediate kfree() is now deferred until after the RCU grace period, so no UAF can occur.
CVSS Details
- CVSS 3.1 Base Score: 7.8
- CVSS 3.1 Vector: (CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H)
Covered by Rapid7
| Product | Vendor Advisory | Solution File | Added | Published |
|---|---|---|---|---|
| Amazon Linux Ami 2 | — | Upgrade kernel-develUpgrade kernel-debuginfo-common-aarch64Upgrade kernel-toolsUpgrade kernel-tools-debuginfoUpgrade bpftoolUpgrade kernel-livepatch-5.10.259-258.1043Upgrade kernel-livepatch-5.15.210-148.245Upgrade kernel-tools-develUpgrade perfUpgrade python-perfUpgrade kernel-headersUpgrade kernelUpgrade kernel-debuginfo-common-x86_64Upgrade perf-debuginfoUpgrade python-perf-debuginfoUpgrade bpftool-debuginfoUpgrade kernel-debuginfo | Jul 8, 2026 | Jul 8, 2026 |
| Amazon_linux_2023 | — | Upgrade kernel-debuginfo-common-x86_64Upgrade kernel-toolsUpgrade kernel6.12-tools-debuginfoUpgrade kernel-livepatch-6.12.94-123.174Upgrade kernel6.18-headersUpgrade bpftool6.12Upgrade kernel-modules-extra-commonUpgrade perf-debuginfoUpgrade kernel6.18-debuginfo-common-x86_64Upgrade perf6.12Upgrade bpftool6.12-debuginfoUpgrade bpftool6.18-debuginfoUpgrade kernel6.18-tools-debuginfoUpgrade python3-perf6.18Upgrade kernel6.18-debuginfoUpgrade python3-perf6.12-debuginfoUpgrade python3-perf6.18-debuginfoUpgrade kernel-livepatch-6.18.36-69.134Upgrade kernel6.18-develUpgrade kernel6.18-tools-develUpgrade kernel-develUpgrade kernel6.12Upgrade kernel-tools-debuginfoUpgrade kernel-livepatch-6.1.176-220.358Upgrade microvm-kernel6.18Upgrade kernel6.18-modules-extra-commonUpgrade python3-perf6.12Upgrade perf6.18Upgrade kernel6.12-toolsUpgrade kernel-debuginfo-common-aarch64Upgrade bpftoolUpgrade kernel6.12-tools-develUpgrade kernel-modules-extraUpgrade kernel-debuginfoUpgrade kernelUpgrade perf6.12-debuginfoUpgrade perfUpgrade kernel6.18-debuginfo-common-aarch64Upgrade kernel6.12-debuginfo-common-x86_64Upgrade perf6.18-debuginfoUpgrade python3-perf-debuginfoUpgrade kernel6.18-modules-extraUpgrade kernel6.12-debuginfo-common-aarch64Upgrade kernel-tools-develUpgrade bpftool6.18Upgrade bpftool-debuginfoUpgrade kernel-headersUpgrade kernel6.18-toolsUpgrade python3-perfUpgrade kernel6.12-headersUpgrade kernel6.12-modules-extra-commonUpgrade kernel6.12-modules-extraUpgrade kernel6.12-develUpgrade kernel6.18Upgrade kernel6.12-debuginfo | Jul 8, 2026 | Jun 25, 2026 |
| Debian | — | Upgrade linux-6.1Upgrade linux | Jul 5, 2026 | Jul 5, 2026 |
| Redhat_linux | — | No solution exists | Jul 17, 2026 | Jun 25, 2026 |
| Vmware Photon_os | — | Use 'tdnf update' to upgrade all packages to the latest version. | Jul 10, 2026 | Jun 25, 2026 |
Prioritise with Active Threat Intelligence
With curated Threat Intelligence, you can see which vulnerabilities truly put you at risk, prioritize what matters most, and act before attackers do.
Explore Intelligence Hub