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

Goal: 1000 CNY · Raised: 1359 CNY

100%

CVE-2025-40007— netfs: fix reference leak

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存在安全漏洞,该漏洞源于netfs_alloc_request函数中引用计数初始化不当,可能导致引用泄漏和死锁。

AI Predicted 6.5 Difficulty: Hard EPSS 0.22% · P12

Possible ATT&CK Techniques 1 AI

T1499 · Endpoint Denial of Service

Affected Version Matrix 8

VendorProduct Version RangeStatus
Linux Linux 20d72b00ca814d748f5663484e5c53bb2bf37a3a< 8df142e93098b4531fadb5dfcf93087649f570b3 affected
20d72b00ca814d748f5663484e5c53bb2bf37a3a< 4d428dca252c858bfac691c31fa95d26cd008706 affected
1a8360c2eed3b292ed654c2ac61b09de4a80e298 affected
6.15.3< 6.16 affected
6.16 affected
< 6.16 unaffected
6.16.10≤ 6.16.* unaffected
6.17≤ * unaffected
Get alerts for future matching vulnerabilities Log in to subscribe

I. Basic Information for CVE-2025-40007

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
netfs: fix reference leak
Source: CVE Program / CVE List V5
Vulnerability Description
In the Linux kernel, the following vulnerability has been resolved: netfs: fix reference leak Commit 20d72b00ca81 ("netfs: Fix the request's work item to not require a ref") modified netfs_alloc_request() to initialize the reference counter to 2 instead of 1. The rationale was that the requet's "work" would release the second reference after completion (via netfs_{read,write}_collection_worker()). That works most of the time if all goes well. However, it leaks this additional reference if the request is released before the I/O operation has been submitted: the error code path only decrements the reference counter once and the work item will never be queued because there will never be a completion. This has caused outages of our whole server cluster today because tasks were blocked in netfs_wait_for_outstanding_io(), leading to deadlocks in Ceph (another bug that I will address soon in another patch). This was caused by a netfs_pgpriv2_begin_copy_to_cache() call which failed in fscache_begin_write_operation(). The leaked netfs_io_request was never completed, leaving `netfs_inode.io_count` with a positive value forever. All of this is super-fragile code. Finding out which code paths will lead to an eventual completion and which do not is hard to see: - Some functions like netfs_create_write_req() allocate a request, but will never submit any I/O. - netfs_unbuffered_read_iter_locked() calls netfs_unbuffered_read() and then netfs_put_request(); however, netfs_unbuffered_read() can also fail early before submitting the I/O request, therefore another netfs_put_request() call must be added there. A rule of thumb is that functions that return a `netfs_io_request` do not submit I/O, and all of their callers must be checked. For my taste, the whole netfs code needs an overhaul to make reference counting easier to understand and less fragile & obscure. But to fix this bug here and now and produce a patch that is adequate for a stable backport, I tried a minimal approach that quickly frees the request object upon early failure. I decided against adding a second netfs_put_request() each time because that would cause code duplication which obscures the code further. Instead, I added the function netfs_put_failed_request() which frees such a failed request synchronously under the assumption that the reference count is exactly 2 (as initially set by netfs_alloc_request() and never touched), verified by a WARN_ON_ONCE(). It then deinitializes the request object (without going through the "cleanup_work" indirection) and frees the allocation (with RCU protection to protect against concurrent access by netfs_requests_seq_start()). All code paths that fail early have been changed to call netfs_put_failed_request() instead of netfs_put_request(). Additionally, I have added a netfs_put_request() call to netfs_unbuffered_read() as explained above because the netfs_put_failed_request() approach does not work there.
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存在安全漏洞,该漏洞源于netfs_alloc_request函数中引用计数初始化不当,可能导致引用泄漏和死锁。
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 20d72b00ca814d748f5663484e5c53bb2bf37a3a ~ 8df142e93098b4531fadb5dfcf93087649f570b3 -
Linux Linux 6.16 -

II. Public POCs for CVE-2025-40007

# 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-40007

请登录查看更多情报信息。

Same Patch Batch · Linux · 2025-10-20 · 13 CVEs total

CVE-2025-40012 7.8 HIGH net/smc: fix warning in smc_rx_splice() when calling get_page()
CVE-2025-40006 7.8 HIGH mm/hugetlb: fix folio is still mapped when deleted
CVE-2025-40017 media: iris: Fix memory leak by freeing untracked persist buffer
CVE-2025-40015 media: stm32-csi: Fix dereference before NULL check
CVE-2025-40016 media: uvcvideo: Mark invalid entities with id UVC_INVALID_ENTITY_ID
CVE-2025-40013 ASoC: qcom: audioreach: fix potential null pointer dereference
CVE-2025-40011 drm/gma500: Fix null dereference in hdmi teardown
CVE-2025-40010 afs: Fix potential null pointer dereference in afs_put_server
CVE-2025-40009 fs/proc/task_mmu: check p->vec_buf for NULL
CVE-2025-40008 kmsan: fix out-of-bounds access to shadow memory
CVE-2025-40005 spi: cadence-quadspi: Implement refcount to handle unbind during busy
CVE-2025-40004 net/9p: Fix buffer overflow in USB transport layer

IV. Related Vulnerabilities

V. Comments for CVE-2025-40007

No comments yet


Leave a comment