Goal Reached Thanks to every supporter — we hit 100%!

Goal: 1000 CNY · Raised: 1000 CNY

100.0%

CVE-2025-38658— nvmet: pci-epf: Do not complete commands twice if nvmet_req_init() fails

EPSS 0.03% · P7
Get alerts for future matching vulnerabilitiesLog in to subscribe

I. Basic Information for CVE-2025-38658

Vulnerability Information

Have questions about the vulnerability? See if Shenlong's analysis helps!
View Shenlong Deep Dive ↗

Although we use advanced large model technology, its output may still contain inaccurate or outdated information.Shenlong tries to ensure data accuracy, but please verify and judge based on the actual situation.

Vulnerability Title
nvmet: pci-epf: Do not complete commands twice if nvmet_req_init() fails
Source: NVD (National Vulnerability Database)
Vulnerability 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.
Source: NVD (National Vulnerability Database)
CVSS Information
N/A
Source: NVD (National Vulnerability Database)
Vulnerability Type
N/A
Source: NVD (National Vulnerability Database)
Vulnerability Title
Linux kernel 安全漏洞
Source: CNNVD (China National Vulnerability Database)
Vulnerability Description
Linux kernel是美国Linux基金会的开源操作系统Linux所使用的内核。 Linux kernel存在安全漏洞,该漏洞源于nvmet pci-epf在nvmet_req_init失败时可能双重完成命令。
Source: CNNVD (China National Vulnerability Database)
CVSS Information
N/A
Source: CNNVD (China National Vulnerability Database)
Vulnerability Type
N/A
Source: CNNVD (China National Vulnerability Database)

Affected Products

VendorProductAffected VersionsCPESubscribe
LinuxLinux 0faa0fe6f90ea59b10d1b0f15ce0eb0c18eff186 ~ a535c0b10060bc8c174a7964b0f98064ee0c4774 -
LinuxLinux 6.14 -

II. Public POCs for CVE-2025-38658

#POC DescriptionSource LinkShenlong Link
AI-Generated POCPremium

No public POC found.

Login to generate AI POC

III. Intelligence Information for CVE-2025-38658

登录查看更多情报信息。

Same Patch Batch · Linux · 2025-08-22 · 60 CVEs total

CVE-2025-38634power: supply: cpcap-charger: Fix null check for power_supply_get_by_name
CVE-2025-38616tls: handle data disappearing from under the TLS ULP
CVE-2025-38620zloop: fix KASAN use-after-free of tag set
CVE-2025-38619media: ti: j721e-csi2rx: fix list_del corruption
CVE-2025-38621md: make rdev_addable usable for rcu mode
CVE-2025-38618vsock: Do not allow binding to VMADDR_PORT_ANY
CVE-2025-38630fbdev: imxfb: Check fb_add_videomode to prevent null-ptr-deref
CVE-2025-38632pinmux: fix race causing mux_owner NULL with active mux_usecount
CVE-2025-38631clk: imx95-blk-ctl: Fix synchronous abort
CVE-2025-38633clk: spacemit: mark K1 pll1_d8 as critical
CVE-2025-38629ALSA: usb: scarlett2: Fix missing NULL check
CVE-2025-38635clk: davinci: Add NULL check in davinci_lpsc_clk_register()
CVE-2025-38636rv: Use strings in da monitors tracepoints
CVE-2025-38638ipv6: add a retry logic in net6_rt_notify()
CVE-2025-38639netfilter: xt_nfacct: don't assume acct name is null-terminated
CVE-2025-38640bpf: Disable migration in nf_hook_run_bpf().
CVE-2025-38641Bluetooth: btusb: Fix potential NULL dereference on kmalloc failure
CVE-2025-38642wifi: mac80211: fix WARN_ON for monitor mode on some devices
CVE-2025-38643wifi: cfg80211: Add missing lock in cfg80211_check_and_end_cac()
CVE-2025-38644wifi: mac80211: reject TDLS operations when station is not associated

Showing top 20 of 60 CVEs. View all on vendor page → →

IV. Related Vulnerabilities

V. Comments for CVE-2025-38658

No comments yet


Leave a comment