In the Linux kernel, the following vulnerability has been resolved:
rbd: fix null-ptr-deref when device_add_disk() fails
do_rbd_add() publishes the device with device_add() before calling device_add_disk(). If device_add_disk() fails after device_add() succeeds, the error path calls rbd_free_disk() directly and then later falls through to rbd_dev_device_release(), which calls rbd_free_disk() again. This double teardown can leave blk-mq cleanup operating on invalid state and trigger a null-ptr-deref in __blk_mq_free_map_and_rqs(), reached from blk_mq_free_tag_set().
Fix this by following the normal remove ordering: call device_del() before rbd_dev_device_release() when device_add_disk() fails after device_add(). That keeps the teardown sequence consistent and avoids re-entering disk cleanup through the wrong path.
The bug was first flagged by an experimental analysis tool we are developing for kernel memory-management bugs while analyzing v6.13-rc1. The tool is still under development and is not yet publicly available.
We reproduced the bug on v7.0 with a real Ceph backend and a QEMU x86_64 guest booted with KASAN and CONFIG_FAILSLAB enabled. The reproducer confines failslab injections to the __add_disk() range and injects fail-nth while mapping an RBD image through /sys/bus/rbd/add_single_major.
On the unpatched kernel, fail-nth=4 reliably triggered the fault:
Oops: general protection fault, probably for non-canonical address 0xdffffc0000000000: 0000 [#1] SMP KASAN NOPTI KASAN: null-ptr-deref in range [0x0000000000000000-0x0000000000000007] CPU: 0 UID: 0 PID: 273 Comm: bash Not tainted 7.0.0-01247-gd60bc1401583 #6 PREEMPT(lazy) Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.15.0-1 04/01/2014 RIP: 0010:__blk_mq_free_map_and_rqs+0x8c/0x240 Code: 00 00 48 8b 6b 60 41 89 f4 49 c1 e4 03 4c 01 e5 45 85 ed 0f 85 0a 01 00 00 48 b8 00 00 00 00 00 fc ff df 48 89 e9 48 c1 e9 03 <80> 3c 01 00 0f 85 31 01 00 00 4c 8b 6d 00 4d 85 ed 0f 84 e2 00 00 RSP: 0018:ff1100000ab0fac8 EFLAGS: 00000246 RAX: dffffc0000000000 RBX: ff1100000c4806a0 RCX: 0000000000000000 RDX: 0000000000000002 RSI: 0000000000000000 RDI: ff1100000c4806f4 RBP: 0000000000000000 R08: 0000000000000001 R09: ffe21c000189001b R10: ff1100000c4800df R11: ff1100006cf37be0 R12: 0000000000000000 R13: 0000000000000000 R14: ff1100000c480700 R15: ff1100000c480004 FS: 00007f0fbe8fe740(0000) GS:ff110000e5851000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 00007fe53473b2e0 CR3: 0000000012eef000 CR4: 00000000007516f0 PKRU: 55555554 Call Trace: <TASK> blk_mq_free_tag_set+0x77/0x460 do_rbd_add+0x1446/0x2b80 ? __pfx_do_rbd_add+0x10/0x10 ? lock_acquire+0x18c/0x300 ? find_held_lock+0x2b/0x80 ? sysfs_file_kobj+0xb6/0x1b0 ? __pfx_sysfs_kf_write+0x10/0x10 kernfs_fop_write_iter+0x2f4/0x4a0 vfs_write+0x98e/0x1000 ? expand_files+0x51f/0x850 ? __pfx_vfs_write+0x10/0x10 ksys_write+0xf2/0x1d0 ? __pfx_ksys_write+0x10/0x10 do_syscall_64+0x115/0x690 entry_SYSCALL_64_after_hwframe+0x77/0x7f RIP: 0033:0x7f0fbea15907 Code: 10 00 f7 d8 64 89 02 48 c7 c0 ff ff ff ff eb b7 0f 1f 00 f3 0f 1e fa 64 8b 04 25 18 00 00 00 85 c0 75 10 b8 01 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 51 c3 48 83 ec 28 48 89 54 24 18 48 89 74 24 RSP: 002b:00007ffe22346ea8 EFLAGS: 00000246 ORIG_RAX: 0000000000000001 RAX: ffffffffffffffda RBX: 0000000000000058 RCX: 00007f0fbea15907 RDX: 0000000000000058 RSI: 0000563ace6c0ef0 RDI: 0000000000000001 RBP: 0000563ace6c0ef0 R08: 0000563ace6c0ef0 R09: 6b6435726d694141 R10: 5250337279762f78 R11: 0000000000000246 R12: 0000000000000058 R13: 00007f0fbeb1c780 R14: ff1100000c480700 R15: ff1100000c480004 </TASK>
With this fix applied, rerunning the reproducer over fail-nth=1..256 yields no KASAN reports.
[ idryomov: rename err_out_device_del -> err_out_device ]
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_2023 | — | Upgrade kernel6.18-headersUpgrade perf6.18-debuginfoUpgrade kernel6.18-debuginfoUpgrade bpftool6.18-debuginfoUpgrade kernel6.18-develUpgrade kernel6.18-toolsUpgrade kernel6.18-modules-extraUpgrade kernel6.18-debuginfo-common-x86_64Upgrade kernel6.18-tools-develUpgrade kernel-livepatch-6.18.30-61.116Upgrade kernel6.18-modules-extra-commonUpgrade python3-perf6.18Upgrade kernel6.18Upgrade kernel6.18-debuginfo-common-aarch64Upgrade kernel6.18-tools-debuginfoUpgrade perf6.18Upgrade python3-perf6.18-debuginfoUpgrade bpftool6.18 | Jun 23, 2026 | May 27, 2026 |
| Debian | — | Upgrade linux-6.1Upgrade linux | Jul 5, 2026 | Jul 5, 2026 |
| Redhat_linux | — | No solution exists | Jul 17, 2026 | May 27, 2026 |
| Ubuntu | — | Upgrade linux-image-raspi-realtime-6.8Upgrade linux-image-6.8.0-1046-gkeopUpgrade linux-image-oem-22.04cUpgrade linux-image-ibm-7.0Upgrade linux-image-raspi-6.8Upgrade linux-image-7.0.0-1007-oracle-64kUpgrade linux-image-gcp-fipsUpgrade linux-image-gcp-fips-6.8Upgrade linux-image-nvidiaUpgrade linux-image-oracle-lts-24.04Upgrade linux-image-nvidia-tegraUpgrade linux-image-oracle-64kUpgrade linux-image-nvidia-7.0Upgrade linux-image-nvidia-lowlatency-6.8Upgrade linux-image-gcp-64kUpgrade linux-image-gke-64kUpgrade linux-image-7.0.0-1007-gcpUpgrade linux-image-6.8.0-136-genericUpgrade linux-image-oem-7.0Upgrade linux-image-6.8.0-1030-nvidia-tegra-rtUpgrade linux-image-6.8.0-1062-azure-fdeUpgrade linux-image-gke-64k-6.8Upgrade linux-image-lowlatency-6.8Upgrade linux-image-azure-fde-lts-24.04Upgrade linux-image-raspiUpgrade linux-image-virtual-hwe-22.04Upgrade linux-image-ibm-lts-24.04Upgrade linux-image-gke-6.8Upgrade linux-image-laptop-23.10Upgrade linux-image-generic-64k-6.8Upgrade linux-image-7.0.0-1008-oemUpgrade linux-image-6.8.0-1059-nvidiaUpgrade linux-image-6.8.0-1063-azureUpgrade linux-image-aws-64k-7.0Upgrade linux-image-7.0.0-1014-raspiUpgrade linux-image-6.8.0-1061-aws-64kUpgrade linux-image-nvidia-lowlatencyUpgrade linux-image-realtime-6.8.1Upgrade linux-image-realtime-hwe-26.04Upgrade linux-image-oem-22.04dUpgrade linux-image-7.0.0-27-generic-64kUpgrade linux-image-6.8.0-1058-oracle-64kUpgrade linux-image-oem-20.04bUpgrade linux-image-xilinx-6.8Upgrade linux-image-generic-hwe-24.04Upgrade linux-image-6.8.0-1061-ibmUpgrade linux-image-lowlatencyUpgrade linux-image-oem-20.04cUpgrade linux-image-generic-64k-hwe-26.04Upgrade linux-image-generic-hwe-22.04Upgrade linux-image-nvidia-64k-7.0Upgrade linux-image-aws-6.8Upgrade linux-image-aws-64k-6.8Upgrade linux-image-7.0.0-28-generic-64kUpgrade linux-image-aws-7.0Upgrade linux-image-7.0.0-27-realtime-64kUpgrade linux-image-azureUpgrade linux-image-oem-22.04Upgrade linux-image-oem-22.04aUpgrade linux-image-oracle-6.8Upgrade linux-image-oracle-7.0Upgrade linux-image-aws-lts-24.04Upgrade linux-image-6.8.0-1064-gcpUpgrade linux-image-oem-26.04aUpgrade linux-image-realtime-64k-hwe-26.04Upgrade linux-image-6.8.0-1059-gke-64kUpgrade linux-image-azure-7.0Upgrade linux-image-6.8.0-1061-aws-fipsUpgrade linux-image-6.8.0-136-generic-64kUpgrade linux-image-gkeopUpgrade linux-image-6.8.0-1059-nvidia-lowlatency-64kUpgrade linux-image-azure-lts-24.04Upgrade linux-image-generic-hwe-26.04Upgrade linux-image-oem-26.04Upgrade linux-image-azure-fipsUpgrade linux-image-ibm-classicUpgrade linux-image-genericUpgrade linux-image-generic-64kUpgrade linux-image-ibmUpgrade linux-image-azure-fdeUpgrade linux-image-gcp-64k-7.0Upgrade linux-image-nvidia-64kUpgrade linux-image-oem-24.04cUpgrade linux-image-7.0.0-1013-nvidiaUpgrade linux-image-7.0.0-1013-nvidia-64kUpgrade linux-image-aws-fipsUpgrade linux-image-7.0.0-28-genericUpgrade linux-image-6.8.0-1058-oracleUpgrade linux-image-raspi-realtime-7.0Upgrade linux-image-lowlatency-64kUpgrade linux-image-nvidia-6.8Upgrade linux-image-7.0.0-27-realtimeUpgrade linux-image-6.8.0-1063-azure-fipsUpgrade linux-image-virtual-6.8Upgrade linux-image-7.0.0-1007-gcp-64kUpgrade linux-image-oracle-64k-6.8Upgrade linux-image-oracle-64k-lts-24.04Upgrade linux-image-realtime-7.0Upgrade linux-image-virtual-hwe-26.04Upgrade linux-image-gcp-6.8Upgrade linux-image-lowlatency-64k-6.8Upgrade linux-image-intel-iotgUpgrade linux-image-aws-fips-6.8Upgrade linux-image-azure-fde-7.0Upgrade linux-image-7.0.0-1009-ibmUpgrade linux-image-6.8.0-1064-gcp-fipsUpgrade linux-image-oem-24.04dUpgrade linux-image-lowlatency-hwe-22.04Upgrade linux-image-7.0.0-27-genericUpgrade linux-image-7.0.0-1010-azureUpgrade linux-image-realtime-hwe-22.04Upgrade linux-image-xilinxUpgrade linux-image-fips-6.8Upgrade linux-image-fipsUpgrade linux-image-6.8.0-1059-nvidia-lowlatencyUpgrade linux-image-6.8.0-1059-nvidia-64kUpgrade linux-image-6.8.0-1033-xilinxUpgrade linux-image-6.8.0-1030-nvidia-tegraUpgrade linux-image-nvidia-lowlatency-64kUpgrade linux-image-nvidia-64k-hwe-22.04Upgrade linux-image-nvidia-64k-6.8Upgrade linux-image-kvmUpgrade linux-image-intel-iot-realtimeUpgrade linux-image-generic-6.8Upgrade linux-image-gcp-64k-lts-24.04Upgrade linux-image-realtime-64k-7.0Upgrade linux-image-oem-24.04bUpgrade linux-image-gkeop-6.8Upgrade linux-image-azure-6.8Upgrade linux-image-6.8.0-2050-raspi-realtimeUpgrade linux-image-6.8.0-136-lowlatencyUpgrade linux-image-realtimeUpgrade linux-image-oem-20.04dUpgrade linux-image-lowlatency-64k-hwe-22.04Upgrade linux-image-generic-lpaeUpgrade linux-image-gcp-lts-24.04Upgrade linux-image-aws-64kUpgrade linux-image-virtual-hwe-24.04Upgrade linux-image-raspi-7.0Upgrade linux-image-azure-fde-6.8Upgrade linux-image-aws-64k-lts-24.04Upgrade linux-image-6.8.0-136-lowlatency-64kUpgrade linux-image-oem-24.04Upgrade linux-image-oem-20.04Upgrade linux-image-nvidia-tegra-rt-6.8Upgrade linux-image-nvidia-tegra-6.8Upgrade linux-image-nvidia-lowlatency-64k-6.8Upgrade linux-image-nvidia-hwe-22.04Upgrade linux-image-ibm-6.8Upgrade linux-image-7.0.0-1008-awsUpgrade linux-image-gcp-64k-6.8Upgrade linux-image-generic-64k-hwe-22.04Upgrade linux-image-6.8.1-1056-realtimeUpgrade linux-image-virtualUpgrade linux-image-oem-22.04bUpgrade linux-image-gkeUpgrade linux-image-nvidia-tegra-rtUpgrade linux-image-generic-64k-hwe-24.04Upgrade linux-image-oem-24.04aUpgrade linux-image-generic-64k-7.0Upgrade linux-image-gcp-7.0Upgrade linux-image-azure-fips-6.8Upgrade linux-image-7.0.0-1014-raspi-realtimeUpgrade linux-image-7.0.0-1009-azure-fdeUpgrade linux-image-6.8.0-136-fipsUpgrade linux-image-raspi-realtimeUpgrade linux-image-virtual-7.0Upgrade linux-image-6.8.0-1059-gkeUpgrade linux-image-6.8.0-1061-awsUpgrade linux-image-oracleUpgrade linux-image-generic-7.0Upgrade linux-image-gcpUpgrade linux-image-awsUpgrade linux-image-7.0.0-1008-aws-64kUpgrade linux-image-7.0.0-1007-oracleUpgrade linux-image-6.8.0-1064-gcp-64kUpgrade linux-image-6.8.0-1061-raspiUpgrade linux-image-xilinx-zynqmpUpgrade linux-image-realtime-64kUpgrade linux-image-oracle-64k-7.0 | Jul 1, 2026 | May 27, 2026 |
| Vmware Photon_os | — | Use 'tdnf update' to upgrade all packages to the latest version. | Jul 6, 2026 | May 27, 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