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 python-perf-debuginfoUpgrade kernel-tools-debuginfoUpgrade kernel-headersUpgrade kernel-develUpgrade kernel-livepatch-5.15.149-99.161Upgrade kernelUpgrade perf-debuginfoUpgrade bpftool-debuginfoUpgrade kernel-tools-develUpgrade kernel-debuginfoUpgrade kernel-debuginfo-common-x86_64Upgrade kernel-debuginfo-common-aarch64Upgrade bpftoolUpgrade perfUpgrade kernel-livepatch-5.10.210-201.852Upgrade python-perfUpgrade kernel-tools | Aug 28, 2024 | Apr 3, 2024 |
| Amazon_linux_2023 | — | Upgrade bpftoolUpgrade python3-perf-debuginfoUpgrade kernel-libbpf-staticUpgrade kernel-debuginfo-common-x86_64Upgrade kernel-toolsUpgrade bpftool-debuginfoUpgrade kernel-libbpf-develUpgrade kernel-modules-extraUpgrade kernel-headersUpgrade kernel-tools-debuginfoUpgrade kernel-livepatch-6.1.79-99.164Upgrade kernel-develUpgrade kernel-libbpfUpgrade python3-perfUpgrade perf-debuginfoUpgrade kernel-debuginfoUpgrade kernel-tools-develUpgrade kernel-modules-extra-commonUpgrade perfUpgrade kernelUpgrade kernel-debuginfo-common-aarch64 | Feb 17, 2025 | Apr 3, 2024 |
| Debian | — | Upgrade linux | May 8, 2024 | Apr 3, 2024 |
| Suse | — | Upgrade kernel-devel-rtUpgrade dtb-allwinnerUpgrade dtb-exynosUpgrade kernel-64kb-extraUpgrade gfs2-kmp-azureUpgrade dtb-alteraUpgrade dtb-rockchipUpgrade kernel-source-vanillaUpgrade cluster-md-kmp-azureUpgrade reiserfs-kmp-defaultUpgrade kernel-rtUpgrade kernel-source-azureUpgrade kernel-syms-azureUpgrade cluster-md-kmp-rtUpgrade kernel-debugUpgrade reiserfs-kmp-azureUpgrade kernel-rt_debug-develUpgrade kernel-zfcpdumpUpgrade dtb-amazonUpgrade kernel-sourceUpgrade kernel-64kb-develUpgrade kernel-develUpgrade kernel-kvmsmall-develUpgrade kernel-rt-develUpgrade kernel-devel-azureUpgrade kernel-symsUpgrade kernel-default-base-rebuildUpgrade kselftests-kmp-64kbUpgrade kernel-azure-optionalUpgrade kernel-rt-livepatchUpgrade kernel-rt_debug-livepatch-develUpgrade kernel-debug-vdsoUpgrade dtb-armUpgrade dtb-mediatekUpgrade dtb-qcomUpgrade dtb-sprdUpgrade dtb-xilinxUpgrade kernel-64kbUpgrade kernel-default-optionalUpgrade kernel-azureUpgrade ocfs2-kmp-defaultUpgrade kselftests-kmp-azureUpgrade kernel-default-develUpgrade gfs2-kmp-defaultUpgrade kernel-default-vdsoUpgrade ocfs2-kmp-azureUpgrade dlm-kmp-64kbUpgrade dtb-caviumUpgrade dtb-lgUpgrade kernel-rt-livepatch-develUpgrade dtb-socionextUpgrade dtb-appleUpgrade kernel-rt-optionalUpgrade dtb-apmUpgrade kernel-default-livepatch-develUpgrade reiserfs-kmp-64kbUpgrade kernel-kvmsmall-livepatch-develUpgrade kernel-default-baseUpgrade dtb-marvellUpgrade dlm-kmp-defaultUpgrade dtb-amdUpgrade ocfs2-kmp-64kbUpgrade kernel-64kb-livepatch-develUpgrade kernel-syms-rtUpgrade kernel-rt_debug-vdsoUpgrade kernel-macrosUpgrade kernel-kvmsmall-vdsoUpgrade dtb-nvidiaUpgrade kernel-obs-qaUpgrade kernel-azure-extraUpgrade dtb-hisiliconUpgrade kernel-obs-buildUpgrade kernel-azure-vdsoUpgrade kernel-azure-develUpgrade dlm-kmp-azureUpgrade cluster-md-kmp-64kbUpgrade kselftests-kmp-rtUpgrade kselftests-kmp-defaultUpgrade kernel-rt_debugUpgrade kernel-default-extraUpgrade kernel-kvmsmallUpgrade cluster-md-kmp-defaultUpgrade kernel-source-rtUpgrade dtb-freescaleUpgrade gfs2-kmp-64kbUpgrade kernel-docs-htmlUpgrade kernel-64kb-optionalUpgrade dtb-broadcomUpgrade kernel-debug-develUpgrade kernel-docsUpgrade reiserfs-kmp-rtUpgrade dtb-amlogicUpgrade kernel-default-livepatchUpgrade dlm-kmp-rtUpgrade dtb-renesasUpgrade ocfs2-kmp-rtUpgrade kernel-azure-livepatch-develUpgrade gfs2-kmp-rtUpgrade kernel-rt-vdsoUpgrade kernel-rt-extraUpgrade kernel-defaultUpgrade kernel-debug-livepatch-devel | May 6, 2024 | Apr 3, 2024 |
| Ubuntu | — | Upgrade linux-lowlatency-hwe-5.15Upgrade linux-oracle-5.15Upgrade linux-gcp-5.15Upgrade linux-hwe-5.15Upgrade linuxUpgrade linux-intel-iotg-5.15Upgrade linux-azureUpgrade linux-xilinx-zynqmpUpgrade linux-azure-fipsUpgrade linux-aws-5.15Upgrade linux-gkeopUpgrade linux-nvidia-tegra-5.15Upgrade linux-lowlatencyUpgrade linux-gkeop-5.15Upgrade linux-nvidia-tegraUpgrade linux-oracleUpgrade linux-raspiUpgrade linux-realtimeUpgrade linux-gkeUpgrade linux-fipsUpgrade linux-intel-iot-realtimeUpgrade linux-raspi-realtimeUpgrade linux-intel-iotgUpgrade linux-gcpUpgrade linux-nvidia-6.5Upgrade linux-ibmUpgrade linux-aws-fipsUpgrade linux-awsUpgrade linux-nvidia-tegra-igxUpgrade linux-gcp-fipsUpgrade linux-ibm-5.15Upgrade linux-kvmUpgrade linux-bluefieldUpgrade linux-riscv-5.15Upgrade linux-nvidiaUpgrade linux-azure-5.15Upgrade linux-azure-fde | 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