In the Linux kernel, the following vulnerability has been resolved:
btrfs: do not ASSERT() if the newly created subvolume already got read
[BUG] There is a syzbot crash, triggered by the ASSERT() during subvolume creation:
assertion failed: !anon_dev, in fs/btrfs/disk-io.c:1319 ------------[ cut here ]------------ kernel BUG at fs/btrfs/disk-io.c:1319! invalid opcode: 0000 [#1] PREEMPT SMP KASAN RIP: 0010:btrfs_get_root_ref.part.0+0x9aa/0xa60 <TASK> btrfs_get_new_fs_root+0xd3/0xf0 create_subvol+0xd02/0x1650 btrfs_mksubvol+0xe95/0x12b0 __btrfs_ioctl_snap_create+0x2f9/0x4f0 btrfs_ioctl_snap_create+0x16b/0x200 btrfs_ioctl+0x35f0/0x5cf0 __x64_sys_ioctl+0x19d/0x210 do_syscall_64+0x3f/0xe0 entry_SYSCALL_64_after_hwframe+0x63/0x6b ---[ end trace 0000000000000000 ]---
[CAUSE] During create_subvol(), after inserting root item for the newly created subvolume, we would trigger btrfs_get_new_fs_root() to get the btrfs_root of that subvolume.
The idea here is, we have preallocated an anonymous device number for the subvolume, thus we can assign it to the new subvolume.
But there is really nothing preventing things like backref walk to read the new subvolume. If that happens before we call btrfs_get_new_fs_root(), the subvolume would be read out, with a new anonymous device number assigned already.
In that case, we would trigger ASSERT(), as we really expect no one to read out that subvolume (which is not yet accessible from the fs). But things like backref walk is still possible to trigger the read on the subvolume.
Thus our assumption on the ASSERT() is not correct in the first place.
[FIX] Fix it by removing the ASSERT(), and just free the @anon_dev, reset it to 0, and continue.
If the subvolume tree is read out by something else, it should have already get a new anon_dev assigned thus we only need to free the preallocated one.
CVSS Details
- CVSS 3.1 Base Score: 5.5
- CVSS 3.1 Vector: (CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H)
Covered by Rapid7
| Product | Vendor Advisory | Solution File | Added | Published |
|---|---|---|---|---|
| Amazon Linux Ami 2 | — | Upgrade kernel-debuginfo-common-x86_64Upgrade python-perf-debuginfoUpgrade kernel-headersUpgrade bpftool-debuginfoUpgrade kernel-develUpgrade perf-debuginfoUpgrade kernel-livepatch-5.15.149-99.161Upgrade kernelUpgrade kernel-debuginfoUpgrade kernel-tools-develUpgrade kernel-tools-debuginfoUpgrade kernel-debuginfo-common-aarch64Upgrade python-perfUpgrade perfUpgrade kernel-livepatch-5.10.210-201.852Upgrade kernel-toolsUpgrade bpftool | Aug 28, 2024 | Apr 3, 2024 |
| Amazon_linux_2023 | — | Upgrade kernel-debuginfo-common-x86_64Upgrade bpftool-debuginfoUpgrade kernel-libbpf-staticUpgrade python3-perf-debuginfoUpgrade kernel-modules-extraUpgrade kernel-headersUpgrade bpftoolUpgrade kernel-toolsUpgrade kernel-libbpf-develUpgrade kernelUpgrade kernel-modules-extra-commonUpgrade kernel-debuginfoUpgrade kernel-livepatch-6.1.79-99.164Upgrade kernel-develUpgrade kernel-debuginfo-common-aarch64Upgrade kernel-tools-debuginfoUpgrade kernel-libbpfUpgrade perf-debuginfoUpgrade python3-perfUpgrade kernel-tools-develUpgrade perf | Feb 17, 2025 | Apr 3, 2024 |
| Debian | — | Upgrade linux | May 8, 2024 | Apr 3, 2024 |
| Suse | — | Upgrade dlm-kmp-rtUpgrade kernel-default-livepatchUpgrade kernel-rt-livepatch-develUpgrade kernel-rt_debug-vdsoUpgrade kernel-docsUpgrade kernel-kvmsmallUpgrade kernel-source-rtUpgrade ocfs2-kmp-rtUpgrade dtb-nvidiaUpgrade kernel-rt-extraUpgrade kernel-rt-optionalUpgrade kernel-rt-vdsoUpgrade kernel-defaultUpgrade dtb-renesasUpgrade dtb-socionextUpgrade kernel-kvmsmall-vdsoUpgrade gfs2-kmp-rtUpgrade kernel-obs-qaUpgrade kernel-debug-livepatch-develUpgrade dtb-amlogicUpgrade dtb-appleUpgrade kernel-rt_debugUpgrade kernel-azure-livepatch-develUpgrade dtb-apmUpgrade reiserfs-kmp-64kbUpgrade dlm-kmp-azureUpgrade dtb-hisiliconUpgrade kernel-debug-develUpgrade dtb-amdUpgrade kernel-macrosUpgrade kselftests-kmp-rtUpgrade kselftests-kmp-defaultUpgrade cluster-md-kmp-64kbUpgrade kernel-azure-develUpgrade kernel-azure-vdsoUpgrade kernel-docs-htmlUpgrade reiserfs-kmp-rtUpgrade kernel-default-extraUpgrade dtb-marvellUpgrade kernel-obs-buildUpgrade kernel-azure-extraUpgrade dtb-broadcomUpgrade gfs2-kmp-64kbUpgrade kernel-syms-rtUpgrade kernel-64kb-livepatch-develUpgrade dlm-kmp-defaultUpgrade ocfs2-kmp-64kbUpgrade cluster-md-kmp-defaultUpgrade dtb-freescaleUpgrade kernel-default-baseUpgrade kernel-64kb-optionalUpgrade kernel-default-livepatch-develUpgrade kernel-kvmsmall-livepatch-develUpgrade dtb-rockchipUpgrade dtb-caviumUpgrade kernel-kvmsmall-develUpgrade dtb-alteraUpgrade kernel-devel-rtUpgrade kernel-debug-vdsoUpgrade kernel-develUpgrade reiserfs-kmp-defaultUpgrade kselftests-kmp-azureUpgrade kernel-rtUpgrade kernel-source-azureUpgrade kernel-default-develUpgrade gfs2-kmp-azureUpgrade cluster-md-kmp-azureUpgrade kernel-zfcpdumpUpgrade kernel-rt-develUpgrade kernel-sourceUpgrade kernel-source-vanillaUpgrade dtb-sprdUpgrade kernel-devel-azureUpgrade kernel-default-vdsoUpgrade ocfs2-kmp-defaultUpgrade kernel-azure-optionalUpgrade kernel-rt_debug-develUpgrade dtb-amazonUpgrade cluster-md-kmp-rtUpgrade kernel-syms-azureUpgrade ocfs2-kmp-azureUpgrade kernel-azureUpgrade kernel-debugUpgrade reiserfs-kmp-azureUpgrade kernel-64kb-extraUpgrade dtb-exynosUpgrade dtb-allwinnerUpgrade dtb-xilinxUpgrade kernel-default-optionalUpgrade kernel-default-base-rebuildUpgrade kernel-rt-livepatchUpgrade dtb-qcomUpgrade dtb-mediatekUpgrade kselftests-kmp-64kbUpgrade kernel-symsUpgrade kernel-rt_debug-livepatch-develUpgrade kernel-64kbUpgrade kernel-64kb-develUpgrade dtb-armUpgrade gfs2-kmp-defaultUpgrade dtb-lgUpgrade dlm-kmp-64kb | May 6, 2024 | Apr 3, 2024 |
| Ubuntu | — | Upgrade linux-ibm-5.15Upgrade linux-aws-fipsUpgrade linux-gcpUpgrade linux-nvidia-6.5Upgrade linux-gcp-fipsUpgrade linux-ibmUpgrade linux-intel-iotgUpgrade linux-fipsUpgrade linux-intel-iot-realtimeUpgrade linux-nvidia-tegraUpgrade linux-raspi-realtimeUpgrade linux-awsUpgrade linux-nvidia-tegra-igxUpgrade linux-bluefieldUpgrade linux-kvmUpgrade linux-riscv-5.15Upgrade linux-oracle-5.15Upgrade linux-lowlatencyUpgrade linux-azureUpgrade linux-hwe-5.15Upgrade linux-realtimeUpgrade linux-intel-iotg-5.15Upgrade linux-gcp-5.15Upgrade linux-gkeopUpgrade linux-nvidia-tegra-5.15Upgrade linux-nvidiaUpgrade linux-gkeop-5.15Upgrade linux-lowlatency-hwe-5.15Upgrade linux-oracleUpgrade linux-aws-5.15Upgrade linux-raspiUpgrade linux-azure-fdeUpgrade linux-azure-5.15Upgrade linux-gkeUpgrade linuxUpgrade linux-azure-fipsUpgrade linux-xilinx-zynqmp | Nov 19, 2024 | Apr 3, 2024 |
| Vmware Photon_os | — | Use 'tdnf update' to upgrade all packages to the latest version. | Jan 20, 2025 | Apr 3, 2024 |
Prioritise with Active Threat Intelligence
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