boxscore/security
CVE · referencelatest edition

Reference page — cumulative record through Wednesday, August 19, 2026 UTC. Reference pages update as the archive grows; only dated daily editions are immutable pages of record.

CVE-2025-38658MEDIUM
Linux Linux — nvmet: pci-epf: Do not complete commands twice if nvmet_req_init() fails
  AV  AC  PR  UI  S  C  I  A   CVSS    EPSS   %ile   KEV
   L   L   L   N  U  N  N  H    5.5   .0019    9.2     —
AFFECTED
  Product  Versions                                    Fixed
  Linux    0faa0fe6f90ea59b10d1b0f15ce0eb0c18eff186 –  —
  Linux    6.14 –                                      6.16.1
TIMELINE
  Apr 16  Reserved by Linux
  Aug 22  Published (CNA: Linux)
  Jul 30  RESCORED — CVE-2025-38658 (Linux). CVSS 8.8 → 5.5 (NVD).
CWE-908 · CNA: Linux · CVSS v3.1 · 2 references · NVD status: Modified

Description

In the Linux kernel, the following vulnerability has been resolved: nvmet: pci-epf: Do not complete commands twice if nvmet_req_init() fails Have nvmet_req_init() and req->execute() complete failed commands. Description of the problem: nvmet_req_init() calls __nvmet_req_complete() internally upon failure, e.g., unsupported opcode, which calls the "queue_response" callback, this results in nvmet_pci_epf_queue_response() being called, which will call nvmet_pci_epf_complete_iod() if data_len is 0 or if dma_dir is different from DMA_TO_DEVICE. This results in a double completion as nvmet_pci_epf_exec_iod_work() also calls nvmet_pci_epf_complete_iod() when nvmet_req_init() fails. Steps to reproduce: On the host send a command with an unsupported opcode with nvme-cli, For example the admin command "security receive" $ sudo nvme security-recv /dev/nvme0n1 -n1 -x4096 This triggers a double completion as nvmet_req_init() fails and nvmet_pci_epf_queue_response() is called, here iod->dma_dir is still in the default state of "DMA_NONE" as set by default in nvmet_pci_epf_alloc_iod(), so nvmet_pci_epf_complete_iod() is called. Because nvmet_req_init() failed nvmet_pci_epf_complete_iod() is also called in nvmet_pci_epf_exec_iod_work() leading to a double completion. This not only sends two completions to the host but also corrupts the state of the PCI NVMe target leading to kernel oops. This patch lets nvmet_req_init() and req->execute() complete all failed commands, and removes the double completion case in nvmet_pci_epf_exec_iod_work() therefore fixing the edge cases where double completions occurred.

Lifecycle

Complete event history — 3 events, chronological
DateEventDetail
April 16, 2025ReservedReserved by Linux
August 22, 2025PublishedPublished (CNA: Linux)
July 30, 2026RESCOREDRESCORED — CVE-2025-38658 (Linux). CVSS 8.8 → 5.5 (NVD).

Affected

Affected products and packages — 2 rows
VendorProduct / PackageEcosystemVersion introducedFixed
LinuxLinux0faa0fe6f90ea59b10d1b0f15ce0eb0c18eff186
LinuxLinux6.146.16.1

Weaknesses

CWE-908

References (2)

Related

Authoritative record: CVE-2025-38658 at cve.org

Vendors: linux

Weaknesses: CWE-908

About this page

This is a reference page, not a dated page of record. It assembles the complete lifecycle of CVE-2025-38658 from the CVE Program record, NVD enrichment, the CISA KEV catalog, EPSS, and OSV advisories. The box score's numbers (CVSS, EPSS, KEV status) are current as of Wednesday, August 19, 2026 UTC and are re-derived as the archive grows; only dated daily editions are immutable pages of record. The authoritative source for this identifier is cve.org.