In the Linux kernel, the following vulnerability has been resolved:
btrfs: fix the inode leak in btrfs_iget()
[BUG] There is a bug report that a syzbot reproducer can lead to the following busy inode at unmount time:
BTRFS info (device loop1): last unmount of filesystem 1680000e-3c1e-4c46-84b6-56bd3909af50 VFS: Busy inodes after unmount of loop1 (btrfs) ------------[ cut here ]------------ kernel BUG at fs/super.c:650! Oops: invalid opcode: 0000 [#1] SMP KASAN NOPTI CPU: 0 UID: 0 PID: 48168 Comm: syz-executor Not tainted 6.15.0-rc2-00471-g119009db2674 #2 PREEMPT(full) Hardware name: QEMU Ubuntu 24.04 PC (i440FX + PIIX, 1996), BIOS 1.16.3-debian-1.16.3-2 04/01/2014 RIP: 0010:generic_shutdown_super+0x2e9/0x390 fs/super.c:650 Call Trace: <TASK> kill_anon_super+0x3a/0x60 fs/super.c:1237 btrfs_kill_super+0x3b/0x50 fs/btrfs/super.c:2099 deactivate_locked_super+0xbe/0x1a0 fs/super.c:473 deactivate_super fs/super.c:506 [inline] deactivate_super+0xe2/0x100 fs/super.c:502 cleanup_mnt+0x21f/0x440 fs/namespace.c:1435 task_work_run+0x14d/0x240 kernel/task_work.c:227 resume_user_mode_work include/linux/resume_user_mode.h:50 [inline] exit_to_user_mode_loop kernel/entry/common.c:114 [inline] exit_to_user_mode_prepare include/linux/entry-common.h:329 [inline] __syscall_exit_to_user_mode_work kernel/entry/common.c:207 [inline] syscall_exit_to_user_mode+0x269/0x290 kernel/entry/common.c:218 do_syscall_64+0xd4/0x250 arch/x86/entry/syscall_64.c:100 entry_SYSCALL_64_after_hwframe+0x77/0x7f </TASK>
[CAUSE] When btrfs_alloc_path() failed, btrfs_iget() directly returned without releasing the inode already allocated by btrfs_iget_locked().
This results the above busy inode and trigger the kernel BUG.
[FIX] Fix it by calling iget_failed() if btrfs_alloc_path() failed.
If we hit error inside btrfs_read_locked_inode(), it will properly call iget_failed(), so nothing to worry about.
Although the iget_failed() cleanup inside btrfs_read_locked_inode() is a break of the normal error handling scheme, let's fix the obvious bug and backport first, then rework the error handling later.
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 |
|---|---|---|---|---|
| Redhat_linux | — | — | Jul 9, 2025 | May 20, 2025 |
| Ubuntu | — | Upgrade linux-image-6.14.0-1009-oracleUpgrade linux-image-gcp-64kUpgrade linux-image-oracle-6.14Upgrade linux-image-generic-64k-6.14Upgrade linux-image-oem-24.04cUpgrade linux-image-6.14.0-24-genericUpgrade linux-image-realtime-6.14Upgrade linux-image-6.14.0-1006-realtimeUpgrade linux-image-generic-64k-hwe-24.04Upgrade linux-image-realtimeUpgrade linux-image-gcp-64k-6.14Upgrade linux-image-oracle-64k-6.14Upgrade linux-image-6.14.0-1009-oracle-64kUpgrade linux-image-oracleUpgrade linux-image-6.14.0-1011-gcp-64kUpgrade linux-image-6.14.0-1010-azureUpgrade linux-image-oem-6.14Upgrade linux-image-raspiUpgrade linux-image-awsUpgrade linux-image-aws-6.14Upgrade linux-image-6.14.0-1009-awsUpgrade linux-image-6.14.0-24-generic-64kUpgrade linux-image-aws-64k-6.14Upgrade linux-image-virtual-hwe-24.04Upgrade linux-image-raspi-6.14Upgrade linux-image-generic-64kUpgrade linux-image-6.14.0-1011-gcpUpgrade linux-image-6.14.0-1007-oemUpgrade linux-image-oem-24.04aUpgrade linux-image-azure-6.14Upgrade linux-image-genericUpgrade linux-image-oracle-64kUpgrade linux-image-gcpUpgrade linux-image-aws-64kUpgrade linux-image-oem-24.04Upgrade linux-image-azureUpgrade linux-image-generic-hwe-24.04Upgrade linux-image-generic-6.14Upgrade linux-image-virtual-6.14Upgrade linux-image-virtualUpgrade linux-image-6.14.0-1009-aws-64kUpgrade linux-image-realtime-hwe-24.04Upgrade linux-image-gcp-6.14Upgrade linux-image-6.14.0-1009-raspi | Jun 26, 2025 | May 20, 2025 |
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