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

Goal: 1000 CNY · Raised: 1000 CNY

100.0%

CVE-2025-40220— fuse: fix livelock in synchronous file put from fuseblk workers

EPSS 0.06% · P17
Get alerts for future matching vulnerabilitiesLog in to subscribe

I. Basic Information for CVE-2025-40220

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
fuse: fix livelock in synchronous file put from fuseblk workers
Source: NVD (National Vulnerability Database)
Vulnerability Description
In the Linux kernel, the following vulnerability has been resolved: fuse: fix livelock in synchronous file put from fuseblk workers I observed a hang when running generic/323 against a fuseblk server. This test opens a file, initiates a lot of AIO writes to that file descriptor, and closes the file descriptor before the writes complete. Unsurprisingly, the AIO exerciser threads are mostly stuck waiting for responses from the fuseblk server: # cat /proc/372265/task/372313/stack [<0>] request_wait_answer+0x1fe/0x2a0 [fuse] [<0>] __fuse_simple_request+0xd3/0x2b0 [fuse] [<0>] fuse_do_getattr+0xfc/0x1f0 [fuse] [<0>] fuse_file_read_iter+0xbe/0x1c0 [fuse] [<0>] aio_read+0x130/0x1e0 [<0>] io_submit_one+0x542/0x860 [<0>] __x64_sys_io_submit+0x98/0x1a0 [<0>] do_syscall_64+0x37/0xf0 [<0>] entry_SYSCALL_64_after_hwframe+0x4b/0x53 But the /weird/ part is that the fuseblk server threads are waiting for responses from itself: # cat /proc/372210/task/372232/stack [<0>] request_wait_answer+0x1fe/0x2a0 [fuse] [<0>] __fuse_simple_request+0xd3/0x2b0 [fuse] [<0>] fuse_file_put+0x9a/0xd0 [fuse] [<0>] fuse_release+0x36/0x50 [fuse] [<0>] __fput+0xec/0x2b0 [<0>] task_work_run+0x55/0x90 [<0>] syscall_exit_to_user_mode+0xe9/0x100 [<0>] do_syscall_64+0x43/0xf0 [<0>] entry_SYSCALL_64_after_hwframe+0x4b/0x53 The fuseblk server is fuse2fs so there's nothing all that exciting in the server itself. So why is the fuse server calling fuse_file_put? The commit message for the fstest sheds some light on that: "By closing the file descriptor before calling io_destroy, you pretty much guarantee that the last put on the ioctx will be done in interrupt context (during I/O completion). Aha. AIO fgets a new struct file from the fd when it queues the ioctx. The completion of the FUSE_WRITE command from userspace causes the fuse server to call the AIO completion function. The completion puts the struct file, queuing a delayed fput to the fuse server task. When the fuse server task returns to userspace, it has to run the delayed fput, which in the case of a fuseblk server, it does synchronously. Sending the FUSE_RELEASE command sychronously from fuse server threads is a bad idea because a client program can initiate enough simultaneous AIOs such that all the fuse server threads end up in delayed_fput, and now there aren't any threads left to handle the queued fuse commands. Fix this by only using asynchronous fputs when closing files, and leave a comment explaining why.
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存在安全漏洞,该漏洞源于fuse同步文件放置中的活锁问题,可能导致服务不可用。
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 5a18ec176c934ca1bc9dc61580a5e0e90a9b5733 ~ 548e1f2bac1d4df91a6138f26bb4ab00323fd948 -
LinuxLinux 2.6.38 -

II. Public POCs for CVE-2025-40220

#POC DescriptionSource LinkShenlong Link
AI-Generated POCPremium

No public POC found.

Login to generate AI POC

III. Intelligence Information for CVE-2025-40220

登录查看更多情报信息。

Same Patch Batch · Linux · 2025-12-04 · 53 CVEs total

CVE-2025-40230mm: prevent poison consumption when splitting THP
CVE-2025-40214af_unix: Initialise scc_index in unix_add_edge().
CVE-2025-40215xfrm: delete x->tunnel as we delete x
CVE-2025-40221media: pci: mg4b: fix uninitialized iio scan data
CVE-2025-40217pidfs: validate extensible ioctls
CVE-2025-40218mm/damon/vaddr: do not repeat pte_offset_map_lock() until success
CVE-2025-40219PCI/IOV: Fix race between SR-IOV enable/disable and hotplug
CVE-2025-40216io_uring/rsrc: don't rely on user vaddr alignment
CVE-2025-40228mm/damon/sysfs: catch commit test ctx alloc failure
CVE-2025-40229mm/damon/core: fix potential memory leak by cleaning ops_filter in damon_destroy_scheme
CVE-2025-40227mm/damon/sysfs: dealloc commit test ctx always
CVE-2025-40231vsock: fix lock inversion in vsock_assign_transport()
CVE-2025-40232rv: Fully convert enabled_monitors to use list_head as iterator
CVE-2025-40233ocfs2: clear extent cache after moving/defragmenting extents
CVE-2025-40234platform/x86: alienware-wmi-wmax: Fix NULL pointer dereference in sleep handlers
CVE-2025-40236virtio-net: zero unused hash fields
CVE-2025-40235btrfs: directly free partially initialized fs_info in btrfs_check_leaked_roots()
CVE-2025-40237fs/notify: call exportfs_encode_fid with s_umount
CVE-2025-40238net/mlx5: Fix IPsec cleanup over MPV device
CVE-2025-40239net: phy: micrel: always set shared->phydev for LAN8814

Showing top 20 of 53 CVEs. View all on vendor page &rarr; →

IV. Related Vulnerabilities

V. Comments for CVE-2025-40220

No comments yet


Leave a comment