{"id":15052,"date":"2026-09-04T19:02:23","date_gmt":"2026-09-04T11:02:23","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-64071"},"modified":"2026-09-04T19:02:23","modified_gmt":"2026-09-04T11:02:23","slug":"cve-2026-64071","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-64071","title":{"rendered":"CVE-2026-64071 [HIGH] &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nnvme-pci: fix use-aft"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>nvme-pci: fix use-after-free in nvme_free_host_mem()<\/p>\n<p>nvme_free_host_mem() frees dev-&gt;hmb_sgt via dma_free_noncontiguous()<br \/>\nbut never clears the pointer afterward.  This leads to a use-after-free<br \/>\nif nvme_free_host_mem() is called twice in the same error path.<\/p>\n<p>This can happen during nvme_probe() when nvme_setup_host_mem() succeeds<br \/>\nin allocating the HMB (setting dev-&gt;hmb_sgt) but nvme_set_host_mem()<br \/>\nfails with an I\/O error:<\/p>\n<p>  nvme_setup_host_mem()<br \/>\n    nvme_alloc_host_mem_single()   -&gt; sets dev-&gt;hmb_sgt<br \/>\n    nvme_set_host_mem()            -&gt; fails with -EIO<br \/>\n    nvme_free_host_mem()           -&gt; frees hmb_sgt, but does NOT NULL it<br \/>\n    return error<\/p>\n<p>  nvme_probe() error path:<br \/>\n    nvme_free_host_mem()           -&gt; dev-&gt;hmb_sgt is stale, use-after-free<\/p>\n<p>The second call dereferences the freed sgt, causing a NULL pointer<br \/>\ndereference in iommu_dma_free_noncontiguous() when it accesses<br \/>\nsgt-&gt;sgl-&gt;dma_address (the backing memory has been freed and zeroed).<\/p>\n<p>This is reproducible on Thunderbolt-attached NVMe devices (e.g., OWC<br \/>\nEnvoy Express behind a Dell WD22TB4 dock) where the device intermittently<br \/>\nreturns I\/O errors during HMB setup due to PCIe link instability.<\/p>\n<p> BUG: kernel NULL pointer dereference, address: 0000000000000010<br \/>\n RIP: 0010:iommu_dma_free_noncontiguous+0x22\/0x80<br \/>\n Call Trace:<\/p>\n<p>  dma_free_noncontiguous+0x3b\/0x130<br \/>\n  nvme_free_host_mem+0x30\/0xf0 [nvme]<br \/>\n  nvme_probe.cold+0xcc\/0x275 [nvme]<br \/>\n  local_pci_probe+0x43\/0xa0<br \/>\n  pci_device_probe+0xeea\/0x290<br \/>\n  really_probe+0xf9\/0x3b0<br \/>\n  __driver_probe_device+0x8b\/0x170<br \/>\n  driver_probe_device+0x24\/0xd0<br \/>\n  __driver_attach_async_helper+0x6b\/0x110<br \/>\n  async_run_entry_fn+0x37\/0x170<br \/>\n  process_one_work+0x1ac\/0x3d0<br \/>\n  worker_thread+0x1b8\/0x360<br \/>\n  kthread+0xf7\/0x130<br \/>\n  ret_from_fork+0x2d8\/0x3a0<br \/>\n  ret_from_fork_asm+0x1a\/0x30<\/p>\n<p>Fix this by setting dev-&gt;hmb_sgt to NULL after freeing it, so the<br \/>\nsecond call takes the multi-descriptor path which safely handles the<br \/>\nalready-cleaned-up state.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>nvme-pci: fix use-after-free in nvme_free_host_mem()<\/p>\n<p>nvme_free_host_mem() frees dev-&gt;hmb_sgt via dma_free_noncontiguous()<br \/>\nbut neve<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-15052","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/15052","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln"}],"about":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/types\/vuln"}],"wp:attachment":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=15052"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=15052"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=15052"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}