nvme: zero the discard fallback page
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_fin
- Products
- Kernel
- Affected versions
- Not specified
- Fixed versions
- 5.10.270, 5.15.221, 6.1.188, 6.12.109, 6.18.50, 6.6.157, 7.2.4
- CVEs
- CVE-2026-89483
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 3 Nov 2026, 05:06 UTC · Revision 1
Source evidence
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_fin
osv:CVE-2026-89483
Kernel
Fixed versions: 5.10.270, 5.15.221, 6.1.188, 6.6.157, 6.12.109, 6.18.50, 7.2.4
Complete source record
{
"id": "c009fcafbe66605f546d90925abfcf7f85f56c2434012df68e9a0814c8efd457",
"url": "https://osv.dev/vulnerability/CVE-2026-89483",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "nvme: zero the discard fallback page",
"summary": "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_fin",
"evidence": "osv:CVE-2026-89483",
"products": [
{
"name": {
"value": "Kernel",
"evidence": "/affected/1/package/name"
},
"prerequisites": [],
"fixed_versions": [
{
"value": "5.10.270",
"evidence": "/affected/1/ranges"
},
{
"value": "5.15.221",
"evidence": "/affected/1/ranges"
},
{
"value": "6.1.188",
"evidence": "/affected/1/ranges"
},
{
"value": "6.6.157",
"evidence": "/affected/1/ranges"
},
{
"value": "6.12.109",
"evidence": "/affected/1/ranges"
},
{
"value": "6.18.50",
"evidence": "/affected/1/ranges"
},
{
"value": "7.2.4",
"evidence": "/affected/1/ranges"
}
],
"affected_versions": []
}
],
"severity": "high",
"structured": {
"id": "CVE-2026-89483",
"aliases": [
"CVE-2026-89483"
],
"metrics": [
{
"type": "CVSS_V3",
"score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N"
}
],
"affected": [
{
"ranges": [
{
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"type": "GIT",
"events": [
{
"introduced": "530436c45ef2e446c12538a400e465929a0b3ade"
},
{
"fixed": "76139b5bbf531e675934b97227be3521c7fdd537"
},
{
"fixed": "3f84d2bd0d8ae8c7e8e0f8fc3cbf018a282971a1"
},
{
"fixed": "415f2772ebcbc7f3f1ab1a71915dab82cee3465e"
},
{
"fixed": "66b5af23b6f956e57f8205c46aa80b054631be34"
},
{
"fixed": "dc4d4b70a863f7e39ef8bd137634be4e6db8b084"
},
{
"fixed": "67551d8430df94c827e1830bd3a5fae1f66a5219"
},
{
"fixed": "f5827817b4fc7feeabf4f53fb4b626e6edc52fef"
},
{
"fixed": "bededeaaeff404978a5a8e2a605a6c3017cddd3e"
}
]
},
{
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"type": "GIT",
"events": [
{
"introduced": "4.19.92"
},
{
"fixed": "4.20"
}
]
},
{
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"type": "GIT",
"events": [
{
"introduced": "5.4.7"
},
{
"fixed": "5.5"
}
]
},
{
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"type": "GIT",
"events": [
{
"introduced": "ffa56cbdd2409b522b4cb56461bea1c45889417b"
}
]
},
{
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"type": "GIT",
"events": [
{
"introduced": "8b0acb768a06083b0d28bace1481c1f6679e76f4"
}
]
}
],
"versions": [
"v4.19.325",
"v4.19.324",
"v4.19.323",
"v4.19.322",
"v4.19.321",
"v4.19.320",
"v4.19.319",
"v4.19.318",
"v4.19.317",
"v4.19.316",
"v4.19.315",
"v4.19.314",
"v4.19.313",
"v4.19.312",
"v4.19.311",
"v4.19.310",
"v4.19.309",
"v4.19.308",
"v4.19.307",
"v4.19.306",
"v4.19.305",
"v4.19.304",
"v4.19.303",
"v4.19.302",
"v4.19.301",
"v4.19.300",
"v4.19.299",
"v4.19.298",
"v4.19.297",
"v4.19.296",
"v4.19.295",
"v4.19.294",
"v4.19.293",
"v4.19.292",
"v4.19.291",
"v4.19.290",
"v4.19.289",
"v4.19.288",
"v4.19.287",
"v4.19.286",
"v4.19.285",
"v4.19.284",
"v4.19.283",
"v4.19.282",
"v4.19.281",
"v4.19.280",
"v4.19.279",
"v4.19.278",
"v4.19.277",
"v4.19.276",
"v4.19.275",
"v4.19.274",
"v4.19.273",
"v4.19.272",
"v4.19.271",
"v4.19.270",
"v4.19.269",
"v4.19.268",
"v4.19.267",
"v4.19.266",
"v4.19.265",
"v4.19.264",
"v4.19.263",
"v4.19.262",
"v4.19.261",
"v4.19.260",
"v4.19.259",
"v4.19.258",
"v4.19.257",
"v4.19.256",
"v4.19.255",
"v4.19.254",
"v4.19.253",
"v4.19.252",
"v4.19.251",
"v4.19.250",
"v4.19.249",
"v4.19.248",
"v4.19.247",
"v4.19.246",
"v4.19.245",
"v4.19.244",
"v4.19.243",
"v4.19.242",
"v4.19.241",
"v4.19.240",
"v4.19.239",
"v4.19.238",
"v4.19.237",
"v4.19.236",
"v4.19.235",
"v4.19.234",
"v4.19.233",
"v4.19.232",
"v4.19.231",
"v4.19.230",
"v4.19.229",
"v4.19.228",
"v4.19.227",
"v4.19.226",
"v4.19.225",
"v4.19.224",
"v4.19.223",
"v4.19.222",
"v4.19.221",
"v4.19.220",
"v4.19.219",
"v4.19.218",
"v4.19.217",
"v4.19.216",
"v4.19.215",
"v4.19.214",
"v4.19.213",
"v4.19.212",
"v4.19.211",
"v4.19.210",
"v4.19.209",
"v4.19.208",
"v4.19.207",
"v4.19.206",
"v4.19.205",
"v4.19.204",
"v4.19.203",
"v4.19.202",
"v4.19.201",
"v4.19.200",
"v4.19.199",
"v4.19.198",
"v4.19.197",
"v4.19.196",
"v4.19.195",
"v4.19.194",
"v4.19.193",
"v4.19.192",
"v4.19.191",
"v4.19.190",
"v4.19.189",
"v4.19.188",
"v4.19.187",
"v4.19.186",
"v4.19.185",
"v4.19.184",
"v4.19.183",
"v4.19.182",
"v4.19.181",
"v4.19.180",
"v4.19.179",
"v4.19.178",
"v4.19.177",
"v4.19.176",
"v4.19.175",
"v4.19.174",
"v4.19.173",
"v4.19.172",
"v4.19.171",
"v4.19.170",
"v4.19.169",
"v4.19.168",
"v4.19.167",
"v4.19.166",
"v4.19.165",
"v4.19.164",
"v4.19.163",
"v4.19.162",
"v4.19.161",
"v4.19.160",
"v4.19.159",
"v4.19.158",
"v4.19.157",
"v4.19.156",
"v4.19.155",
"v4.19.154",
"v4.19.153",
"v4.19.152",
"v4.19.151",
"v4.19.150",
"v4.19.149",
"v4.19.148",
"v4.19.147",
"v4.19.146",
"v4.19.145",
"v4.19.144",
"v4.19.143",
"v4.19.142",
"v4.19.141",
"v4.19.140",
"v4.19.139",
"v4.19.138",
"v4.19.137",
"v4.19.136",
"v4.19.135",
"v4.19.134",
"v4.19.133",
"v4.19.132",
"v4.19.131",
"v4.19.130",
"v4.19.129",
"v4.19.128",
"v4.19.127",
"v4.19.126",
"v4.19.125",
"v4.19.124",
"v4.19.123",
"v4.19.122",
"v4.19.121",
"v4.19.120",
"v4.19.119",
"v4.19.118",
"v4.19.117",
"v4.19.116",
"v4.19.115",
"v4.19.114",
"v4.19.113",
"v4.19.112",
"v4.19.111",
"v4.19.110",
"v4.19.109",
"v4.19.108",
"v4.19.107",
"v4.19.106",
"v4.19.105",
"v4.19.104",
"v4.19.103",
"v4.19.102",
"v4.19.101",
"v4.19.100",
"v4.19.99",
"v4.19.98",
"v4.19.97",
"v4.19.96",
"v4.19.95",
"v4.19.94",
"v4.19.93",
"v4.19.92",
"v5.4.302",
"v5.4.301",
"v5.4.300",
"v5.4.299",
"v5.4.298",
"v5.4.297",
"v5.4.296",
"v5.4.295",
"v5.4.294",
"v5.4.293",
"v5.4.292",
"v5.4.291",
"v5.4.290",
"v5.4.289",
"v5.4.288",
"v5.4.287",
"v5.4.286",
"v5.4.285",
"v5.4.284",
"v5.4.283",
"v5.4.282",
"v5.4.281",
"v5.4.280",
"v5.4.279",
"v5.4.278",
"v5.4.277",
"v5.4.276",
"v5.4.275",
"v5.4.274",
"v5.4.273",
"v5.4.272",
"v5.4.271",
"v5.4.270",
"v5.4.269",
"v5.4.268",
"v5.4.267",
"v5.4.266",
"v5.4.265",
"v5.4.264",
"v5.4.263",
"v5.4.262",
"v5.4.261",
"v5.4.260",
"v5.4.259",
"v5.4.258",
"v5.4.257",
"v5.4.256",
"v5.4.255",
"v5.4.254",
"v5.4.253",
"v5.4.252",
"v5.4.251",
"v5.4.250",
"v5.4.249",
"v5.4.248",
"v5.4.247",
"v5.4.246",
"v5.4.245",
"v5.4.244",
"v5.4.243",
"v5.4.242",
"v5.4.241",
"v5.4.240",
"v5.4.239",
"v5.4.238",
"v5.4.237",
"v5.4.236",
"v5.4.235",
"v5.4.234",
"v5.4.233",
"v5.4.232",
"v5.4.231",
"v5.4.230",
"v5.4.229",
"v5.4.228",
"v5.4.227",
"v5.4.226",
"v5.4.225",
"v5.4.224",
"v5.4.223",
"v5.4.222",
"v5.4.221",
"v5.4.220",
"v5.4.219",
"v5.4.218",
"v5.4.217",
"v5.4.216",
"v5.4.215",
"v5.4.214",
"v5.4.213",
"v5.4.212",
"v5.4.211",
"v5.4.210",
"v5.4.209",
"v5.4.208",
"v5.4.207",
"v5.4.206",
"v5.4.205",
"v5.4.204",
"v5.4.203",
"v5.4.202",
"v5.4.201",
"v5.4.200",
"v5.4.199",
"v5.4.198",
"v5.4.197",
"v5.4.196",
"v5.4.195",
"v5.4.194",
"v5.4.193",
"v5.4.192",
"v5.4.191",
"v5.4.190",
"v5.4.189",
"v5.4.188",
"v5.4.187",
"v5.4.186",
"v5.4.185",
"v5.4.184",
"v5.4.183",
"v5.4.182",
"v5.4.181",
"v5.4.180",
"v5.4.179",
"v5.4.178",
"v5.4.177",
"v5.4.176",
"v5.4.175",
"v5.4.174",
"v5.4.173",
"v5.4.172",
"v5.4.171",
"v5.4.170",
"v5.4.169",
"v5.4.168",
"v5.4.167",
"v5.4.166",
"v5.4.165",
"v5.4.164",
"v5.4.163",
"v5.4.162",
"v5.4.161",
"v5.4.160",
"v5.4.159",
"v5.4.158",
"v5.4.157",
"v5.4.156",
"v5.4.155",
"v5.4.154",
"v5.4.153",
"v5.4.152",
"v5.4.151",
"v5.4.150",
"v5.4.149",
"v5.4.148",
"v5.4.147",
"v5.4.146",
"v5.4.145",
"v5.4.144",
"v5.4.143",
"v5.4.142",
"v5.4.141",
"v5.4.140",
"v5.4.139",
"v5.4.138",
"v5.4.137",
"v5.4.136",
"v5.4.135",
"v5.4.134",
"v5.4.133",
"v5.4.132",
"v5.4.131",
"v5.4.130",
"v5.4.129",
"v5.4.128",
"v5.4.127",
"v5.4.126",
"v5.4.125",
"v5.4.124",
"v5.4.123",
"v5.4.122",
"v5.4.121",
"v5.4.120",
"v5.4.119",
"v5.4.118",
"v5.4.117",
"v5.4.116",
"v5.4.115",
"v5.4.114",
"v5.4.113",
"v5.4.112",
"v5.4.111",
"v5.4.110",
"v5.4.109",
"v5.4.108",
"v5.4.107",
"v5.4.106",
"v5.4.105",
"v5.4.104",
"v5.4.103",
"v5.4.102",
"v5.4.101",
"v5.4.100",
"v5.4.99",
"v5.4.98",
"v5.4.97",
"v5.4.96",
"v5.4.95",
"v5.4.94",
"v5.4.93",
"v5.4.92",
"v5.4.91",
"v5.4.90",
"v5.4.89",
"v5.4.88",
"v5.4.87",
"v5.4.86",
"v5.4.85",
"v5.4.84",
"v5.4.83",
"v5.4.82",
"v5.4.81",
"v5.4.80",
"v5.4.79",
"v5.4.78",
"v5.4.77",
"v5.4.76",
"v5.4.75",
"v5.4.74",
"v5.4.73",
"v5.4.72",
"v5.4.71",
"v5.4.70",
"v5.4.69",
"v5.4.68",
"v5.4.67",
"v5.4.66",
"v5.4.65",
"v5.4.64",
"v5.4.63",
"v5.4.62",
"v5.4.61",
"v5.4.60",
"v5.4.59",
"v5.4.58",
"v5.4.57",
"v5.4.56",
"v5.4.55",
"v5.4.54",
"v5.4.53",
"v5.4.52",
"v5.4.51",
"v5.4.50",
"v5.4.49",
"v5.4.48",
"v5.4.47",
"v5.4.46",
"v5.4.45",
"v5.4.44",
"v5.4.43",
"v5.4.42",
"v5.4.41",
"v5.4.40",
"v5.4.39",
"v5.4.38",
"v5.4.37",
"v5.4.36",
"v5.4.35",
"v5.4.34",
"v5.4.33",
"v5.4.32",
"v5.4.31",
"v5.4.30",
"v5.4.29",
"v5.4.28",
"v5.4.27",
"v5.4.26",
"v5.4.25",
"v5.4.24",
"v5.4.23",
"v5.4.22",
"v5.4.21",
"v5.4.20",
"v5.4.19",
"v5.4.18",
"v5.4.17",
"v5.4.16",
"v5.4.15",
"v5.4.14",
"v5.4.13",
"v5.4.12",
"v5.4.11",
"v5.4.10",
"v5.4.9",
"v5.4.8",
"v5.4.7"
],
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-89483.json"
}
},
{
"ranges": [
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "5.5.0"
},
{
"fixed": "5.10.270"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "5.11.0"
},
{
"fixed": "5.15.221"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "5.16.0"
},
{
"fixed": "6.1.188"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "6.2.0"
},
{
"fixed": "6.6.157"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "6.7.0"
},
{
"fixed": "6.12.109"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "6.13.0"
},
{
"fixed": "6.18.50"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "6.19.0"
},
{
"fixed": "7.2.4"
}
]
}
],
"package": {
"name": "Kernel",
"ecosystem": "Linux"
},
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-89483.json"
}
}
],
"modified": "2026-10-28T02:30:26.081126430Z",
"provider": "osv",
"references": [
"https://git.kernel.org/stable/c/3f84d2bd0d8ae8c7e8e0f8fc3cbf018a282971a1",
"https://git.kernel.org/stable/c/415f2772ebcbc7f3f1ab1a71915dab82cee3465e",
"https://git.kernel.org/stable/c/66b5af23b6f956e57f8205c46aa80b054631be34",
"https://git.kernel.org/stable/c/67551d8430df94c827e1830bd3a5fae1f66a5219",
"https://git.kernel.org/stable/c/76139b5bbf531e675934b97227be3521c7fdd537",
"https://git.kernel.org/stable/c/bededeaaeff404978a5a8e2a605a6c3017cddd3e",
"https://git.kernel.org/stable/c/dc4d4b70a863f7e39ef8bd137634be4e6db8b084",
"https://git.kernel.org/stable/c/f5827817b4fc7feeabf4f53fb4b626e6edc52fef",
"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/89xxx/CVE-2026-89483.json",
"https://nvd.nist.gov/vuln/detail/CVE-2026-89483",
"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git"
],
"provider_metadata": {
"cna_assigner": "Linux",
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/89xxx/CVE-2026-89483.json"
}
},
"related_cves": [
{
"value": "CVE-2026-89483",
"evidence": "/id"
}
],
"security_relevant": true,
"severity_evidence": "/severity/0/score"
},
"source_id": "core-osv",
"document_id": 492652,
"published_at": "2026-09-11T19:43:38.076+00:00"
}