GPU VulnDB

Database/Kernel, userspace & hypervisor

Linux kernel megaraid_sas: NVMe PRP list overruns the chain frame and corrupts other in-flight commands

CVSS 7.8CVE-2026-90008Kernel, userspace & hypervisorcurated

Impact

megasas_make_prp_nvme() builds the PRP list for an NVMe passthrough transfer in a DMA-pool buffer of max_chain_frame_sz bytes and never checks that bound. Since the block layer default cap rose to 4 MiB, a drive reporting a large MDTS lets a single ordinary transfer need ~1025 entries against a 4 KiB frame that holds 512, so the write runs a full page past the end of the buffer. If the following page is mapped there is no oops - it silently overwrites the neighbouring pool entry, which is another in-flight command's PRP list, so one tenant's I/O can be steered into memory belonging to another request. On GPU nodes that front their NVMe scratch or dataset cache behind a MegaRAID controller this is reachable from normal large I/O, not from a crafted command, and the failure mode is silent data corruption rather than a clean crash.

Who can reach it

Local. Any workload on the node that can issue large block I/O to an NVMe drive behind a MegaRAID controller whose firmware reports a large MDTS; no special privilege beyond access to the block device. Not reachable from the network.

What to do

Take the stable kernel fix that caps max_hw_sectors at what the chain frame can describe (commits 4bb34769ef44, 4dd118d06dec, af8c27375733). This is a kernel change: install the patched kernel and reboot each affected node - drain GPU workloads first, as the fix cannot be applied live. No vendor workaround is named in the record; lowering the block device max_sectors_kb below what the chain frame can describe reduces exposure in the meantime.

References

Related entries

All Kernel, userspace & hypervisor entries

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.