In the Linux kernel, the following vulnerability has been resolved:
btrfs: fix crash on racing fsync and size-extending write into prealloc
We have been seeing crashes on duplicate keys in btrfs_set_item_key_safe():
BTRFS critical (device vdb): slot 4 key (450 108 8192) new key (450 108 8192) ------------[ cut here ]------------ kernel BUG at fs/btrfs/ctree.c:2620! invalid opcode: 0000 [#1] PREEMPT SMP PTI CPU: 0 PID: 3139 Comm: xfs_io Kdump: loaded Not tainted 6.9.0 #6 Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.3-2.fc40 04/01/2014 RIP: 0010:btrfs_set_item_key_safe+0x11f/0x290 [btrfs]
With the following stack trace:
#0 btrfs_set_item_key_safe (fs/btrfs/ctree.c:2620:4) #1 btrfs_drop_extents (fs/btrfs/file.c:411:4) #2 log_one_extent (fs/btrfs/tree-log.c:4732:9) #3 btrfs_log_changed_extents (fs/btrfs/tree-log.c:4955:9) #4 btrfs_log_inode (fs/btrfs/tree-log.c:6626:9) #5 btrfs_log_inode_parent (fs/btrfs/tree-log.c:7070:8) #6 btrfs_log_dentry_safe (fs/btrfs/tree-log.c:7171:8) #7 btrfs_sync_file (fs/btrfs/file.c:1933:8) #8 vfs_fsync_range (fs/sync.c:188:9) #9 vfs_fsync (fs/sync.c:202:9) #10 do_fsync (fs/sync.c:212:9) #11 __do_sys_fdatasync (fs/sync.c:225:9) #12 __se_sys_fdatasync (fs/sync.c:223:1) #13 __x64_sys_fdatasync (fs/sync.c:223:1) #14 do_syscall_x64 (arch/x86/entry/common.c:52:14) #15 do_syscall_64 (arch/x86/entry/common.c:83:7) #16 entry_SYSCALL_64+0xaf/0x14c (arch/x86/entry/entry_64.S:121)
So we're logging a changed extent from fsync, which is splitting an extent in the log tree. But this split part already exists in the tree, triggering the BUG().
This is the state of the log tree at the time of the crash, dumped with drgn (https://github.com/osandov/drgn/blob/main/contrib/btrfs_tree.py) to get more details than btrfs_print_leaf() gives us:
>>> print_extent_buffer(prog.crashed_thread().stack_trace()[0]["eb"]) leaf 33439744 level 0 items 72 generation 9 owner 18446744073709551610 leaf 33439744 flags 0x100000000000000 fs uuid e5bd3946-400c-4223-8923-190ef1f18677 chunk uuid d58cb17e-6d02-494a-829a-18b7d8a399da item 0 key (450 INODE_ITEM 0) itemoff 16123 itemsize 160 generation 7 transid 9 size 8192 nbytes 8473563889606862198 block group 0 mode 100600 links 1 uid 0 gid 0 rdev 0 sequence 204 flags 0x10(PREALLOC) atime 1716417703.220000000 (2024-05-22 15:41:43) ctime 1716417704.983333333 (2024-05-22 15:41:44) mtime 1716417704.983333333 (2024-05-22 15:41:44) otime 17592186044416.000000000 (559444-03-08 01:40:16) item 1 key (450 INODE_REF 256) itemoff 16110 itemsize 13 index 195 namelen 3 name: 193 item 2 key (450 XATTR_ITEM 1640047104) itemoff 16073 itemsize 37 location key (0 UNKNOWN.0 0) type XATTR transid 7 data_len 1 name_len 6 name: user.a data a item 3 key (450 EXTENT_DATA 0) itemoff 16020 itemsize 53 generation 9 type 1 (regular) extent data disk byte 303144960 nr 12288 extent data offset 0 nr 4096 ram 12288 extent compression 0 (none) item 4 key (450 EXTENT_DATA 4096) itemoff 15967 itemsize 53 generation 9 type 2 (prealloc) prealloc data disk byte 303144960 nr 12288 prealloc data offset 4096 nr 8192 item 5 key (450 EXTENT_DATA 8192) itemoff 15914 itemsize 53 generation 9 type 2 (prealloc) prealloc data disk byte 303144960 nr 12288 prealloc data offset 8192 nr 4096 ...
So the real problem happened earlier: notice that items 4 (4k-12k) and 5 (8k-12k) overlap. Both are prealloc extents. Item 4 straddles i_size and item 5 starts at i_size.
Here is the state of ---truncated---
| Product | Vendor Advisory | Solution File | Added | Published |
|---|---|---|---|---|
| Amazon_linux_2023 | — | Upgrade bpftool-debuginfoUpgrade kernel-debuginfo-common-aarch64Upgrade bpftoolUpgrade kernel-modules-extra-commonUpgrade kernel-livepatch-6.1.94-99.176Upgrade python3-perf-debuginfoUpgrade perfUpgrade perf-debuginfoUpgrade kernel-toolsUpgrade kernelUpgrade python3-perfUpgrade kernel-tools-debuginfoUpgrade kernel-libbpf-develUpgrade kernel-modules-extraUpgrade kernel-debuginfoUpgrade kernel-headersUpgrade kernel-libbpfUpgrade kernel-develUpgrade kernel-tools-develUpgrade kernel-debuginfo-common-x86_64Upgrade kernel-libbpf-static | Jun 11, 2025 | Jun 25, 2024 |
| Debian | — | Upgrade linux | Jul 30, 2024 | Jun 25, 2024 |
| Oracle_linux | — | Upgrade kernel-uek | Feb 24, 2026 | Jun 25, 2024 |
| Redhat_linux | — | No solution exists | Jul 9, 2025 | Jun 25, 2024 |
| Suse | — | Upgrade kernel-syms-rtUpgrade kernel-default-optionalUpgrade kernel-obs-buildUpgrade kernel-rt-extraUpgrade kselftests-kmp-rtUpgrade kernel-develUpgrade dlm-kmp-azureUpgrade kernel-debug-livepatch-develUpgrade dtb-qcomUpgrade kernel-rt-livepatch-develUpgrade dtb-amlogicUpgrade dtb-sprdUpgrade kernel-rt-livepatchUpgrade dlm-kmp-rtUpgrade dtb-apmUpgrade reiserfs-kmp-azureUpgrade dtb-armUpgrade dtb-renesasUpgrade kernel-64kb-develUpgrade kernel-64kb-extraUpgrade reiserfs-kmp-rtUpgrade dtb-mediatekUpgrade dtb-rockchipUpgrade dlm-kmp-defaultUpgrade kernel-default-baseUpgrade kernel-docsUpgrade dtb-nvidiaUpgrade cluster-md-kmp-64kbUpgrade kernel-rt_debug-vdsoUpgrade kernel-devel-rtUpgrade dtb-socionextUpgrade kernel-rt_debug-livepatch-develUpgrade kernel-defaultUpgrade kernel-default-base-rebuildUpgrade kselftests-kmp-defaultUpgrade kernel-rt-develUpgrade kernel-azure-develUpgrade kernel-debug-vdsoUpgrade kernel-default-manUpgrade kernel-azure-vdsoUpgrade kernel-default-livepatch-develUpgrade kernel-rtUpgrade ocfs2-kmp-azureUpgrade cluster-md-kmp-defaultUpgrade dtb-xilinxUpgrade gfs2-kmp-defaultUpgrade kernel-rt_debug-develUpgrade reiserfs-kmp-defaultUpgrade kernel-sourceUpgrade gfs2-kmp-azureUpgrade kselftests-kmp-64kbUpgrade dtb-marvellUpgrade gfs2-kmp-rtUpgrade kernel-64kb-livepatch-develUpgrade ocfs2-kmp-64kbUpgrade dtb-allwinnerUpgrade dtb-alteraUpgrade kernel-azure-extraUpgrade kernel-source-rtUpgrade kernel-rt-vdsoUpgrade dtb-caviumUpgrade kernel-default-livepatchUpgrade kernel-default-develUpgrade kernel-debugUpgrade kernel-azure-livepatch-develUpgrade kernel-64kb-optionalUpgrade kselftests-kmp-azureUpgrade kernel-rt_debugUpgrade dtb-exynosUpgrade kernel-kvmsmallUpgrade kernel-64kbUpgrade dtb-hisiliconUpgrade dtb-broadcomUpgrade kernel-kvmsmall-develUpgrade cluster-md-kmp-azureUpgrade ocfs2-kmp-rtUpgrade kernel-zfcpdumpUpgrade kernel-source-azureUpgrade kernel-default-vdsoUpgrade gfs2-kmp-64kbUpgrade dtb-amazonUpgrade dlm-kmp-64kbUpgrade kernel-source-vanillaUpgrade kernel-rt-optionalUpgrade kernel-kvmsmall-livepatch-develUpgrade kernel-debug-develUpgrade cluster-md-kmp-rtUpgrade dtb-freescaleUpgrade kernel-kvmsmall-vdsoUpgrade kernel-docs-htmlUpgrade kernel-syms-azureUpgrade kernel-obs-qaUpgrade kernel-azure-optionalUpgrade dtb-appleUpgrade dtb-amdUpgrade reiserfs-kmp-64kbUpgrade kernel-devel-azureUpgrade kernel-default-extraUpgrade kernel-azure-baseUpgrade kernel-azureUpgrade kernel-symsUpgrade ocfs2-kmp-defaultUpgrade kernel-macrosUpgrade dtb-lg | Jul 10, 2024 | Jun 25, 2024 |
| Ubuntu | — | Upgrade linux-image-intel-iotgUpgrade linux-image-lowlatency-5.15Upgrade linux-image-6.8.0-44-genericUpgrade linux-image-intel-iot-realtimeUpgrade linux-image-5.15.0-1055-nvidia-tegraUpgrade linux-image-6.8.0-1011-raspiUpgrade linux-image-oracle-64kUpgrade linux-image-generic-64k-5.15Upgrade linux-image-azure-fdeUpgrade linux-image-ibm-lts-24.04Upgrade linux-image-generic-hwe-20.04Upgrade linux-image-generic-64kUpgrade linux-image-nvidia-64kUpgrade linux-image-gcp-fips-5.15Upgrade linux-image-intel-iot-realtime-5.15Upgrade linux-image-azure-5.15Upgrade linux-image-xilinx-zynqmpUpgrade linux-image-gkeopUpgrade linux-image-oem-22.04bUpgrade linux-image-nvidia-5.15Upgrade linux-image-6.8.0-1012-oracleUpgrade linux-image-5.15.0-1109-azure-fipsUpgrade linux-image-6.8.0-1013-nvidia-lowlatencyUpgrade linux-image-lowlatency-64k-hwe-22.04Upgrade linux-image-5.15.0-173-lowlatency-64kUpgrade linux-image-oem-20.04dUpgrade linux-image-gcpUpgrade linux-image-5.15.0-1100-oracleUpgrade linux-image-nvidia-6.8Upgrade linux-image-6.8.0-44-lowlatency-64kUpgrade linux-image-5.15.0-1110-azureUpgrade linux-image-azure-lts-22.04Upgrade linux-image-intelUpgrade linux-image-nvidia-tegraUpgrade linux-image-6.8.0-1014-gcpUpgrade linux-image-5.15.0-1099-gkeUpgrade linux-image-nvidia-tegra-igx-5.15Upgrade linux-image-5.15.0-1067-xilinx-zynqmpUpgrade linux-image-oem-22.04cUpgrade linux-image-nvidia-tegra-rt-5.15Upgrade linux-image-raspiUpgrade linux-image-gcp-fipsUpgrade linux-image-5.15.0-1094-intel-iot-realtimeUpgrade linux-image-gkeop-5.15Upgrade linux-image-oracle-5.15Upgrade linux-image-oem-22.04dUpgrade linux-image-azureUpgrade linux-image-generic-hwe-24.04Upgrade linux-image-5.15.0-173-genericUpgrade linux-image-aws-fips-5.15Upgrade linux-image-nvidia-lowlatencyUpgrade linux-image-6.8.0-1012-oemUpgrade linux-image-5.15.0-1086-gkeopUpgrade linux-image-6.8.0-1012-ibmUpgrade linux-image-5.15.0-1098-nvidia-lowlatencyUpgrade linux-image-5.15.0-1098-intel-iotgUpgrade linux-image-virtual-5.15Upgrade linux-image-6.8.0-45-generic-64kUpgrade linux-image-generic-lpae-hwe-20.04Upgrade linux-image-6.8.0-45-genericUpgrade linux-image-oem-20.04cUpgrade linux-image-kvmUpgrade linux-image-oracle-lts-22.04Upgrade linux-image-raspi-5.15Upgrade linux-image-5.15.0-1103-aws-64kUpgrade linux-image-azure-fipsUpgrade linux-image-kvm-5.15Upgrade linux-image-realtime-5.15Upgrade linux-image-virtual-hwe-20.04Upgrade linux-image-6.8.0-1014-azure-fdeUpgrade linux-image-generic-hwe-22.04Upgrade linux-image-6.8.0-1013-nvidia-64kUpgrade linux-image-virtual-hwe-22.04Upgrade linux-image-5.15.0-173-generic-64kUpgrade linux-image-5.15.0-1103-gcp-fipsUpgrade linux-image-fipsUpgrade linux-image-nvidia-64k-6.8Upgrade linux-image-5.15.0-1095-kvmUpgrade linux-image-6.8.0-1014-azureUpgrade linux-image-realtimeUpgrade linux-image-raspi-nolpaeUpgrade linux-image-genericUpgrade linux-image-5.15.0-1103-awsUpgrade linux-image-5.15.0-1097-ibmUpgrade linux-image-aws-lts-22.04Upgrade linux-image-6.8.0-1012-oracle-64kUpgrade linux-image-6.8.0-1015-awsUpgrade linux-image-generic-64k-hwe-22.04Upgrade linux-image-lowlatency-64k-5.15Upgrade linux-image-oracleUpgrade linux-image-6.8.0-1013-nvidia-lowlatency-64kUpgrade linux-image-nvidia-tegra-5.15Upgrade linux-image-5.15.0-173-generic-lpaeUpgrade linux-image-6.8.0-1013-nvidiaUpgrade linux-image-nvidia-tegra-igxUpgrade linux-image-virtual-hwe-24.04Upgrade linux-image-fips-5.15Upgrade linux-image-lowlatencyUpgrade linux-image-lowlatency-hwe-20.04Upgrade linux-image-5.15.0-1103-gcpUpgrade linux-image-azure-cvmUpgrade linux-image-oem-20.04bUpgrade linux-image-lowlatency-64k-hwe-20.04Upgrade linux-image-5.15.0-1109-azureUpgrade linux-image-5.15.0-1098-nvidiaUpgrade linux-image-nvidia-tegra-igx-rtUpgrade linux-image-azure-fips-5.15Upgrade linux-image-5.15.0-1102-realtimeUpgrade linux-image-generic-64k-hwe-24.04Upgrade linux-image-awsUpgrade linux-image-6.8.0-44-generic-64kUpgrade linux-image-nvidia-tegra-rtUpgrade linux-image-generic-5.15Upgrade linux-image-aws-5.15Upgrade linux-image-ibm-5.15Upgrade linux-image-virtualUpgrade linux-image-5.15.0-173-lowlatencyUpgrade linux-image-xilinx-zynqmp-5.15Upgrade linux-image-nvidia-lowlatency-64kUpgrade linux-image-ibm-classicUpgrade linux-image-generic-lpae-5.15Upgrade linux-image-aws-64k-lts-22.04Upgrade linux-image-5.15.0-1055-nvidia-tegra-rtUpgrade linux-image-generic-lpaeUpgrade linux-image-lowlatency-hwe-22.04Upgrade linux-image-5.15.0-1097-raspiUpgrade linux-image-oem-20.04Upgrade linux-image-5.15.0-1103-aws-fipsUpgrade linux-image-intel-iotg-5.15Upgrade linux-image-gcp-lts-22.04Upgrade linux-image-5.15.0-1044-nvidia-tegra-igx-rtUpgrade linux-image-6.8.0-44-lowlatencyUpgrade linux-image-lowlatency-64kUpgrade linux-image-nvidia-lowlatency-5.15Upgrade linux-image-aws-64k-5.15Upgrade linux-image-oem-22.04aUpgrade linux-image-5.15.0-173-fipsUpgrade linux-image-nvidia-tegra-igx-rt-5.15Upgrade linux-image-gke-5.15Upgrade linux-image-gcp-5.15Upgrade linux-image-nvidiaUpgrade linux-image-ibmUpgrade linux-image-aws-fipsUpgrade linux-image-6.8.0-1010-gkeUpgrade linux-image-generic-64k-hwe-20.04Upgrade linux-image-5.15.0-1044-nvidia-tegra-igxUpgrade linux-image-oem-22.04Upgrade linux-image-gke | Sep 12, 2024 | Jun 25, 2024 |
| Vmware Photon_os | — | Use 'tdnf update' to upgrade all packages to the latest version. | Oct 10, 2025 | Jun 25, 2024 |
With curated Threat Intelligence, you can see which vulnerabilities truly put you at risk, prioritize what matters most, and act before attackers do.
Explore Intelligence Hub