Acknowledged
Created: Aug 17, 2025
Updated: Aug 18, 2025
Found In Version: 10.23.30.1
Severity: Standard
Applicable for: Wind River Linux LTS 23
Component/s: Kernel
In the Linux kernel, the following vulnerability has been resolved:EOL][EOL]btrfs: fix assertion when building free space tree[EOL][EOL]When building the free space tree with the block group tree feature[EOL]enabled, we can hit an assertion failure like this:[EOL][EOL] BTRFS info (device loop0 state M): rebuilding free space tree[EOL] assertion failed: ret == 0, in fs/btrfs/free-space-tree.c:1102[EOL] ------------[ cut here ]------------[EOL] kernel BUG at fs/btrfs/free-space-tree.c:1102![EOL] Internal error: Oops - BUG: 00000000f2000800 [#1] SMP[EOL] Modules linked in:[EOL] CPU: 1 UID: 0 PID: 6592 Comm: syz-executor322 Not tainted 6.15.0-rc7-syzkaller-gd7fa1af5b33e #0 PREEMPT[EOL] Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 05/07/2025[EOL] pstate: 60400005 (nZCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)[EOL] pc : populate_free_space_tree+0x514/0x518 fs/btrfs/free-space-tree.c:1102[EOL] lr : populate_free_space_tree+0x514/0x518 fs/btrfs/free-space-tree.c:1102[EOL] sp : ffff8000a4ce7600[EOL] x29: ffff8000a4ce76e0 x28: ffff0000c9bc6000 x27: ffff0000ddfff3d8[EOL] x26: ffff0000ddfff378 x25: dfff800000000000 x24: 0000000000000001[EOL] x23: ffff8000a4ce7660 x22: ffff70001499cecc x21: ffff0000e1d8c160[EOL] x20: ffff0000e1cb7800 x19: ffff0000e1d8c0b0 x18: 00000000ffffffff[EOL] x17: ffff800092f39000 x16: ffff80008ad27e48 x15: ffff700011e740c0[EOL] x14: 1ffff00011e740c0 x13: 0000000000000004 x12: ffffffffffffffff[EOL] x11: ffff700011e740c0 x10: 0000000000ff0100 x9 : 94ef24f55d2dbc00[EOL] x8 : 94ef24f55d2dbc00 x7 : 0000000000000001 x6 : 0000000000000001[EOL] x5 : ffff8000a4ce6f98 x4 : ffff80008f415ba0 x3 : ffff800080548ef0[EOL] x2 : 0000000000000000 x1 : 0000000100000000 x0 : 000000000000003e[EOL] Call trace:[EOL] populate_free_space_tree+0x514/0x518 fs/btrfs/free-space-tree.c:1102 (P)[EOL] btrfs_rebuild_free_space_tree+0x14c/0x54c fs/btrfs/free-space-tree.c:1337[EOL] btrfs_start_pre_rw_mount+0xa78/0xe10 fs/btrfs/disk-io.c:3074[EOL] btrfs_remount_rw fs/btrfs/super.c:1319 [inline][EOL] btrfs_reconfigure+0x828/0x2418 fs/btrfs/super.c:1543[EOL] reconfigure_super+0x1d4/0x6f0 fs/super.c:1083[EOL] do_remount fs/namespace.c:3365 [inline][EOL] path_mount+0xb34/0xde0 fs/namespace.c:4200[EOL] do_mount fs/namespace.c:4221 [inline][EOL] __do_sys_mount fs/namespace.c:4432 [inline][EOL] __se_sys_mount fs/namespace.c:4409 [inline][EOL] __arm64_sys_mount+0x3e8/0x468 fs/namespace.c:4409[EOL] __invoke_syscall arch/arm64/kernel/syscall.c:35 [inline][EOL] invoke_syscall+0x98/0x2b8 arch/arm64/kernel/syscall.c:49[EOL] el0_svc_common+0x130/0x23c arch/arm64/kernel/syscall.c:132[EOL] do_el0_svc+0x48/0x58 arch/arm64/kernel/syscall.c:151[EOL] el0_svc+0x58/0x17c arch/arm64/kernel/entry-common.c:767[EOL] el0t_64_sync_handler+0x78/0x108 arch/arm64/kernel/entry-common.c:786[EOL] el0t_64_sync+0x198/0x19c arch/arm64/kernel/entry.S:600[EOL] Code: f0047182 91178042 528089c3 9771d47b (d4210000)[EOL] ---[ end trace 0000000000000000 ]---[EOL][EOL]This happens because we are processing an empty block group, which has[EOL]no extents allocated from it, there are no items for this block group,[EOL]including the block group item since block group items are stored in a[EOL]dedicated tree when using the block group tree feature. It also means[EOL]this is the block group with the highest start offset, so there are no[EOL]higher keys in the extent root, hence btrfs_search_slot_for_read()[EOL]returns 1 (no higher key found).[EOL][EOL]Fix this by asserting 'ret' is 0 only if the block group tree feature[EOL]is not enabled, in which case we should find a block group item for[EOL]the block group since it's stored in the extent root and block group[EOL]item keys are greater than extent item keys (the value for[EOL]BTRFS_BLOCK_GROUP_ITEM_KEY is 192 and for BTRFS_EXTENT_ITEM_KEY and[EOL]BTRFS_METADATA_ITEM_KEY the values are 168 and 169 respectively).[EOL]In case 'ret' is 1, we just need to add a record to the free space[EOL]tree which spans the whole block group, and we can achieve this by[EOL]making 'ret == 0' as the while loop's condition.
CREATE(Triage):(User=pbi-cn) [CVE-2025-38503 (https://nvd.nist.gov/vuln/detail/CVE-2025-38503)