Database/Kernel, userspace & hypervisor
Linux kernel nvmet: metadata SGL allocation failure frees the data SGL against an unassigned p2p device
Impact
On an NVMe-over-Fabrics target using PCI peer-to-peer memory, req->p2p_dev is only assigned after both the data and metadata SGL allocations succeed. If the data allocation succeeds and the metadata allocation then fails, the out_free_sg path hands the still-unset req->p2p_dev to pci_p2pmem_free_sgl(), so cleanup runs against the wrong (or NULL) PCI device instead of the one the data allocation came from. The exposure is narrow and reliability-shaped rather than directly steerable: it needs a target configured with P2P memory, a metadata-bearing (protection-information) command, and an allocation failure, which in practice means p2p pool pressure. The consequence on a storage node that exports NVMe-oF to a GPU fleet is a crash or a leaked/mismatched p2p allocation in the I/O path, which is a node-level outage for every client mounting that namespace. Hosts that are only NVMe-oF initiators, or targets with P2P DMA disabled, do not run this code.
Who can reach it
A remote initiator that can submit commands to the NVMe-oF target over the storage fabric, to the extent it can drive the target's p2p pool into allocation failure with metadata-bearing commands. Requires an established fabric connection; on most fleets that means the storage VLAN, not a tenant pod. Target-side configuration (P2P memory enabled) is a precondition.
What to do
Take the stable kernel that passes the local p2p_dev to the cleanup path (five stable branches fixed) and reboot the target nodes - nvmet is in the storage serving path, so this is a drain-and-reboot per target, not a live patch. Operators who cannot schedule that window can disable P2P memory on the nvmet port configuration to take the affected path out of use, at a throughput cost. The record names only the stable commits, no distro version.
References
Related entries
- Linux kernel ice: relaxed Tx doorbell write on arm64 trips a BUG_ON in dql_completed and panics the hostCVE-2026-98965 · Linux kernel ice driver (Tx doorbell MMIO ordering on arm64)High
- Linux kernel libiscsi: a malicious iSCSI target crashes the initiator with an unsolicited NOP-InCVE-2026-99152 · Linux kernel libiscsi (__iscsi_complete_pdu management-response task lookup)High
- OpenSSL: ChaCha20-Poly1305 accepts 16-byte nonces, silently ignoring leading bytesCVE-2019-1543 · OpenSSL (ChaCha20-Poly1305 variable nonce length)High
- Linux kernel (overlayfs, Ubuntu patch): OverlayFS file-capability privilege escalationCVE-2021-3493 · Linux kernel (overlayfs, Ubuntu patch)High
- OpenSSL: X.400 address type confusion in X.509 GeneralNameCVE-2023-0286 · OpenSSLHigh
- Linux kernel (net/sched tcindex): Use-after-free in the tcindex traffic-control filter - local rootCVE-2023-1829 · Linux kernel (net/sched tcindex)High
This entry is curated: imported from vendor advisories with machine assistance, not yet individually verified. Confirm against your vendor's advisory before acting, and report anything wrong.