| From bippy-1.2.0 Mon Sep 17 00:00:00 2001 |
| From: Greg Kroah-Hartman <gregkh@kernel.org> |
| To: <linux-cve-announce@vger.kernel.org> |
| Reply-to: <cve@kernel.org>, <linux-kernel@vger.kernel.org> |
| Subject: CVE-2025-37759: ublk: fix handling recovery & reissue in ublk_abort_queue() |
| |
| Description |
| =========== |
| |
| In the Linux kernel, the following vulnerability has been resolved: |
| |
| ublk: fix handling recovery & reissue in ublk_abort_queue() |
| |
| Commit 8284066946e6 ("ublk: grab request reference when the request is handled |
| by userspace") doesn't grab request reference in case of recovery reissue. |
| Then the request can be requeued & re-dispatch & failed when canceling |
| uring command. |
| |
| If it is one zc request, the request can be freed before io_uring |
| returns the zc buffer back, then cause kernel panic: |
| |
| [ 126.773061] BUG: kernel NULL pointer dereference, address: 00000000000000c8 |
| [ 126.773657] #PF: supervisor read access in kernel mode |
| [ 126.774052] #PF: error_code(0x0000) - not-present page |
| [ 126.774455] PGD 0 P4D 0 |
| [ 126.774698] Oops: Oops: 0000 [#1] SMP NOPTI |
| [ 126.775034] CPU: 13 UID: 0 PID: 1612 Comm: kworker/u64:55 Not tainted 6.14.0_blk+ #182 PREEMPT(full) |
| [ 126.775676] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-1.fc39 04/01/2014 |
| [ 126.776275] Workqueue: iou_exit io_ring_exit_work |
| [ 126.776651] RIP: 0010:ublk_io_release+0x14/0x130 [ublk_drv] |
| |
| Fixes it by always grabbing request reference for aborting the request. |
| |
| The Linux kernel CVE team has assigned CVE-2025-37759 to this issue. |
| |
| |
| Affected and fixed versions |
| =========================== |
| |
| Issue introduced in 6.5 with commit 8284066946e6d9cc979566ce698fe24e7ca0b31e and fixed in 6.12.24 with commit caa5c8a2358604f38bf0a4afaa5eacda13763067 |
| Issue introduced in 6.5 with commit 8284066946e6d9cc979566ce698fe24e7ca0b31e and fixed in 6.13.12 with commit 5d34a30efac9c9c93e150130caa940c0df6053c1 |
| Issue introduced in 6.5 with commit 8284066946e6d9cc979566ce698fe24e7ca0b31e and fixed in 6.14.3 with commit 0a21d259ca4d6310fdfcc0284ebbc000e66cbf70 |
| Issue introduced in 6.5 with commit 8284066946e6d9cc979566ce698fe24e7ca0b31e and fixed in 6.15 with commit 6ee6bd5d4fce502a5b5a2ea805e9ff16e6aa890f |
| |
| Please see https://www.kernel.org for a full list of currently supported |
| kernel versions by the kernel community. |
| |
| Unaffected versions might change over time as fixes are backported to |
| older supported kernel versions. The official CVE entry at |
| https://cve.org/CVERecord/?id=CVE-2025-37759 |
| will be updated if fixes are backported, please check that for the most |
| up to date information about this issue. |
| |
| |
| Affected files |
| ============== |
| |
| The file(s) affected by this issue are: |
| drivers/block/ublk_drv.c |
| |
| |
| Mitigation |
| ========== |
| |
| The Linux kernel CVE team recommends that you update to the latest |
| stable kernel version for this, and many other bugfixes. Individual |
| changes are never tested alone, but rather are part of a larger kernel |
| release. Cherry-picking individual commits is not recommended or |
| supported by the Linux kernel community at all. If however, updating to |
| the latest release is impossible, the individual changes to resolve this |
| issue can be found at these commits: |
| https://git.kernel.org/stable/c/caa5c8a2358604f38bf0a4afaa5eacda13763067 |
| https://git.kernel.org/stable/c/5d34a30efac9c9c93e150130caa940c0df6053c1 |
| https://git.kernel.org/stable/c/0a21d259ca4d6310fdfcc0284ebbc000e66cbf70 |
| https://git.kernel.org/stable/c/6ee6bd5d4fce502a5b5a2ea805e9ff16e6aa890f |