In the Linux kernel, the following vulnerability has been resolved:
hfsplus: fix held lock freed on hfsplus_fill_super()
hfsplus_fill_super() calls hfs_find_init() to initialize a search structure, which acquires tree->tree_lock. If the subsequent call to hfsplus_cat_build_key() fails, the function jumps to the out_put_root error label without releasing the lock. The later cleanup path then frees the tree data structure with the lock still held, triggering a held lock freed warning.
Fix this by adding the missing hfs_find_exit(&fd) call before jumping to the out_put_root error label. This ensures that tree->tree_lock is properly released on the error path.
The bug was originally detected on v6.13-rc1 using an experimental static analysis tool we are developing, and we have verified that the issue persists in the latest mainline kernel. The tool is specifically designed to detect memory management issues. It is currently under active development and not yet publicly available.
We confirmed the bug by runtime testing under QEMU with x86_64 defconfig, lockdep enabled, and CONFIG_HFSPLUS_FS=y. To trigger the error path, we used GDB to dynamically shrink the max_unistr_len parameter to 1 before hfsplus_asc2uni() is called. This forces hfsplus_asc2uni() to naturally return -ENAMETOOLONG, which propagates to hfsplus_cat_build_key() and exercises the faulty error path. The following warning was observed during mount:
========================= WARNING: held lock freed! 7.0.0-rc3-00016-gb4f0dd314b39 #4 Not tainted ------------------------- mount/174 is freeing memory ffff888103f92000-ffff888103f92fff, with a lock still held there! ffff888103f920b0 (&tree->tree_lock){+.+.}-{4:4}, at: hfsplus_find_init+0x154/0x1e0 2 locks held by mount/174: #0: ffff888103f960e0 (&type->s_umount_key#42/1){+.+.}-{4:4}, at: alloc_super.constprop.0+0x167/0xa40 #1: ffff888103f920b0 (&tree->tree_lock){+.+.}-{4:4}, at: hfsplus_find_init+0x154/0x1e0
stack backtrace: CPU: 2 UID: 0 PID: 174 Comm: mount Not tainted 7.0.0-rc3-00016-gb4f0dd314b39 #4 PREEMPT(lazy) Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.15.0-1 04/01/2014 Call Trace: <TASK> dump_stack_lvl+0x82/0xd0 debug_check_no_locks_freed+0x13a/0x180 kfree+0x16b/0x510 ? hfsplus_fill_super+0xcb4/0x18a0 hfsplus_fill_super+0xcb4/0x18a0 ? __pfx_hfsplus_fill_super+0x10/0x10 ? srso_return_thunk+0x5/0x5f ? bdev_open+0x65f/0xc30 ? srso_return_thunk+0x5/0x5f ? pointer+0x4ce/0xbf0 ? trace_contention_end+0x11c/0x150 ? __pfx_pointer+0x10/0x10 ? srso_return_thunk+0x5/0x5f ? bdev_open+0x79b/0xc30 ? srso_return_thunk+0x5/0x5f ? srso_return_thunk+0x5/0x5f ? vsnprintf+0x6da/0x1270 ? srso_return_thunk+0x5/0x5f ? __mutex_unlock_slowpath+0x157/0x740 ? __pfx_vsnprintf+0x10/0x10 ? srso_return_thunk+0x5/0x5f ? srso_return_thunk+0x5/0x5f ? mark_held_locks+0x49/0x80 ? srso_return_thunk+0x5/0x5f ? srso_return_thunk+0x5/0x5f ? irqentry_exit+0x17b/0x5e0 ? trace_irq_disable.constprop.0+0x116/0x150 ? __pfx_hfsplus_fill_super+0x10/0x10 ? __pfx_hfsplus_fill_super+0x10/0x10 get_tree_bdev_flags+0x302/0x580 ? __pfx_get_tree_bdev_flags+0x10/0x10 ? vfs_parse_fs_qstr+0x129/0x1a0 ? __pfx_vfs_parse_fs_qstr+0x3/0x10 vfs_get_tree+0x89/0x320 fc_mount+0x10/0x1d0 path_mount+0x5c5/0x21c0 ? __pfx_path_mount+0x10/0x10 ? trace_irq_enable.constprop.0+0x116/0x150 ? trace_irq_enable.constprop.0+0x116/0x150 ? srso_return_thunk+0x5/0x5f ? srso_return_thunk+0x5/0x5f ? kmem_cache_free+0x307/0x540 ? user_path_at+0x51/0x60 ? __x64_sys_mount+0x212/0x280 ? srso_return_thunk+0x5/0x5f __x64_sys_mount+0x212/0x280 ? __pfx___x64_sys_mount+0x10/0x10 ? srso_return_thunk+0x5/0x5f ? trace_irq_enable.constprop.0+0x116/0x150 ? srso_return_thunk+0x5/0x5f do_syscall_64+0x111/0x680 entry_SYSCALL_64_after_hwframe+0x77/0x7f RIP: 0033:0x7ffacad55eae Code: 48 8b 0d 85 1f 0f 00 f7 d8 64 89 01 48 83 c8 ff c3 66 2e 0f 1f 84 00 00 00 00 00 90 f3 0f 1e fa 49 89 ca b8 a5 00 00 8 RSP: 002b ---truncated---
CVSS Details
- CVSS 3.1 Base Score: 7
- CVSS 3.1 Vector: (CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H)
Covered by Rapid7
| Product | Vendor Advisory | Solution File | Added | Published |
|---|---|---|---|---|
| Amazon Linux Ami 2 | — | Upgrade kernel-develUpgrade kernel-debuginfo-common-x86_64Upgrade bpftoolUpgrade kernelUpgrade kernel-debuginfoUpgrade kernel-tools-debuginfoUpgrade kernel-debuginfo-common-aarch64Upgrade bpftool-debuginfoUpgrade kernel-livepatch-5.10.259-258.1043Upgrade python-perfUpgrade kernel-tools-develUpgrade kernel-toolsUpgrade perf-debuginfoUpgrade kernel-headersUpgrade python-perf-debuginfoUpgrade perf | Jul 8, 2026 | Jul 8, 2026 |
| Debian | — | Upgrade linuxUpgrade linux-6.1 | Jul 5, 2026 | Jul 5, 2026 |
| Redhat_linux | — | No solution exists | Jul 17, 2026 | Jun 8, 2026 |
| Ubuntu | — | Upgrade linux-image-gkeopUpgrade linux-image-ibm-7.0Upgrade linux-image-lowlatency-6.8Upgrade linux-image-nvidia-bos-64k-7.0Upgrade linux-image-nvidia-bos-7.0Upgrade linux-image-gke-7.0Upgrade linux-image-7.0.0-1010-ibmUpgrade linux-image-gke-6.8Upgrade linux-image-7.0.0-1008-gcp-64kUpgrade linux-image-gcp-fipsUpgrade linux-image-generic-64k-7.0Upgrade linux-image-generic-64k-hwe-26.04Upgrade linux-image-generic-64kUpgrade linux-image-aws-64kUpgrade linux-image-azure-6.8Upgrade linux-image-azure-fde-7.0Upgrade linux-image-gkeUpgrade linux-image-oem-22.04Upgrade linux-image-oem-24.04Upgrade linux-image-raspi-realtime-7.0Upgrade linux-image-ibmUpgrade linux-image-ibm-classicUpgrade linux-image-6.8.0-136-lowlatency-64kUpgrade linux-image-7.0.0-1003-gkeUpgrade linux-image-7.0.0-1008-gcpUpgrade linux-image-realtime-hwe-26.04Upgrade linux-image-virtual-hwe-22.04Upgrade linux-image-6.8.0-1059-gke-64kUpgrade linux-image-xilinx-zynqmpUpgrade linux-image-6.8.0-136-fipsUpgrade linux-image-azureUpgrade linux-image-7.0.0-1010-azureUpgrade linux-image-7.0.0-2016-nvidia-bos-64kUpgrade linux-image-aws-7.0Upgrade linux-image-6.8.0-1059-nvidia-lowlatencyUpgrade linux-image-lowlatency-hwe-22.04Upgrade linux-image-oem-26.04Upgrade linux-image-gcp-fips-6.8Upgrade linux-image-oracle-lts-24.04Upgrade linux-image-nvidia-tegra-6.8Upgrade linux-image-6.8.0-1059-nvidia-64kUpgrade linux-image-gcp-7.0Upgrade linux-image-virtual-hwe-24.04Upgrade linux-image-realtime-hwe-22.04Upgrade linux-image-aws-fipsUpgrade linux-image-oracle-64k-7.0Upgrade linux-image-intel-iotgUpgrade linux-image-oem-24.04bUpgrade linux-image-realtime-7.0Upgrade linux-image-virtual-hwe-26.04Upgrade linux-image-intel-iot-realtimeUpgrade linux-image-lowlatency-64kUpgrade linux-image-gkeop-6.8Upgrade linux-image-oem-20.04bUpgrade linux-image-raspi-realtime-6.8Upgrade linux-image-7.0.0-1011-gcp-64kUpgrade linux-image-fipsUpgrade linux-image-aws-64k-7.0Upgrade linux-image-lowlatencyUpgrade linux-image-nvidia-64k-hwe-22.04Upgrade linux-image-7.0.0-1016-nvidiaUpgrade linux-image-oem-20.04cUpgrade linux-image-6.8.0-1064-gcp-64kUpgrade linux-image-azure-lts-24.04Upgrade linux-image-raspiUpgrade linux-image-nvidia-64k-hwe-26.04Upgrade linux-image-6.8.0-1064-gcp-fipsUpgrade linux-image-nvidia-bos-64kUpgrade linux-image-nvidia-lowlatency-6.8Upgrade linux-image-oem-22.04aUpgrade linux-image-nvidia-6.8Upgrade linux-image-nvidia-hwe-26.04Upgrade linux-image-oem-20.04Upgrade linux-image-virtual-6.8Upgrade linux-image-oracle-7.0Upgrade linux-image-lowlatency-64k-hwe-22.04Upgrade linux-image-6.8.0-1046-gkeopUpgrade linux-image-7.0.0-1015-raspiUpgrade linux-image-gke-64k-7.0Upgrade linux-image-6.8.0-1061-raspiUpgrade linux-image-oem-22.04cUpgrade linux-image-nvidia-tegraUpgrade linux-image-nvidia-64k-7.0Upgrade linux-image-7.0.0-2016-nvidia-bosUpgrade linux-image-nvidia-bosUpgrade linux-image-generic-lpaeUpgrade linux-image-6.8.0-1058-oracle-64kUpgrade linux-image-7.0.0-1009-aws-64kUpgrade linux-image-nvidiaUpgrade linux-image-aws-6.8Upgrade linux-image-gcp-64k-lts-24.04Upgrade linux-image-7.0.0-28-generic-64kUpgrade linux-image-genericUpgrade linux-image-7.0.0-1009-azure-fdeUpgrade linux-image-7.0.0-1009-oemUpgrade linux-image-6.8.0-1058-oracleUpgrade linux-image-nvidia-tegra-rtUpgrade linux-image-oracle-64k-6.8Upgrade linux-image-7.0.0-1009-awsUpgrade linux-image-7.0.0-1011-gcpUpgrade linux-image-ibm-lts-24.04Upgrade linux-image-6.8.1-1056-realtimeUpgrade linux-image-7.0.0-1008-oracleUpgrade linux-image-6.8.0-1063-azureUpgrade linux-image-6.8.0-1030-nvidia-tegra-rtUpgrade linux-image-6.8.0-1061-awsUpgrade linux-image-7.0.0-28-genericUpgrade linux-image-6.8.0-1063-azure-fipsUpgrade linux-image-raspi-7.0Upgrade linux-image-oem-26.04aUpgrade linux-image-azure-fipsUpgrade linux-image-azure-fde-6.8Upgrade linux-image-7.0.0-28-realtime-64kUpgrade linux-image-6.8.0-1033-xilinxUpgrade linux-image-oracle-6.8Upgrade linux-image-oracleUpgrade linux-image-oem-22.04dUpgrade linux-image-oem-20.04dUpgrade linux-image-nvidia-lowlatencyUpgrade linux-image-nvidia-64kUpgrade linux-image-gke-64kUpgrade linux-image-generic-hwe-22.04Upgrade linux-image-generic-6.8Upgrade linux-image-azure-fips-6.8Upgrade linux-image-aws-fips-6.8Upgrade linux-image-aws-64k-6.8Upgrade linux-image-7.0.0-1015-raspi-realtimeUpgrade linux-image-raspi-realtimeUpgrade linux-image-oem-24.04dUpgrade linux-image-generic-hwe-26.04Upgrade linux-image-7.0.0-1014-azureUpgrade linux-image-gcpUpgrade linux-image-oem-24.04cUpgrade linux-image-generic-64k-6.8Upgrade linux-image-gcp-6.8Upgrade linux-image-azure-fdeUpgrade linux-image-6.8.0-2050-raspi-realtimeUpgrade linux-image-realtime-64k-hwe-26.04Upgrade linux-image-realtime-6.8.1Upgrade linux-image-oracle-64kUpgrade linux-image-gcp-64k-7.0Upgrade linux-image-realtimeUpgrade linux-image-oracle-64k-lts-24.04Upgrade linux-image-gke-hwe-26.04Upgrade linux-image-6.8.0-136-genericUpgrade linux-image-6.8.0-1059-nvidia-lowlatency-64kUpgrade linux-image-6.8.0-1030-nvidia-tegraUpgrade linux-image-gke-64k-hwe-26.04Upgrade linux-image-azure-fde-lts-24.04Upgrade linux-image-azure-7.0Upgrade linux-image-6.8.0-136-lowlatencyUpgrade linux-image-6.8.0-1061-aws-fipsUpgrade linux-image-6.8.0-1061-aws-64kUpgrade linux-image-realtime-64k-7.0Upgrade linux-image-nvidia-7.0Upgrade linux-image-lowlatency-64k-6.8Upgrade linux-image-aws-64k-lts-24.04Upgrade linux-image-laptop-23.10Upgrade linux-image-nvidia-lowlatency-64kUpgrade linux-image-7.0.0-1003-gke-64kUpgrade linux-image-6.8.0-136-generic-64kUpgrade linux-image-generic-7.0Upgrade linux-image-nvidia-64k-6.8Upgrade linux-image-oem-22.04bUpgrade linux-image-6.8.0-1062-azure-fdeUpgrade linux-image-gcp-64kUpgrade linux-image-generic-64k-hwe-24.04Upgrade linux-image-6.8.0-1061-ibmUpgrade linux-image-6.8.0-1059-nvidiaUpgrade linux-image-xilinx-6.8Upgrade linux-image-nvidia-hwe-22.04Upgrade linux-image-kvmUpgrade linux-image-ibm-6.8Upgrade linux-image-generic-hwe-24.04Upgrade linux-image-generic-64k-hwe-22.04Upgrade linux-image-fips-6.8Upgrade linux-image-aws-lts-24.04Upgrade linux-image-7.0.0-28-realtimeUpgrade linux-image-6.8.0-1064-gcpUpgrade linux-image-7.0.0-1008-oracle-64kUpgrade linux-image-7.0.0-1016-nvidia-64kUpgrade linux-image-oem-24.04aUpgrade linux-image-virtual-7.0Upgrade linux-image-oem-7.0Upgrade linux-image-realtime-64kUpgrade linux-image-raspi-6.8Upgrade linux-image-nvidia-tegra-rt-6.8Upgrade linux-image-gcp-lts-24.04Upgrade linux-image-gcp-64k-6.8Upgrade linux-image-6.8.0-1059-gkeUpgrade linux-image-virtualUpgrade linux-image-nvidia-lowlatency-64k-6.8Upgrade linux-image-gke-64k-6.8Upgrade linux-image-xilinxUpgrade linux-image-aws | Jul 20, 2026 | Jun 8, 2026 |
| Vmware Photon_os | — | Use 'tdnf update' to upgrade all packages to the latest version. | Jul 27, 2026 | Jun 8, 2026 |
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