In the Linux kernel, the following vulnerability has been resolved:
bpf: support deferring bpf_link dealloc to after RCU grace period
BPF link for some program types is passed as a "context" which can be used by those BPF programs to look up additional information. E.g., for multi-kprobes and multi-uprobes, link is used to fetch BPF cookie values.
Because of this runtime dependency, when bpf_link refcnt drops to zero there could still be active BPF programs running accessing link data.
This patch adds generic support to defer bpf_link dealloc callback to after RCU GP, if requested. This is done by exposing two different deallocation callbacks, one synchronous and one deferred. If deferred one is provided, bpf_link_free() will schedule dealloc_deferred() callback to happen after RCU GP.
BPF is using two flavors of RCU: "classic" non-sleepable one and RCU tasks trace one. The latter is used when sleepable BPF programs are used. bpf_link_free() accommodates that by checking underlying BPF program's sleepable flag, and goes either through normal RCU GP only for non-sleepable, or through RCU tasks trace GP *and* then normal RCU GP (taking into account rcu_trace_implies_rcu_gp() optimization), if BPF program is sleepable.
We use this for multi-kprobe and multi-uprobe links, which dereference link during program run. We also preventively switch raw_tp link to use deferred dealloc callback, as upcoming changes in bpf-next tree expose raw_tp link data (specifically, cookie value) to BPF program at runtime as well.
CVSS Details
- CVSS 3.1 Base Score: 5.5
- CVSS 3.1 Vector: (CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H)
Covered by Rapid7
| Product | Vendor Advisory | Solution File | Added | Published |
|---|---|---|---|---|
| Debian | — | Upgrade linux | May 15, 2025 | May 19, 2024 |
| Redhat_linux | — | No solution exists | Jul 9, 2025 | May 19, 2024 |
| Suse | — | Upgrade dtb-appleUpgrade kernel-defaultUpgrade kernel-debugUpgrade dtb-socionextUpgrade dtb-armUpgrade kernel-64kb-develUpgrade dlm-kmp-rtUpgrade kernel-64kb-extraUpgrade kernel-debug-vdsoUpgrade kernel-rt-extraUpgrade kselftests-kmp-rtUpgrade ocfs2-kmp-azureUpgrade kernel-default-livepatch-develUpgrade kernel-azure-vdsoUpgrade dtb-marvellUpgrade dtb-allwinnerUpgrade cluster-md-kmp-defaultUpgrade dtb-renesasUpgrade kernel-azureUpgrade kernel-kvmsmall-vdsoUpgrade gfs2-kmp-defaultUpgrade kernel-debug-develUpgrade kernel-syms-rtUpgrade kernel-docsUpgrade dlm-kmp-azureUpgrade dtb-amdUpgrade kernel-rt_debug-livepatch-develUpgrade kernel-obs-buildUpgrade reiserfs-kmp-rtUpgrade kernel-default-baseUpgrade cluster-md-kmp-64kbUpgrade reiserfs-kmp-defaultUpgrade kernel-docs-htmlUpgrade dtb-hisiliconUpgrade kernel-rt_debug-vdsoUpgrade kernel-rt-livepatch-develUpgrade kernel-azure-extraUpgrade kernel-64kb-optionalUpgrade dtb-sprdUpgrade kernel-source-vanillaUpgrade dtb-rockchipUpgrade kernel-rt_debugUpgrade kselftests-kmp-defaultUpgrade dtb-nvidiaUpgrade dlm-kmp-defaultUpgrade ocfs2-kmp-64kbUpgrade kernel-debug-livepatch-develUpgrade reiserfs-kmp-azureUpgrade kernel-sourceUpgrade kernel-azure-livepatch-develUpgrade kernel-azure-develUpgrade dtb-freescaleUpgrade dlm-kmp-64kbUpgrade kernel-azure-optionalUpgrade gfs2-kmp-64kbUpgrade dtb-qcomUpgrade dtb-amlogicUpgrade kernel-default-vdsoUpgrade dtb-caviumUpgrade kernel-default-develUpgrade kernel-64kb-livepatch-develUpgrade kselftests-kmp-64kbUpgrade kernel-macrosUpgrade dtb-xilinxUpgrade kernel-64kbUpgrade kernel-devel-rtUpgrade kernel-devel-azureUpgrade kernel-rt-livepatchUpgrade kernel-kvmsmall-livepatch-develUpgrade kernel-rt-optionalUpgrade kernel-develUpgrade kernel-default-extraUpgrade gfs2-kmp-rtUpgrade dtb-mediatekUpgrade dtb-apmUpgrade cluster-md-kmp-azureUpgrade ocfs2-kmp-rtUpgrade dtb-lgUpgrade reiserfs-kmp-64kbUpgrade kernel-source-azureUpgrade dtb-amazonUpgrade kernel-obs-qaUpgrade kernel-symsUpgrade kernel-source-rtUpgrade kernel-rt-develUpgrade kernel-kvmsmallUpgrade kernel-default-base-rebuildUpgrade dtb-alteraUpgrade cluster-md-kmp-rtUpgrade kernel-default-optionalUpgrade gfs2-kmp-azureUpgrade dtb-exynosUpgrade ocfs2-kmp-defaultUpgrade kernel-syms-azureUpgrade kernel-rt-vdsoUpgrade kernel-kvmsmall-develUpgrade kernel-default-livepatchUpgrade dtb-broadcomUpgrade kernel-rtUpgrade kselftests-kmp-azureUpgrade kernel-zfcpdumpUpgrade kernel-rt_debug-devel | Jun 13, 2024 | May 19, 2024 |
| Ubuntu | — | Upgrade linux-image-6.8.0-38-genericUpgrade linux-image-oracleUpgrade linux-image-6.8.0-1007-raspiUpgrade linux-image-awsUpgrade linux-image-6.8.0-38-lowlatencyUpgrade linux-image-6.8.0-1008-ibmUpgrade linux-image-generic-64k-hwe-24.04Upgrade linux-image-6.8.0-1008-oracleUpgrade linux-image-oem-24.04aUpgrade linux-image-6.8.0-38-lowlatency-64kUpgrade linux-image-virtualUpgrade linux-image-6.8.0-1010-azureUpgrade linux-image-generic-hwe-24.04Upgrade linux-image-kvmUpgrade linux-image-azure-fdeUpgrade linux-image-gcpUpgrade linux-image-ibm-lts-24.04Upgrade linux-image-oracle-64kUpgrade linux-image-6.8.0-1009-nvidiaUpgrade linux-image-nvidia-64kUpgrade linux-image-ibm-classicUpgrade linux-image-6.8.0-38-generic-64kUpgrade linux-image-6.8.0-1008-oracle-64kUpgrade linux-image-azureUpgrade linux-image-6.8.0-1007-intelUpgrade linux-image-ibmUpgrade linux-image-generic-lpaeUpgrade linux-image-intelUpgrade linux-image-raspiUpgrade linux-image-virtual-hwe-24.04Upgrade linux-image-6.8.0-1010-azure-fdeUpgrade linux-image-6.8.0-1009-nvidia-64kUpgrade linux-image-oem-24.04Upgrade linux-image-6.8.0-1011-awsUpgrade linux-image-gkeUpgrade linux-image-lowlatencyUpgrade linux-image-lowlatency-64kUpgrade linux-image-genericUpgrade linux-image-6.8.0-1006-gkeUpgrade linux-image-6.8.0-1010-gcpUpgrade linux-image-nvidiaUpgrade linux-image-generic-64kUpgrade linux-image-6.8.0-1008-oem | Jul 12, 2024 | May 19, 2024 |
Prioritize 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