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

Goal: 1000 CNY · Raised: 1359 CNY

100%

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

Quick assessment

Affected
Linux Linux
Exploitation
No confirmed in-the-wild exploitation; assess based on exposure
Recommended action
Check the vendor advisory and references for a fixed version. If immediate upgrade is impossible, restrict exposure and increase monitoring.

Linux kernel是美国Linux基金会的开源操作系统Linux所使用的内核。 Linux kernel存在安全漏洞,该漏洞源于bpf_timer_init函数中memcg使用不当,可能导致双重获取锁和硬锁定问题。

AI Predicted 5.5 Difficulty: Moderate EPSS 0.15% · P4

Possible ATT&CK Techniques 1 AI

T1496 · Resource Hijacking

Affected Version Matrix 10

VendorProduct Version RangeStatus
Linux Linux b00628b1c7d595ae5b544e059c27b1f5828314b4< 449682e76f32601f211816d3e2100bed87e67a4c affected
b00628b1c7d595ae5b544e059c27b1f5828314b4< cd1fd26bb13473c1734e3026b2b97025a0a4087b affected
b00628b1c7d595ae5b544e059c27b1f5828314b4< ac70cd446f83ccb25532b343919ab86eacdcd06a affected
b00628b1c7d595ae5b544e059c27b1f5828314b4< 6d78b4473cdb08b74662355a9e8510bde09c511e affected
5.15 affected
< 5.15 unaffected
6.6.107≤ 6.6.* unaffected
6.12.48≤ 6.12.* unaffected
… +2 more rows
Get alerts for future matching vulnerabilities Log 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: CVE Program / CVE List V5
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: CVE Program / CVE List V5
CVSS Information
N/A
Source: CVE Program / CVE List V5
Vulnerability Type
N/A
Source: CVE Program / CVE List V5
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

Vendor Product Affected Versions CPE Subscribe
Linux Linux b00628b1c7d595ae5b544e059c27b1f5828314b4 ~ 449682e76f32601f211816d3e2100bed87e67a4c -
Linux Linux 5.15 -

II. Public POCs for CVE-2025-39886

# POC Description Source Link Shenlong Link
AI-Generated POC Premium

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

IV. Related Vulnerabilities

V. Comments for CVE-2025-39886

No comments yet


Leave a comment