In the Linux kernel, the following vulnerability has been resolved:
bpf: Tell memcg to use allow_spinning=false path in bpf_timer_init()
Currently, calling bpf_map_kmalloc_node() from __bpf_async_init() can cause various locking issues; see the following stack trace (edited for style) as one example:
... [10.011566] do_raw_spin_lock.cold [10.011570] try_to_wake_up (5) double-acquiring the same [10.011575] kick_pool rq_lock, causing a hardlockup [10.011579] __queue_work [10.011582] queue_work_on [10.011585] kernfs_notify [10.011589] cgroup_file_notify [10.011593] try_charge_memcg (4) memcg accounting raises an [10.011597] obj_cgroup_charge_pages MEMCG_MAX event [10.011599] obj_cgroup_charge_account [10.011600] __memcg_slab_post_alloc_hook [10.011603] __kmalloc_node_noprof ... [10.011611] bpf_map_kmalloc_node [10.011612] __bpf_async_init [10.011615] bpf_timer_init (3) BPF calls bpf_timer_init() [10.011617] bpf_prog_xxxxxxxxxxxxxxxx_fcg_runnable [10.011619] bpf__sched_ext_ops_runnable [10.011620] enqueue_task_scx (2) BPF runs with rq_lock held [10.011622] enqueue_task [10.011626] ttwu_do_activate [10.011629] sched_ttwu_pending (1) grabs rq_lock ...
The above was reproduced on bpf-next (b338cf849ec8) by modifying ./tools/sched_ext/scx_flatcg.bpf.c to call bpf_timer_init() during ops.runnable(), and hacking the memcg accounting code a bit to make a bpf_timer_init() call more likely to raise an MEMCG_MAX event.
We have also run into other similar variants (both internally and on bpf-next), including double-acquiring cgroup_file_kn_lock, the same worker_pool::lock, etc.
As suggested by Shakeel, fix this by using __GFP_HIGH instead of GFP_ATOMIC in __bpf_async_init(), so that e.g. if try_charge_memcg() raises an MEMCG_MAX event, we call __memcg_memory_event() with @allow_spinning=false and avoid calling cgroup_file_notify() there.
Depends on mm patch "memcg: skip cgroup_file_notify if spinning is not allowed": https://lore.kernel.org/bpf/[email protected]/
v0 approach s/bpf_map_kmalloc_node/bpf_mem_alloc/ https://lore.kernel.org/bpf/[email protected]/ v1 approach: https://lore.kernel.org/bpf/[email protected]/
| Product | Vendor Advisory | Solution File | Added | Published |
|---|---|---|---|---|
| Amazon_linux_2023 | — | Upgrade python3-perf6.12-debuginfoUpgrade perf6.12Upgrade kernel6.12-libbpfUpgrade kernel6.12-tools-debuginfoUpgrade kernel6.12-libbpf-debuginfoUpgrade kernel6.12-libbpf-develUpgrade bpftool6.12Upgrade kernel6.12-libbpf-staticUpgrade bpftool6.12-debuginfoUpgrade kernel6.12-modules-extra-commonUpgrade kernel6.12-debuginfo-common-x86_64Upgrade kernel6.12-debuginfo-common-aarch64Upgrade kernel6.12-headersUpgrade kernel6.12-toolsUpgrade python3-perf6.12Upgrade perf6.12-debuginfoUpgrade kernel6.12-tools-develUpgrade kernel6.12-develUpgrade kernel6.12-debuginfoUpgrade kernel6.12-modules-extraUpgrade kernel6.12Upgrade kernel-livepatch-6.12.48-67.114 | Dec 9, 2025 | Sep 23, 2025 |
| Debian | — | Upgrade linux | Jul 23, 2026 | Jul 23, 2026 |
| Oracle_linux | — | Upgrade kernel-uek | Nov 11, 2025 | Sep 23, 2025 |
| Redhat_linux | — | No solution exists | Jul 17, 2026 | Sep 23, 2025 |
| Ubuntu | — | Upgrade linux-image-gcp-6.8Upgrade linux-image-generic-6.8Upgrade linux-image-generic-64k-6.8Upgrade linux-image-oracle-64k-lts-24.04Upgrade linux-image-virtual-6.8Upgrade linux-image-nvidia-64k-6.8Upgrade linux-image-nvidia-lowlatency-64k-6.8Upgrade linux-image-nvidia-64kUpgrade linux-image-6.8.0-1049-nvidia-64kUpgrade linux-image-6.8.0-1050-aws-fipsUpgrade linux-image-fips-6.8Upgrade linux-image-oracleUpgrade linux-image-6.8.0-1049-nvidia-lowlatency-64kUpgrade linux-image-azure-fipsUpgrade linux-image-kvmUpgrade linux-image-ibm-lts-24.04Upgrade linux-image-generic-hwe-22.04Upgrade linux-image-xilinxUpgrade linux-image-azure-lts-24.04Upgrade linux-image-6.8.0-1052-gcpUpgrade linux-image-6.8.0-1050-awsUpgrade linux-image-aws-64k-lts-24.04Upgrade linux-image-6.8.0-1052-gcp-fipsUpgrade linux-image-oem-22.04bUpgrade linux-image-raspi-6.8Upgrade linux-image-gcp-64kUpgrade linux-image-aws-64k-6.8Upgrade linux-image-gcp-fipsUpgrade linux-image-aws-fips-6.8Upgrade linux-image-gke-64kUpgrade linux-image-gke-64k-6.8Upgrade linux-image-6.8.0-1047-oracle-64kUpgrade linux-image-raspi-realtimeUpgrade linux-image-oem-22.04dUpgrade linux-image-oracle-64kUpgrade linux-image-gcpUpgrade linux-image-awsUpgrade linux-image-ibm-classicUpgrade linux-image-6.8.0-1048-gke-64kUpgrade linux-image-aws-lts-24.04Upgrade linux-image-6.8.0-106-fipsUpgrade linux-image-nvidia-lowlatency-64kUpgrade linux-image-gcp-lts-24.04Upgrade linux-image-lowlatency-64k-6.8Upgrade linux-image-realtimeUpgrade linux-image-ibm-6.8Upgrade linux-image-lowlatency-hwe-22.04Upgrade linux-image-oracle-6.8Upgrade linux-image-nvidia-lowlatencyUpgrade linux-image-xilinx-6.8Upgrade linux-image-6.8.0-1050-raspiUpgrade linux-image-azure-fips-6.8Upgrade linux-image-6.8.0-1047-oracleUpgrade linux-image-gkeopUpgrade linux-image-xilinx-zynqmpUpgrade linux-image-realtime-6.8.1Upgrade linux-image-raspi-realtime-6.8Upgrade linux-image-genericUpgrade linux-image-6.8.0-106-genericUpgrade linux-image-6.8.1-1045-realtimeUpgrade linux-image-aws-64kUpgrade linux-image-nvidiaUpgrade linux-image-6.8.0-1049-ibmUpgrade linux-image-6.8.0-106-generic-64kUpgrade linux-image-6.8.0-1029-xilinxUpgrade linux-image-oracle-64k-6.8Upgrade linux-image-6.8.0-106-lowlatency-64kUpgrade linux-image-gke-6.8Upgrade linux-image-lowlatency-64k-hwe-22.04Upgrade linux-image-gcp-fips-6.8Upgrade linux-image-6.8.0-1050-aws-64kUpgrade linux-image-nvidia-hwe-22.04Upgrade linux-image-virtual-hwe-22.04Upgrade linux-image-6.8.0-1049-nvidiaUpgrade linux-image-6.8.0-1035-gkeopUpgrade linux-image-oem-22.04cUpgrade linux-image-gcp-64k-6.8Upgrade linux-image-aws-6.8Upgrade linux-image-6.8.0-1052-gcp-64kUpgrade linux-image-6.8.0-1051-azureUpgrade linux-image-6.8.0-1048-gkeUpgrade linux-image-realtime-hwe-22.04Upgrade linux-image-nvidia-64k-hwe-22.04Upgrade linux-image-azure-6.8Upgrade linux-image-ibmUpgrade linux-image-aws-fipsUpgrade linux-image-generic-64k-hwe-22.04Upgrade linux-image-intel-iotgUpgrade linux-image-lowlatency-6.8Upgrade linux-image-gkeUpgrade linux-image-6.8.0-1049-nvidia-lowlatencyUpgrade linux-image-intel-iot-realtimeUpgrade linux-image-raspiUpgrade linux-image-lowlatencyUpgrade linux-image-nvidia-lowlatency-6.8Upgrade linux-image-lowlatency-64kUpgrade linux-image-oem-22.04aUpgrade linux-image-gkeop-6.8Upgrade linux-image-6.8.0-1052-azure-fipsUpgrade linux-image-oem-22.04Upgrade linux-image-nvidia-6.8Upgrade linux-image-generic-64kUpgrade linux-image-gcp-64k-lts-24.04Upgrade linux-image-generic-lpaeUpgrade linux-image-azureUpgrade linux-image-fipsUpgrade linux-image-6.8.0-2040-raspi-realtimeUpgrade linux-image-6.8.0-106-lowlatencyUpgrade linux-image-virtualUpgrade linux-image-oracle-lts-24.04 | Mar 17, 2026 | Sep 23, 2025 |
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