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

Goal: 1000 CNY · Raised: 1336 CNY

100%

CVE-2026-80734— btrfs: initialize inode mapping flags for cached inodes

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 kernel存在安全漏洞,该漏洞源于btrfs缓存inode时未正确初始化inode映射标志和最小folio order,可能导致页缓存读取获得小于块大小的folio,进而触发断言,导致内核崩溃。

CVSS 8.8 · High EPSS 0.35% · P28

Possible ATT&CK Techniques 2 AI

T1029 · Scheduled Transfer T1499.005

Affected Version Matrix 10

VendorProduct Version RangeStatus
Linux Linux ecde48a1a6b3256bd49db8780bf37556b157783c< 0d26249671171ab759cb4fdce673554a690fa655 affected
ecde48a1a6b3256bd49db8780bf37556b157783c< 0ef349734a93227b45f65fc50a3311d1cc5f03e9 affected
01b002151539a4c2b27bfff9af033329a9b659e7 affected
ae584726e6eddf6cfbe49b3f4a78b3197716b6f8 affected
6.12.111< 6.13 affected
6.14.6< 6.15 affected
6.15 affected
< 6.15 unaffected
… +2 more rows
Get alerts for future matching vulnerabilities Log in to subscribe

I. Basic Information for CVE-2026-80734

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: initialize inode mapping flags for cached inodes
Source: CVE Program / CVE List V5
Vulnerability Description
In the Linux kernel, the following vulnerability has been resolved: btrfs: initialize inode mapping flags for cached inodes [BUG] When running generic/795 with 8K block size, 4K page size, the test always fails, triggering some ASSERT()s related to folio size: 795 (241074): drop_caches: 3 assertion failed: IS_ALIGNED(start, blocksize) && IS_ALIGNED(end + 1, blocksize), in extent_io.c:1404 (blocksize=8192 root=262 ino=258 start=16826368 end=16830463 mapping min order=0) ------------[ cut here ]------------ kernel BUG at extent_io.c:1404! Oops: invalid opcode: 0000 [#1] SMP CPU: 8 UID: 0 PID: 241105 Comm: fsstress Tainted: G OE 7.2.0-rc5-custom+ #442 PREEMPT(full) f4bfb352566f3949f29c233ce6f735050a03b245 Tainted: [O]=OOT_MODULE, [E]=UNSIGNED_MODULE Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS unknown 02/02/2022 RIP: 0010:assert_folio_range.cold+0x3d/0x3f [btrfs] Call Trace: <TASK> btrfs_read_folio+0x9e/0x170 [btrfs 4cd1dd93b341b8ef766643f9512f4a86259567a3] prepare_one_folio.constprop.0+0x104/0x2a0 [btrfs 4cd1dd93b341b8ef766643f9512f4a86259567a3] btrfs_buffered_write+0x285/0xa50 [btrfs 4cd1dd93b341b8ef766643f9512f4a86259567a3] btrfs_do_write_iter+0x1aa/0x210 [btrfs 4cd1dd93b341b8ef766643f9512f4a86259567a3] iter_file_splice_write+0x31a/0x540 direct_splice_actor+0x53/0x170 splice_direct_to_actor+0xe9/0x240 do_splice_direct+0x76/0xb0 vfs_copy_file_range+0x1fd/0x630 __x64_sys_copy_file_range+0xf9/0x220 do_syscall_64+0xe1/0x790 entry_SYSCALL_64_after_hwframe+0x4b/0x53 </TASK> ---[ end trace 0000000000000000 ]--- The ASSERT() itself is added by a later patch. The crash is triggered with that new debug patch, and without this fix. [CAUSE] In the above case, the start 16826368 is properly 8K aligned, but the end (16830463 + 1) is not 8K aligned. Furthermore the mapping's minimal folio order is 0, not the expected 1 for 8K block size with 4K page size. So this means some inodes do not have btrfs_set_inode_mapping_order() called on it. The missing btrfs_set_inode_mapping_order() call happens for cached inodes, through the following events: - btrfs_create_new_inode() called for inode X Which properly sets minimal folio order for the VFS inode. - btrfs_update_inode() called for inode X Which calls btrfs_delayed_update_inode() to create a delayed_node into root->delayed_nodes xarray. - Drop cache/memory pressure, evicting in-memory inode X Which evicted the inode X, but delayed_node is still in root->delayed_nodes for future reuse. - btrfs_iget() for inode X called again btrfs_iget() |- btrfs_iget_locked() | |- iget5_locked_rcu() | Which creates a new vfs_inode for btrfs, whose mapping still | has the minimal order as 0. | |- btrfs_read_locked_inode() |- btrfs_fill_inode() | |- btrfs_get_delayed_node() | Which found out the previous node, and use that delayed | node to initialize the new inode. | |- filled = true; |- if (filled) goto cache_index; Which skips the btrfs_update_inode_mapping_flags() and btrfs_set_inode_mapping_order() calls. So the inode still has minimal folio order set as 0, not the required 1. Thus later page cache read will get a folio whose size is smaller than block size, as the mapping has its minimal folio order set as 0 not 1, then trigger the ASSERT(). [FIX] Move the btrfs_update_inode_mapping_flags() and btrfs_set_inode_mapping_order() calls under cache_index label, so that the mapping flags and minimal folio order is always set no matter if we have a cached inode.
Source: CVE Program / CVE List V5
CVSS Information
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
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 kernel存在安全漏洞,该漏洞源于btrfs缓存inode时未正确初始化inode映射标志和最小folio order,可能导致页缓存读取获得小于块大小的folio,进而触发断言,导致内核崩溃。
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 ecde48a1a6b3256bd49db8780bf37556b157783c ~ 0d26249671171ab759cb4fdce673554a690fa655 -
Linux Linux 6.15 -

II. Public POCs for CVE-2026-80734

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

No public POC found.

Login to generate AI POC

III. Intelligence Information for CVE-2026-80734

登录查看更多情报信息。

Patches & Fixes for CVE-2026-80734 (2)

Same Patch Batch · Linux · 2026-09-03 · 32 CVEs total

CVE-2026-80726 9.3 CRITICAL KVM: x86/mmu: WARN and clear role.invalid when creating a child shadow page
CVE-2026-80745 8.4 HIGH regulator: fp9931: Fix VPOS/VNEG voltage selector table
CVE-2026-80750 8.4 HIGH pmdomain: mediatek: fix remaining %pOF after of_node_put()
CVE-2026-80752 8.4 HIGH Input: psxpad-spi - set driver data before use
CVE-2026-80753 8.4 HIGH ovpn: run deferred work on a module-owned workqueue
CVE-2026-80747 8.0 HIGH drm/amdkfd: Add bounds check for CRAT subtype length
CVE-2026-80754 7.8 HIGH Input: synaptics-rmi4 - fix F55 transmitter electrode count typo
CVE-2026-80751 7.8 HIGH pmdomain: mediatek: mfg: initialize prev_o in mtk_mfg_attach_dev()
CVE-2026-80748 7.8 HIGH mmc: loongson2: Fix sg iteration in data reorder functions
CVE-2026-80736 7.8 HIGH thunderbolt: Fix bandwidth group reservation indexing
CVE-2026-80737 7.8 HIGH serial: amba-pl011: synchronize DMA teardown
CVE-2026-80732 7.8 HIGH ata: pata_sl82c105: fix bridge revision use-after-free
CVE-2026-80731 7.8 HIGH net: remove CAP_SYS_RAWIO zero-padding in dev_validate_header
CVE-2026-80735 7.3 HIGH ovpn: ensure socket is owned by ovpn before deref sk_user_data
CVE-2026-80738 7.3 HIGH bpf: Check sk_state before sk_protocol in bpf_tcp_*_syncookie
CVE-2026-80741 7.1 HIGH drm/log: Fix out-of-bounds read on empty message length
CVE-2026-80749 7.1 HIGH drm/connector/hdmi: Fix out of bounds memory read
CVE-2026-80730 ring-buffer: Fix crash passing ERR_PTR to kthread_stop()
CVE-2026-80729 mm/huge_memory: initialise workingset state before folio split
CVE-2026-80733 net: remove WARN_ON_ONCE() from sk_mc_loop()

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

IV. Related Vulnerabilities

V. Comments for CVE-2026-80734

No comments yet


Leave a comment