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 | — | Upgrade linux | May 15, 2025 | Jul 29, 2024 |
| Redhat_linux | — | No solution exists | Jul 9, 2025 | Jul 29, 2024 |
| Suse | — | Upgrade kernel-64kbUpgrade kernel-syms-rtUpgrade kernel-zfcpdumpUpgrade kernel-macrosUpgrade dtb-armUpgrade dtb-mediatekUpgrade dtb-socionextUpgrade kernel-debugUpgrade cluster-md-kmp-azureUpgrade kselftests-kmp-defaultUpgrade kernel-devel-azureUpgrade dtb-apmUpgrade kernel-64kb-develUpgrade reiserfs-kmp-azureUpgrade cluster-md-kmp-defaultUpgrade reiserfs-kmp-rtUpgrade kernel-64kb-livepatch-develUpgrade kernel-obs-qaUpgrade kselftests-kmp-rtUpgrade kernel-syms-azureUpgrade gfs2-kmp-64kbUpgrade kernel-rt_debugUpgrade kernel-default-extraUpgrade kernel-rt-develUpgrade kernel-kvmsmallUpgrade kernel-rt_debug-vdsoUpgrade dlm-kmp-azureUpgrade kernel-rtUpgrade kernel-azure-develUpgrade kernel-devel-rtUpgrade kernel-symsUpgrade dlm-kmp-defaultUpgrade kernel-azure-livepatch-develUpgrade kernel-64kb-optionalUpgrade kernel-azure-vdsoUpgrade dtb-amlogicUpgrade kernel-docsUpgrade ocfs2-kmp-rtUpgrade dtb-qcomUpgrade gfs2-kmp-rtUpgrade kernel-debug-livepatch-develUpgrade dtb-hisiliconUpgrade kernel-rt-livepatch-develUpgrade kernel-kvmsmall-develUpgrade ocfs2-kmp-azureUpgrade kernel-rt_debug-livepatch-develUpgrade kernel-source-vanillaUpgrade kernel-default-livepatch-develUpgrade dtb-lgUpgrade kernel-source-azureUpgrade kernel-rt-livepatchUpgrade kernel-docs-htmlUpgrade kernel-default-baseUpgrade kernel-debug-develUpgrade kernel-azure-extraUpgrade kernel-default-livepatchUpgrade kselftests-kmp-azureUpgrade dtb-caviumUpgrade dtb-marvellUpgrade dlm-kmp-rtUpgrade kernel-defaultUpgrade kernel-source-rtUpgrade kernel-default-optionalUpgrade kernel-debug-vdsoUpgrade dtb-broadcomUpgrade kernel-default-vdsoUpgrade kernel-default-base-rebuildUpgrade reiserfs-kmp-64kbUpgrade reiserfs-kmp-defaultUpgrade kernel-azure-optionalUpgrade kernel-azureUpgrade dtb-renesasUpgrade dtb-amazonUpgrade dtb-alteraUpgrade dtb-allwinnerUpgrade kernel-64kb-extraUpgrade dtb-amdUpgrade dtb-sprdUpgrade kernel-kvmsmall-vdsoUpgrade kernel-rt-extraUpgrade dtb-exynosUpgrade kselftests-kmp-64kbUpgrade kernel-rt-optionalUpgrade dtb-freescaleUpgrade kernel-rt-vdsoUpgrade kernel-rt_debug-develUpgrade dlm-kmp-64kbUpgrade dtb-rockchipUpgrade dtb-appleUpgrade kernel-default-develUpgrade gfs2-kmp-defaultUpgrade kernel-sourceUpgrade gfs2-kmp-azureUpgrade dtb-xilinxUpgrade dtb-nvidiaUpgrade cluster-md-kmp-64kbUpgrade ocfs2-kmp-defaultUpgrade kernel-obs-buildUpgrade cluster-md-kmp-rtUpgrade kernel-develUpgrade ocfs2-kmp-64kbUpgrade kernel-kvmsmall-livepatch-devel | Dec 5, 2025 | Sep 10, 2024 |
| Ubuntu | — | Upgrade linux-image-nvidia-lowlatency-64kUpgrade linux-image-6.8.0-1018-awsUpgrade linux-image-generic-hwe-24.04Upgrade linux-image-nvidia-hwe-22.04Upgrade linux-image-6.8.0-1013-gkeUpgrade linux-image-oem-22.04bUpgrade linux-image-6.8.0-1017-azureUpgrade linux-image-6.8.0-1015-oracle-64kUpgrade linux-image-virtualUpgrade linux-image-gkeUpgrade linux-image-oem-22.04dUpgrade linux-image-generic-hwe-22.04Upgrade linux-image-6.8.0-1016-oemUpgrade linux-image-6.8.0-1017-nvidia-lowlatency-64kUpgrade linux-image-nvidia-6.8Upgrade linux-image-6.8.0-48-genericUpgrade linux-image-oracleUpgrade linux-image-nvidia-lowlatencyUpgrade linux-image-6.8.0-1014-raspiUpgrade linux-image-oracle-64kUpgrade linux-image-nvidia-64kUpgrade linux-image-lowlatency-hwe-22.04Upgrade linux-image-6.8.0-1014-ibmUpgrade linux-image-6.8.0-1017-nvidia-lowlatencyUpgrade linux-image-ibm-lts-24.04Upgrade linux-image-6.8.0-1017-azure-fdeUpgrade linux-image-oem-24.04aUpgrade linux-image-awsUpgrade linux-image-6.8.0-1017-gcpUpgrade linux-image-kvmUpgrade linux-image-generic-64k-hwe-24.04Upgrade linux-image-6.8.0-1015-oracleUpgrade linux-image-gcpUpgrade linux-image-nvidia-64k-6.8Upgrade linux-image-generic-64k-hwe-22.04Upgrade linux-image-virtual-hwe-24.04Upgrade linux-image-6.8.0-1016-gcpUpgrade linux-image-gkeop-6.8Upgrade linux-image-6.8.0-48-lowlatencyUpgrade linux-image-azureUpgrade linux-image-raspiUpgrade linux-image-ibm-classicUpgrade linux-image-genericUpgrade linux-image-nvidia-64k-hwe-22.04Upgrade linux-image-oem-22.04aUpgrade linux-image-lowlatency-64k-hwe-22.04Upgrade linux-image-6.8.0-1016-azure-fdeUpgrade linux-image-oem-24.04Upgrade linux-image-generic-64kUpgrade linux-image-6.8.0-1017-nvidia-64kUpgrade linux-image-azure-fdeUpgrade linux-image-oem-22.04cUpgrade linux-image-6.8.0-1017-nvidiaUpgrade linux-image-6.8.0-1016-azureUpgrade linux-image-ibmUpgrade linux-image-lowlatency-64kUpgrade linux-image-generic-lpaeUpgrade linux-image-6.8.0-48-generic-64kUpgrade linux-image-lowlatencyUpgrade linux-image-6.8.0-48-lowlatency-64kUpgrade linux-image-lowlatency-hwe-24.04Upgrade linux-image-6.8.0-1002-gkeopUpgrade linux-image-oem-22.04Upgrade linux-image-gkeopUpgrade linux-image-nvidiaUpgrade linux-image-lowlatency-64k-hwe-24.04Upgrade linux-image-virtual-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