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

Goal: 1000 CNY · Raised: 1000 CNY

100.0%

CVE-2025-39738— btrfs: do not allow relocation of partially dropped subvolumes

EPSS 0.02% · P6

Affected Version Matrix 16

VendorProductVersion RangeStatus
LinuxLinux638331fa56caeaa8b4d31cc1dfbe0ce989bcff67< fa086b1398cf7e5f7dee7241bd5f2855cb5df8dcaffected
638331fa56caeaa8b4d31cc1dfbe0ce989bcff67< fcb1f77b8ed8795608ca7a1f6505e2b07236c1f3affected
638331fa56caeaa8b4d31cc1dfbe0ce989bcff67< f83d4c81bda3b7d1813268ab77408f7a0ce691ffaffected
638331fa56caeaa8b4d31cc1dfbe0ce989bcff67< 39a93e1c9dbf7e11632efeb20fcf0fc1dcf64d51affected
638331fa56caeaa8b4d31cc1dfbe0ce989bcff67< 125e94a4b76b7b75d194f85bedd628097d2121f0affected
638331fa56caeaa8b4d31cc1dfbe0ce989bcff67< 4e403bd8e127d40dc7c05f06ee969c1ba1537ec5affected
638331fa56caeaa8b4d31cc1dfbe0ce989bcff67< 4289b494ac553e74e86fed1c66b2bf9530bc1082affected
5.11affected
… +8 more rows
Get alerts for future matching vulnerabilitiesLog in to subscribe

I. Basic Information for CVE-2025-39738

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: do not allow relocation of partially dropped subvolumes
Source: NVD (National Vulnerability Database)
Vulnerability Description
In the Linux kernel, the following vulnerability has been resolved: btrfs: do not allow relocation of partially dropped subvolumes [BUG] There is an internal report that balance triggered transaction abort, with the following call trace: item 85 key (594509824 169 0) itemoff 12599 itemsize 33 extent refs 1 gen 197740 flags 2 ref#0: tree block backref root 7 item 86 key (594558976 169 0) itemoff 12566 itemsize 33 extent refs 1 gen 197522 flags 2 ref#0: tree block backref root 7 ... BTRFS error (device loop0): extent item not found for insert, bytenr 594526208 num_bytes 16384 parent 449921024 root_objectid 934 owner 1 offset 0 BTRFS error (device loop0): failed to run delayed ref for logical 594526208 num_bytes 16384 type 182 action 1 ref_mod 1: -117 ------------[ cut here ]------------ BTRFS: Transaction aborted (error -117) WARNING: CPU: 1 PID: 6963 at ../fs/btrfs/extent-tree.c:2168 btrfs_run_delayed_refs+0xfa/0x110 [btrfs] And btrfs check doesn't report anything wrong related to the extent tree. [CAUSE] The cause is a little complex, firstly the extent tree indeed doesn't have the backref for 594526208. The extent tree only have the following two backrefs around that bytenr on-disk: item 65 key (594509824 METADATA_ITEM 0) itemoff 13880 itemsize 33 refs 1 gen 197740 flags TREE_BLOCK tree block skinny level 0 (176 0x7) tree block backref root CSUM_TREE item 66 key (594558976 METADATA_ITEM 0) itemoff 13847 itemsize 33 refs 1 gen 197522 flags TREE_BLOCK tree block skinny level 0 (176 0x7) tree block backref root CSUM_TREE But the such missing backref item is not an corruption on disk, as the offending delayed ref belongs to subvolume 934, and that subvolume is being dropped: item 0 key (934 ROOT_ITEM 198229) itemoff 15844 itemsize 439 generation 198229 root_dirid 256 bytenr 10741039104 byte_limit 0 bytes_used 345571328 last_snapshot 198229 flags 0x1000000000001(RDONLY) refs 0 drop_progress key (206324 EXTENT_DATA 2711650304) drop_level 2 level 2 generation_v2 198229 And that offending tree block 594526208 is inside the dropped range of that subvolume. That explains why there is no backref item for that bytenr and why btrfs check is not reporting anything wrong. But this also shows another problem, as btrfs will do all the orphan subvolume cleanup at a read-write mount. So half-dropped subvolume should not exist after an RW mount, and balance itself is also exclusive to subvolume cleanup, meaning we shouldn't hit a subvolume half-dropped during relocation. The root cause is, there is no orphan item for this subvolume. In fact there are 5 subvolumes from around 2021 that have the same problem. It looks like the original report has some older kernels running, and caused those zombie subvolumes. Thankfully upstream commit 8d488a8c7ba2 ("btrfs: fix subvolume/snapshot deletion not triggered on mount") has long fixed the bug. [ENHANCEMENT] For repairing such old fs, btrfs-progs will be enhanced. Considering how delayed the problem will show up (at run delayed ref time) and at that time we have to abort transaction already, it is too late. Instead here we reject any half-dropped subvolume for reloc tree at the earliest time, preventing confusion and extra time wasted on debugging similar bugs.
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 638331fa56caeaa8b4d31cc1dfbe0ce989bcff67 ~ fa086b1398cf7e5f7dee7241bd5f2855cb5df8dc -
LinuxLinux 5.11 -

II. Public POCs for CVE-2025-39738

#POC DescriptionSource LinkShenlong Link
AI-Generated POCPremium

No public POC found.

Login to generate AI POC

III. Intelligence Information for CVE-2025-39738

登录查看更多情报信息。

Same Patch Batch · Linux · 2025-09-11 · 54 CVEs total

CVE-2025-39774iio: adc: rzg2l_adc: Set driver data before enabling runtime PM
CVE-2025-39791dm: dm-crypt: Do not partially accept write BIOs with zoned targets
CVE-2025-39785drm/hisilicon/hibmc: fix irq_request()'s irq name variable is local
CVE-2025-39788scsi: ufs: exynos: Fix programming of HCI_UTRL_NEXUS_TYPE
CVE-2025-39787soc: qcom: mdt_loader: Ensure we don't read past the ELF header
CVE-2025-39786iio: adc: ad7173: fix channels index for syscalib_mode
CVE-2025-39789crypto: x86/aegis - Add missing error checks
CVE-2025-39777crypto: acomp - Fix CFI failure due to type punning
CVE-2025-39776mm/debug_vm_pgtable: clear page table entries at destroy_args()
CVE-2025-39775mm/mremap: fix WARN with uffd that has remap events disabled
CVE-2025-39779btrfs: subpage: keep TOWRITE tag until folio is cleaned
CVE-2025-39773net: bridge: fix soft lockup in br_multicast_query_expired()
CVE-2025-39772drm/hisilicon/hibmc: fix the hibmc loaded failed bug
CVE-2025-39771regulator: pca9450: Use devm_register_sys_off_handler
CVE-2025-39770net: gso: Forbid IPv6 TSO with extensions on devices with only IPV6_CSUM
CVE-2025-39769bnxt_en: Fix lockdep warning during rmmod
CVE-2025-39768net/mlx5: HWS, fix complex rules rehash error flow
CVE-2025-39766net/sched: Make cake_enqueue return NET_XMIT_CN when past buffer_limit
CVE-2025-39767LoongArch: Optimize module load time by optimizing PLT/GOT counting
CVE-2025-39765ALSA: timer: fix ida_free call while not allocated

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

IV. Related Vulnerabilities

V. Comments for CVE-2025-39738

No comments yet


Leave a comment