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-debuginfoUpgrade kernel-debuginfo-common-x86_64Upgrade kernelUpgrade kernel-headersUpgrade python-perf-debuginfoUpgrade python-perfUpgrade bpftool-debuginfoUpgrade perf-debuginfoUpgrade bpftoolUpgrade perfUpgrade kernel-toolsUpgrade kernel-livepatch-5.10.259-258.1043Upgrade kernel-tools-develUpgrade kernel-livepatch-5.15.210-148.245Upgrade kernel-debuginfo-common-aarch64Upgrade kernel-tools-debuginfoUpgrade kernel-devel | Jul 8, 2026 | Jul 8, 2026 |
| Amazon_linux_2023 | — | Upgrade kernel-livepatch-6.1.176-220.358Upgrade kernel6.12-debuginfoUpgrade bpftoolUpgrade perf6.18Upgrade kernel-headersUpgrade kernel6.12-debuginfo-common-x86_64Upgrade bpftool6.18Upgrade perf6.18-debuginfoUpgrade kernel6.12-modules-extra-commonUpgrade bpftool-debuginfoUpgrade kernel-tools-develUpgrade kernel6.18-toolsUpgrade python3-perfUpgrade kernel-develUpgrade kernel6.12-develUpgrade kernel6.18-debuginfo-common-aarch64Upgrade perfUpgrade perf6.12-debuginfoUpgrade kernel6.12-modules-extraUpgrade microvm-kernel6.18Upgrade kernel6.12Upgrade kernel6.18-modules-extra-commonUpgrade kernel6.12-tools-develUpgrade kernelUpgrade kernel6.12-headersUpgrade kernel6.18-modules-extraUpgrade kernel-tools-debuginfoUpgrade python3-perf-debuginfoUpgrade kernel-debuginfoUpgrade kernel6.18Upgrade kernel-debuginfo-common-aarch64Upgrade python3-perf6.12Upgrade kernel6.12-toolsUpgrade kernel6.12-debuginfo-common-aarch64Upgrade kernel-modules-extraUpgrade bpftool6.12-debuginfoUpgrade kernel-toolsUpgrade python3-perf6.18-debuginfoUpgrade kernel6.18-tools-debuginfoUpgrade perf6.12Upgrade bpftool6.18-debuginfoUpgrade kernel6.18-debuginfo-common-x86_64Upgrade kernel-debuginfo-common-x86_64Upgrade kernel6.12-tools-debuginfoUpgrade bpftool6.12Upgrade kernel6.18-headersUpgrade kernel-livepatch-6.12.94-123.174Upgrade kernel-modules-extra-commonUpgrade perf-debuginfoUpgrade python3-perf6.12-debuginfoUpgrade kernel6.18-debuginfoUpgrade python3-perf6.18Upgrade kernel6.18-develUpgrade kernel-livepatch-6.18.36-69.134Upgrade kernel6.18-tools-devel | Jul 8, 2026 | Jun 25, 2026 |
| Debian | — | Upgrade linux-6.1Upgrade linux | Jul 5, 2026 | Jul 5, 2026 |
| Redhat_linux | — | No solution existsUpgrade kernel-rtUpgrade kernel | Jul 17, 2026 | Jun 25, 2026 |
| Rocky_linux | — | Upgrade kernel-tools-debuginfoUpgrade kernel-zfcpdump-modules-coreUpgrade kernel-debuginfoUpgrade kernel-debug-modulesUpgrade kernel-modules-coreUpgrade python3-perf-debuginfoUpgrade kernel-rt-modules-extraUpgrade kernel-zfcpdump-debuginfoUpgrade kernel-debug-develUpgrade kernel-debugUpgrade kernelUpgrade kernel-debug-modules-extraUpgrade kernel-debuginfo-common-x86_64Upgrade kernel-rt-debug-debuginfoUpgrade kernel-rt-develUpgrade kernel-rt-debug-coreUpgrade kernel-rt-coreUpgrade kernel-tools-libs-develUpgrade kernel-debug-devel-matchedUpgrade kernel-zfcpdump-develUpgrade kernel-debug-modules-coreUpgrade kernel-tools-libsUpgrade kernel-zfcpdump-modulesUpgrade rtlaUpgrade kernel-rt-debug-modulesUpgrade kernel-develUpgrade kernel-rt-debug-modules-extraUpgrade kernel-zfcpdump-devel-matchedUpgrade kernel-coreUpgrade perf-debuginfoUpgrade kernel-rt-modulesUpgrade libperf-debuginfoUpgrade kernel-rt-debug-develUpgrade perfUpgrade kernel-debug-coreUpgrade kernel-uki-virt-addonsUpgrade kernel-rt-debugUpgrade kernel-rtUpgrade kernel-rt-debuginfoUpgrade kernel-devel-matchedUpgrade kernel-debug-debuginfoUpgrade rvUpgrade kernel-modulesUpgrade kernel-toolsUpgrade kernel-debug-uki-virtUpgrade python3-perfUpgrade libperfUpgrade kernel-zfcpdump-coreUpgrade kernel-zfcpdumpUpgrade kernel-uki-virtUpgrade kernel-rt-modules-coreUpgrade kernel-modules-extraUpgrade kernel-zfcpdump-modules-extraUpgrade kernel-rt-debug-modules-coreUpgrade kernel-debuginfo-common-s390x | Aug 17, 2026 | Aug 14, 2026 |
| Ubuntu | — | Upgrade linux-image-generic-hwe-26.04Upgrade linux-image-virtual-7.0Upgrade linux-image-realtime-64k-7.0Upgrade linux-image-realtime-7.0Upgrade linux-image-realtime-hwe-26.04Upgrade linux-image-7.0.0-1018-nvidia-64kUpgrade linux-image-realtime-64kUpgrade linux-image-gcp-7.0Upgrade linux-image-virtual-hwe-24.04Upgrade linux-image-gke-7.0Upgrade linux-image-aws-7.0Upgrade linux-image-7.0.0-1013-oemUpgrade linux-image-gcp-64k-7.0Upgrade linux-image-gke-hwe-26.04Upgrade linux-image-aws-64kUpgrade linux-image-genericUpgrade linux-image-gcp-64kUpgrade linux-image-7.0.0-1006-gke-64kUpgrade linux-image-generic-64kUpgrade linux-image-generic-64k-7.0Upgrade linux-image-aws-64k-7.0Upgrade linux-image-7.0.0-31-generic-64kUpgrade linux-image-realtimeUpgrade linux-image-gke-64k-hwe-26.04Upgrade linux-image-generic-7.0Upgrade linux-image-virtualUpgrade linux-image-gkeUpgrade linux-image-generic-64k-hwe-26.04Upgrade linux-image-nvidia-7.0Upgrade linux-image-oem-26.04Upgrade linux-image-7.0.0-1006-gkeUpgrade linux-image-virtual-hwe-26.04Upgrade linux-image-nvidia-64k-7.0Upgrade linux-image-7.0.0-1011-gcpUpgrade linux-image-oem-7.0Upgrade linux-image-7.0.0-1012-aws-64kUpgrade linux-image-7.0.0-1011-gcp-64kUpgrade linux-image-7.0.0-31-realtimeUpgrade linux-image-gke-64kUpgrade linux-image-oem-26.04aUpgrade linux-image-awsUpgrade linux-image-7.0.0-1012-awsUpgrade linux-image-7.0.0-31-genericUpgrade linux-image-generic-64k-hwe-24.04Upgrade linux-image-7.0.0-1018-nvidiaUpgrade linux-image-oem-26.04bUpgrade linux-image-7.0.0-31-realtime-64kUpgrade linux-image-realtime-64k-hwe-26.04Upgrade linux-image-gcpUpgrade linux-image-generic-hwe-24.04Upgrade linux-image-gke-64k-7.0 | Sep 14, 2026 | Sep 7, 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