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

Goal: 1000 CNY · Raised: 1000 CNY

100.0%

CVE-2025-40303— btrfs: ensure no dirty metadata is written back for an fs with errors

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

I. Basic Information for CVE-2025-40303

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
btrfs: ensure no dirty metadata is written back for an fs with errors
Source: NVD (National Vulnerability Database)
Vulnerability Description
In the Linux kernel, the following vulnerability has been resolved: btrfs: ensure no dirty metadata is written back for an fs with errors [BUG] During development of a minor feature (make sure all btrfs_bio::end_io() is called in task context), I noticed a crash in generic/388, where metadata writes triggered new works after btrfs_stop_all_workers(). It turns out that it can even happen without any code modification, just using RAID5 for metadata and the same workload from generic/388 is going to trigger the use-after-free. [CAUSE] If btrfs hits an error, the fs is marked as error, no new transaction is allowed thus metadata is in a frozen state. But there are some metadata modifications before that error, and they are still in the btree inode page cache. Since there will be no real transaction commit, all those dirty folios are just kept as is in the page cache, and they can not be invalidated by invalidate_inode_pages2() call inside close_ctree(), because they are dirty. And finally after btrfs_stop_all_workers(), we call iput() on btree inode, which triggers writeback of those dirty metadata. And if the fs is using RAID56 metadata, this will trigger RMW and queue new works into rmw_workers, which is already stopped, causing warning from queue_work() and use-after-free. [FIX] Add a special handling for write_one_eb(), that if the fs is already in an error state, immediately mark the bbio as failure, instead of really submitting them. Then during close_ctree(), iput() will just discard all those dirty tree blocks without really writing them back, thus no more new jobs for already stopped-and-freed workqueues. The extra discard in write_one_eb() also acts as an extra safenet. E.g. the transaction abort is triggered by some extent/free space tree corruptions, and since extent/free space tree is already corrupted some tree blocks may be allocated where they shouldn't be (overwriting existing tree blocks). In that case writing them back will further corrupting the fs.
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存在安全漏洞,该漏洞源于错误处理不当,可能导致元数据写入错误状态的文件系统。
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 13e6c37b989859e70b0d73d3f2cb0aa022159b17 ~ 066ee13f05fbd82ada01883e51f0695172f98dff -
LinuxLinux 3.10 -

II. Public POCs for CVE-2025-40303

#POC DescriptionSource LinkShenlong Link
AI-Generated POCPremium

No public POC found.

Login to generate AI POC

III. Intelligence Information for CVE-2025-40303

登录查看更多情报信息。

Same Patch Batch · Linux · 2025-12-08 · 82 CVEs total

CVE-2022-50630mm: hugetlb: fix UAF in hugetlb_handle_userfault
CVE-2023-53752net: deal with integer overflows in kmalloc_reserve()
CVE-2022-50627wifi: ath11k: fix monitor mode bringup crash
CVE-2022-50628drm/gud: Fix UBSAN warning
CVE-2022-50626media: dvb-usb: fix memory leak in dvb_usb_adapter_init()
CVE-2022-50623fpga: prevent integer overflow in dfl_feature_ioctl_set_irq()
CVE-2022-50622ext4: fix potential memory leak in ext4_fc_record_modified_inode()
CVE-2022-50621dm: verity-loadpin: Only trust verity targets with enforcement
CVE-2022-50620f2fs: fix to invalidate dcc->f2fs_issue_discard in error path
CVE-2022-50624net: netsec: fix error handling in netsec_register_mdio()
CVE-2022-50629wifi: rsi: Fix memory leak in rsi_coex_attach()
CVE-2023-53742kcsan: Avoid READ_ONCE() in read_instrumented_memory()
CVE-2023-53743PCI: Free released resource after coalescing
CVE-2023-53744soc: ti: pm33xx: Fix refcount leak in am33xx_pm_probe
CVE-2023-53745um: vector: Fix memory leak in vector_config
CVE-2023-53746s390/vfio-ap: fix memory leak in vfio_ap device driver
CVE-2023-53747vc_screen: reload load of struct vc_data pointer in vcs_write() to avoid UAF
CVE-2023-53748media: mediatek: vcodec: Fix potential array out-of-bounds in decoder queue_setup
CVE-2023-53750pinctrl: freescale: Fix a memory out of bounds when num_configs is 1
CVE-2023-53751cifs: fix potential use-after-free bugs in TCP_Server_Info::hostname

Showing top 20 of 82 CVEs. View all on vendor page → →

IV. Related Vulnerabilities

V. Comments for CVE-2025-40303

No comments yet


Leave a comment