Goal Reached Thanks to every supporter — we hit 100%!

Goal: 1000 CNY · Raised: 1000 CNY

100.0%

CVE-2025-39886— bpf: Tell memcg to use allow_spinning=false path in bpf_timer_init()

EPSS 0.02% · P5
Get alerts for future matching vulnerabilitiesLog in to subscribe

I. Basic Information for CVE-2025-39886

Vulnerability Information

Have questions about the vulnerability? See if Shenlong's analysis helps!
View Shenlong Deep Dive ↗

Although we use advanced large model technology, its output may still contain inaccurate or outdated information.Shenlong tries to ensure data accuracy, but please verify and judge based on the actual situation.

Vulnerability Title
bpf: Tell memcg to use allow_spinning=false path in bpf_timer_init()
Source: NVD (National Vulnerability Database)
Vulnerability Description
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/20250905201606.66198-1-shakeel.butt@linux.dev/ v0 approach s/bpf_map_kmalloc_node/bpf_mem_alloc/ https://lore.kernel.org/bpf/20250905061919.439648-1-yepeilin@google.com/ v1 approach: https://lore.kernel.org/bpf/20250905234547.862249-1-yepeilin@google.com/
Source: NVD (National Vulnerability Database)
CVSS Information
N/A
Source: NVD (National Vulnerability Database)
Vulnerability Type
N/A
Source: NVD (National Vulnerability Database)
Vulnerability Title
Linux kernel 安全漏洞
Source: CNNVD (China National Vulnerability Database)
Vulnerability Description
Linux kernel是美国Linux基金会的开源操作系统Linux所使用的内核。 Linux kernel存在安全漏洞,该漏洞源于bpf_timer_init函数中memcg使用不当,可能导致双重获取锁和硬锁定问题。
Source: CNNVD (China National Vulnerability Database)
CVSS Information
N/A
Source: CNNVD (China National Vulnerability Database)
Vulnerability Type
N/A
Source: CNNVD (China National Vulnerability Database)

Affected Products

VendorProductAffected VersionsCPESubscribe
LinuxLinux b00628b1c7d595ae5b544e059c27b1f5828314b4 ~ 449682e76f32601f211816d3e2100bed87e67a4c -
LinuxLinux 5.15 -

II. Public POCs for CVE-2025-39886

#POC DescriptionSource LinkShenlong Link
AI-Generated POCPremium

No public POC found.

Login to generate AI POC

III. Intelligence Information for CVE-2025-39886

登录查看更多情报信息。

Same Patch Batch · Linux · 2025-09-23 · 21 CVEs total

CVE-2025-39879ceph: always call ceph_shift_unused_folios_left()
CVE-2025-39887tracing/osnoise: Fix null-ptr-deref in bitmap_parselist()
CVE-2025-39888fuse: Block access to folio overlimit
CVE-2025-39885ocfs2: fix recursive semaphore deadlock in fiemap call
CVE-2025-39883mm/memory-failure: fix VM_BUG_ON_PAGE(PagePoisoned(page)) when unpoison memory
CVE-2025-39884btrfs: fix subvolume deletion lockup caused by inodes xarray race
CVE-2025-39882drm/mediatek: fix potential OF node use-after-free
CVE-2025-39880libceph: fix invalid accesses to ceph_connection_v1_info
CVE-2025-39881kernfs: Fix UAF in polling when open file is released
CVE-2025-39878ceph: fix crash after fscrypt_encrypt_pagecache_blocks() error
CVE-2025-39868erofs: fix runtime warning on truncate_folio_batch_exceptionals()
CVE-2025-39877mm/damon/sysfs: fix use-after-free in state_show()
CVE-2025-39876net: fec: Fix possible NPD in fec_enet_phy_reset_after_clk_enable()
CVE-2025-39874macsec: sync features on RTM_NEWLINK
CVE-2025-39875igb: Fix NULL pointer dereference in ethtool loopback test
CVE-2025-39873can: xilinx_can: xcan_write_frame(): fix use-after-free of transmitted SKB
CVE-2025-39872hsr: hold rcu and dev lock for hsr_get_port_ndev
CVE-2025-39871dmaengine: idxd: Remove improper idxd_free
CVE-2025-39869dmaengine: ti: edma: Fix memory allocation size for queue_priority_map
CVE-2025-39870dmaengine: idxd: Fix double free in idxd_setup_wqs()

IV. Related Vulnerabilities

V. Comments for CVE-2025-39886

No comments yet


Leave a comment