In the Linux kernel, the following vulnerability has been resolved:
bpf: Defer work in bpf_timer_cancel_and_free
Currently, the same case as previous patch (two timer callbacks trying to cancel each other) can be invoked through bpf_map_update_elem as well, or more precisely, freeing map elements containing timers. Since this relies on hrtimer_cancel as well, it is prone to the same deadlock situation as the previous patch.
It would be sufficient to use hrtimer_try_to_cancel to fix this problem, as the timer cannot be enqueued after async_cancel_and_free. Once async_cancel_and_free has been done, the timer must be reinitialized before it can be armed again. The callback running in parallel trying to arm the timer will fail, and freeing bpf_hrtimer without waiting is sufficient (given kfree_rcu), and bpf_timer_cb will return HRTIMER_NORESTART, preventing the timer from being rearmed again.
However, there exists a UAF scenario where the callback arms the timer before entering this function, such that if cancellation fails (due to timer callback invoking this routine, or the target timer callback running concurrently). In such a case, if the timer expiration is significantly far in the future, the RCU grace period expiration happening before it will free the bpf_hrtimer state and along with it the struct hrtimer, that is enqueued.
Hence, it is clear cancellation needs to occur after async_cancel_and_free, and yet it cannot be done inline due to deadlock issues. We thus modify bpf_timer_cancel_and_free to defer work to the global workqueue, adding a work_struct alongside rcu_head (both used at _different_ points of time, so can share space).
Update existing code comments to reflect the new state of affairs.
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 |
|---|---|---|---|---|
| Debian | — | No solution existsUpgrade linux | May 15, 2025 | Jul 29, 2024 |
| Redhat_linux | — | No solution exists | Jul 9, 2025 | Jul 29, 2024 |
| Suse | — | Upgrade kernel-kvmsmall-develUpgrade kernel-rt-develUpgrade kernel-rt_debugUpgrade dlm-kmp-azureUpgrade kernel-debug-livepatch-develUpgrade kernel-azure-develUpgrade cluster-md-kmp-defaultUpgrade dlm-kmp-defaultUpgrade kernel-devel-azureUpgrade kernel-symsUpgrade kernel-zfcpdumpUpgrade kernel-rtUpgrade kernel-rt_debug-vdsoUpgrade gfs2-kmp-rtUpgrade kselftests-kmp-defaultUpgrade kernel-azure-vdsoUpgrade cluster-md-kmp-azureUpgrade kernel-64kb-optionalUpgrade kernel-devel-rtUpgrade kernel-docsUpgrade ocfs2-kmp-rtUpgrade kernel-macrosUpgrade kernel-syms-rtUpgrade dtb-armUpgrade dtb-mediatekUpgrade dtb-socionextUpgrade kernel-64kbUpgrade kernel-azure-livepatch-develUpgrade kernel-64kb-develUpgrade kernel-obs-qaUpgrade kernel-kvmsmallUpgrade gfs2-kmp-64kbUpgrade dtb-amlogicUpgrade kernel-syms-azureUpgrade kernel-default-extraUpgrade kernel-64kb-livepatch-develUpgrade dtb-apmUpgrade reiserfs-kmp-azureUpgrade reiserfs-kmp-rtUpgrade kselftests-kmp-rtUpgrade kernel-debugUpgrade dtb-qcomUpgrade dtb-hisiliconUpgrade kernel-rt-livepatch-develUpgrade kernel-obs-buildUpgrade ocfs2-kmp-64kbUpgrade kernel-source-vanillaUpgrade kselftests-kmp-64kbUpgrade dtb-amdUpgrade dtb-nvidiaUpgrade dtb-sprdUpgrade dtb-broadcomUpgrade reiserfs-kmp-64kbUpgrade kernel-default-vdsoUpgrade kernel-default-base-rebuildUpgrade ocfs2-kmp-azureUpgrade kernel-default-develUpgrade gfs2-kmp-defaultUpgrade kernel-kvmsmall-vdsoUpgrade cluster-md-kmp-rtUpgrade kernel-rt-extraUpgrade kernel-debug-vdsoUpgrade kernel-source-rtUpgrade dtb-caviumUpgrade dlm-kmp-rtUpgrade kernel-default-optionalUpgrade kernel-defaultUpgrade dtb-marvellUpgrade dtb-lgUpgrade kernel-rt-livepatchUpgrade kernel-azure-extraUpgrade kernel-source-azureUpgrade kernel-docs-htmlUpgrade kernel-default-livepatchUpgrade kernel-default-baseUpgrade kernel-debug-develUpgrade kernel-rt_debug-livepatch-develUpgrade kernel-kvmsmall-livepatch-develUpgrade ocfs2-kmp-defaultUpgrade cluster-md-kmp-64kbUpgrade kernel-develUpgrade dtb-appleUpgrade gfs2-kmp-azureUpgrade kselftests-kmp-azureUpgrade reiserfs-kmp-defaultUpgrade dtb-alteraUpgrade dtb-allwinnerUpgrade kernel-rt-vdsoUpgrade kernel-rt-optionalUpgrade kernel-sourceUpgrade kernel-rt_debug-develUpgrade kernel-default-livepatch-develUpgrade dtb-xilinxUpgrade dtb-freescaleUpgrade dtb-rockchipUpgrade dlm-kmp-64kbUpgrade kernel-azure-optionalUpgrade kernel-azureUpgrade dtb-renesasUpgrade dtb-amazonUpgrade kernel-64kb-extraUpgrade dtb-exynos | Dec 5, 2025 | Sep 10, 2024 |
| Ubuntu | — | Upgrade linux-image-6.8.0-1016-azure-fdeUpgrade linux-image-lowlatency-64k-hwe-22.04Upgrade linux-image-6.8.0-48-generic-64kUpgrade linux-image-generic-lpaeUpgrade linux-image-ibmUpgrade linux-image-6.8.0-1016-azureUpgrade linux-image-lowlatency-64kUpgrade linux-image-oem-22.04Upgrade linux-image-6.8.0-48-lowlatency-64kUpgrade linux-image-azureUpgrade linux-image-gkeopUpgrade linux-image-raspiUpgrade linux-image-lowlatency-64k-hwe-24.04Upgrade linux-image-ibm-classicUpgrade linux-image-6.8.0-1002-gkeopUpgrade linux-image-6.8.0-1017-nvidiaUpgrade linux-image-lowlatencyUpgrade linux-image-6.8.0-1017-nvidia-64kUpgrade linux-image-lowlatency-hwe-24.04Upgrade linux-image-nvidiaUpgrade linux-image-6.8.0-1016-gcpUpgrade linux-image-oem-24.04Upgrade linux-image-genericUpgrade linux-image-virtual-hwe-22.04Upgrade linux-image-oem-22.04aUpgrade linux-image-6.8.0-48-lowlatencyUpgrade linux-image-gkeop-6.8Upgrade linux-image-azure-fdeUpgrade linux-image-nvidia-64k-hwe-22.04Upgrade linux-image-generic-64kUpgrade linux-image-oem-22.04cUpgrade linux-image-6.8.0-1013-gkeUpgrade linux-image-6.8.0-1014-ibmUpgrade linux-image-oem-22.04dUpgrade linux-image-6.8.0-1017-azureUpgrade linux-image-generic-hwe-22.04Upgrade linux-image-nvidia-64k-6.8Upgrade linux-image-lowlatency-hwe-22.04Upgrade linux-image-nvidia-64kUpgrade linux-image-gkeUpgrade linux-image-generic-hwe-24.04Upgrade linux-image-generic-64k-hwe-24.04Upgrade linux-image-kvmUpgrade linux-image-6.8.0-1017-nvidia-lowlatencyUpgrade linux-image-generic-64k-hwe-22.04Upgrade linux-image-oracle-64kUpgrade linux-image-virtual-hwe-24.04Upgrade linux-image-6.8.0-1015-oracle-64kUpgrade linux-image-gcpUpgrade linux-image-virtualUpgrade linux-image-nvidia-lowlatencyUpgrade linux-image-oem-24.04aUpgrade linux-image-6.8.0-1015-oracleUpgrade linux-image-6.8.0-1017-azure-fdeUpgrade linux-image-oem-22.04bUpgrade linux-image-6.8.0-1017-nvidia-lowlatency-64kUpgrade linux-image-nvidia-lowlatency-64kUpgrade linux-image-6.8.0-1017-gcpUpgrade linux-image-6.8.0-48-genericUpgrade linux-image-oracleUpgrade linux-image-6.8.0-1016-oemUpgrade linux-image-6.8.0-1014-raspiUpgrade linux-image-ibm-lts-24.04Upgrade linux-image-nvidia-6.8Upgrade linux-image-awsUpgrade linux-image-6.8.0-1018-awsUpgrade linux-image-nvidia-hwe-22.04 | Nov 4, 2024 | Jul 29, 2024 |
| Vmware Photon_os | — | Use 'tdnf update' to upgrade all packages to the latest version. | Feb 9, 2026 | Jul 29, 2024 |
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