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.
Affected products
| Vendor | Product | Affected | Fixed |
|---|---|---|---|
| Linux | Linux | 6.14 | 6.16.1 |
Fixed in Linux distributions
Distributions backport fixes, so the version that fixes this vulnerability differs per release — upgrade to at least the version shown. From the distributions' security trackers and advisories.
Ubuntu
Security tracker ↗| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| Ubuntu 25.10 | linux-azure-fde | No fix yet | — |
| Ubuntu 24.04 LTS | linux-intel +17 | No fix yet | — |
| Ubuntu 22.04 LTS | linux-riscv +32 | No fix yet | — |
| Ubuntu 20.04 LTS | linux-gke +28 | No fix yet | — |
| Ubuntu 18.04 LTS | linux-gcp +14 | No fix yet | — |
Show 2 more (older releases, extended support, other products)Fewer releases
| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| Ubuntu 16.04 LTS | linux-hwe-edge | No fix yet | — |
| Ubuntu Pro Realtime 24.04 LTS | linux-realtime-6.14 | No fix yet | — |
SUSE
Security tracker ↗| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| SLES for SAP 16.0 | kernel-64kb +7 | 6.12.0-160000.6.1 | SUSE-SU-2025:21139-1 |
| SLES for SAP 16.0 | kernel-default-base | 6.12.0-160000.6.1.160000.2.4 | SUSE-SU-2025:21139-1 |
| SLES 16.0 | kernel-64kb +7 | 6.12.0-160000.6.1 | SUSE-SU-2025:21179-1, SUSE-SU-2025:21139-1 |
| SLES 16.0 | kernel-default-base | 6.12.0-160000.6.1.160000.2.4 | SUSE-SU-2025:21139-1 |
| SLE Micro 6.2 | kernel-default-base | 6.12.0-160000.6.1.160000.2.4 | SUSE-SU-2025:21074-1 |
| SLE Micro 6.2 | kernel-rt +5 | 6.12.0-160000.6.1 | SUSE-SU-2026:20560-1, SUSE-SU-2025:21074-1 |
openSUSE
Security tracker ↗| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| openSUSE Leap 16.0 | kernel-default-base | 6.12.0-160000.6.1.160000.2.4 | openSUSE-SU-2025:20081-1 |
| openSUSE Leap 16.0 | kernel-rt +10 | 6.12.0-160000.6.1 | openSUSE-SU-2025:20081-1 |
Advisories 6
- WID-SEC-2025-1898 Linux Kernel: Mehrere Schwachstellen ermöglichen Denial of Service und Privilegieneskalation BSI CERT-Bund (WID) · Nov 12, 2026
- SUSE-SU-2026:20560-1 Security update for the Linux Kernel SUSE / openSUSE Security Updates · Jul 9, 2026
- openSUSE-SU-2025:20081-1 Security update for the Linux Kernel SUSE / openSUSE Security Updates · Mar 23, 2026
- SUSE-SU-2025:21179-1 Security update for the Linux Kernel SUSE / openSUSE Security Updates · Mar 23, 2026
- SUSE-SU-2025:21139-1 Security update for the Linux Kernel SUSE / openSUSE Security Updates · Mar 23, 2026
- SUSE-SU-2025:21074-1 Security update for the Linux Kernel SUSE / openSUSE Security Updates · Mar 23, 2026