From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 776AB58494F for ; Fri, 11 Sep 2026 19:54:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789156456; cv=none; b=ruOAn5C3o9KUL/9JxYHKtKBXktKOQUQwDd5Mn78sHcASKts2oLz4LtrgAY4kUpFF5qpMcETvQ53wXw800WJ17oiEcXPbEgTjSQAhtlg6Y0uRYgyndxnW4wPfiaVYALWCkVfti2OMPP11TQbv42a2id5efARMvQJvEf6xdoQkdjw= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789156456; c=relaxed/simple; bh=qLTiPq/DxVw/uHoSFw1ousZlNHZ0Yd/clohYteHWj2o=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=k+5wUqTqTGlGpJx8q6EUfy996QcjYbM9f5xMwqbfXnd6zqwYNE6uRWTFqO3aHQ5Zwk6c3vVUTQYvrr2zlB9Bzqcm9chEk10CRb91n2cebbN3FpksFu2/CD7EqghNsss4jE87bNsNe36oUQXr9JJF4msgD5l8LuDcj1MHXDi/kcI= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b=gNMPyqKx; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b="gNMPyqKx" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 7A4091F0089B; Fri, 11 Sep 2026 19:53:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linuxfoundation.org; s=korg; t=1789156438; bh=nhciqttllMCed1Binqpe8dFJxJoB6Heea4Cq9G7JveQ=; h=From:To:Cc:Subject:Date:Reply-To; b=gNMPyqKxqIVgrnYRmgxUEBlwRUiygkx750oxASguW75d3s4mHSBKcuaZ46gHlf9Wq 9MpYjgpufuH4D+QgWZBmOAIpbP0zjEE8wd3fvX4+JcWQxmU/XVx4YAm7C89a4Rsmkh aMoC+6589WzWVPlxsj02kka6Amvf0SEgxl3eQ/t8= From: Greg Kroah-Hartman To: linux-cve-announce@vger.kernel.org Cc: Greg Kroah-Hartman Subject: CVE-2026-89483: nvme: zero the discard fallback page Date: Fri, 11 Sep 2026 21:42:52 +0200 Message-ID: <2026091106-CVE-2026-89483-c3f1@gregkh> X-Mailer: git-send-email 2.55.0 Reply-To: , Precedence: bulk X-Mailing-List: linux-cve-announce@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=6302; i=gregkh@linuxfoundation.org; h=from:subject:message-id; bh=EF0FGlkCrEdSslZMbt5hh1+R6Zs4mlyJXtPl3DB75gc=; b=owGbwMvMwCRo6H6F97bub03G02pJDFlLIoPm2bvME2p0Tppjt7G7S7tzZorkbQuRmzoTbIut/ oY3/a/qiGVhEGRikBVTZPmyjefo/opDil6Gtqdh5rAygQxh4OIUgInsS2RYcIj9qgK7ycmY+siF 7ULrryh4TdeIZVjQcqtga0mVeFnIzjPS7DPP+k7g8/sDAA== X-Developer-Key: i=gregkh@linuxfoundation.org; a=openpgp; fpr=F4B60CC5BF78C2214A313DCB3147D40DDB2DFB29 Content-Transfer-Encoding: 8bit From: Greg Kroah-Hartman Description =========== In the Linux kernel, the following vulnerability has been resolved: nvme: zero the discard fallback page nvme_setup_discard() always maps sizeof(struct nvme_dsm_range) * NVME_DSM_MAX_RANGES = 4096 bytes as the DSM payload however many ranges the command declares, because some devices ignore the 'Number of Ranges' field - the Fixes: commit records two that read past the declared ranges. A single-range discard fills only the first 16 bytes. Normally the buffer comes from kzalloc() and the other 4080 bytes are zero. When that allocation fails the code falls back to the per-controller ctrl->discard_page, which nvme_init_ctrl() obtains with alloc_page(GFP_KERNEL) and nothing ever zeroes, so those 4080 bytes are whatever the page last held and are handed to the controller. Reaching it requires the kzalloc(GFP_ATOMIC | __GFP_NOWARN) to fail, that is memory pressure; it is not remotely triggerable. Failing the allocation under KMSAN reproduces it, with the leaked tail full of vmemmap struct page pointers. The extent in the report is a partial transfer of the payload, not the whole 4096 bytes; the 16-byte boundary in it is the one declared range: [ 11.991601] BUG: KMSAN: uninit-value in dma_map_phys+0x14c8/0x1900 [ 11.991969] dma_map_phys+0x14c8/0x1900 [ 11.992220] dma_map_page_attrs+0xcf/0x130 [ 11.992485] e1000_xmit_frame+0x4099/0x6d10 [ 11.992768] dev_hard_start_xmit+0x22f/0xa80 [ 11.993068] sch_direct_xmit+0x35c/0xcb0 [ 11.993315] __dev_queue_xmit+0x1ee5/0x5eb0 [ 11.993608] ip_finish_output2+0x1903/0x1c30 [ 11.993881] ip_finish_output+0x288/0x870 [ 11.994125] ip_output+0x15e/0x400 [ 11.994365] __ip_queue_xmit+0x1e85/0x1fb0 [ 11.994639] ip_queue_xmit+0x60/0x80 [ 11.994899] __tcp_transmit_skb+0x4e71/0x5fa0 [ 11.995210] tcp_write_xmit+0x3a36/0x9160 [ 11.995533] __tcp_push_pending_frames+0xc5/0x3c0 [ 11.995854] tcp_push+0x7dc/0x840 [ 11.996076] tcp_sendmsg_locked+0x766c/0x8400 [ 11.996371] tcp_sendmsg+0x4b/0x90 [ 11.996572] inet_sendmsg+0x134/0x2a0 [ 11.996823] __sock_sendmsg+0x265/0x360 [ 11.997076] sock_sendmsg+0x100/0x1e0 [ 11.997293] nvme_tcp_try_send+0x196f/0x6370 [ 11.997605] nvme_tcp_queue_rq+0x1d54/0x20b0 [ 11.997882] blk_mq_dispatch_rq_list+0x5ee/0x2e50 [ 11.998175] __blk_mq_sched_dispatch_requests+0x16dc/0x24a0 [ 11.998539] blk_mq_sched_dispatch_requests+0x11b/0x2c0 [ 11.998865] blk_mq_run_work_fn+0x13b/0x280 [ 11.999146] process_scheduled_works+0x966/0x1ad0 [ 11.999465] worker_thread+0xe44/0x1480 [ 11.999709] kthread+0x53b/0x600 [ 11.999927] ret_from_fork+0x29f/0x7c0 [ 12.000191] ret_from_fork_asm+0x1a/0x30 [ 12.000460] [ 12.000558] Uninit was created at: [ 12.000788] __alloc_frozen_pages_noprof+0x8bf/0xd30 [ 12.001096] alloc_pages_mpol+0x1d0/0x5f0 [ 12.001326] alloc_pages_noprof+0x102/0x290 [ 12.001627] nvme_init_ctrl+0x5a3/0x9f0 [ 12.001891] nvme_tcp_create_ctrl+0xd75/0x19b0 [ 12.002170] nvmf_dev_write+0x4c68/0x4fd0 [ 12.002426] vfs_write+0x587/0x1a10 [ 12.002636] __x64_sys_write+0x207/0x4f0 [ 12.002874] x64_sys_call+0x2ff0/0x3ea0 [ 12.003123] do_syscall_64+0x147/0x3b0 [ 12.003400] entry_SYSCALL_64_after_hwframe+0x77/0x7f [ 12.003680] [ 12.003777] Bytes 16-2843 of 2844 are uninitialized [ 12.004068] Memory access of size 2844 starts at ffff888109f82000 [ 12.004412] [ 12.004530] CPU: 0 UID: 0 PID: 101 Comm: kworker/0:1H Not tainted 7.2.0-rc5-NVMECTL-gf5098b6bae76 #1 PREEMPT(lazy) [ 12.005127] Hardware name: QEMU Ubuntu 24.04 PC v2 (i440FX + PIIX, arch_caps fix, 1996), BIOS 1.16.3-debian-1.16.3-2 04/01/2014 [ 12.005762] Workqueue: kblockd blk_mq_run_work_fn [ 12.006073] ===================================================== Allocate the page with __GFP_ZERO. The single allocation site covers every use of it: bytes no discard has written stay zero, and bytes one did write hold that controller's own range list, which it has already been sent. The Linux kernel CVE team has assigned CVE-2026-89483 to this issue. Affected and fixed versions =========================== Issue introduced in 5.5 with commit 530436c45ef2e446c12538a400e465929a0b3ade and fixed in 6.12.109 with commit dc4d4b70a863f7e39ef8bd137634be4e6db8b084 Issue introduced in 5.5 with commit 530436c45ef2e446c12538a400e465929a0b3ade and fixed in 6.18.50 with commit 67551d8430df94c827e1830bd3a5fae1f66a5219 Issue introduced in 5.5 with commit 530436c45ef2e446c12538a400e465929a0b3ade and fixed in 7.2.4 with commit f5827817b4fc7feeabf4f53fb4b626e6edc52fef Issue introduced in 5.5 with commit 530436c45ef2e446c12538a400e465929a0b3ade and fixed in 7.3-rc1 with commit bededeaaeff404978a5a8e2a605a6c3017cddd3e Issue introduced in 4.19.92 with commit ffa56cbdd2409b522b4cb56461bea1c45889417b Issue introduced in 5.4.7 with commit 8b0acb768a06083b0d28bace1481c1f6679e76f4 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-2026-89483 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/nvme/host/core.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/dc4d4b70a863f7e39ef8bd137634be4e6db8b084 https://git.kernel.org/stable/c/67551d8430df94c827e1830bd3a5fae1f66a5219 https://git.kernel.org/stable/c/f5827817b4fc7feeabf4f53fb4b626e6edc52fef https://git.kernel.org/stable/c/bededeaaeff404978a5a8e2a605a6c3017cddd3e