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

Goal: 1000 CNY · Raised: 1000 CNY

100.0%

CVE-2025-38209— nvme-tcp: remove tag set when second admin queue config fails

EPSS 0.08% · P23
Get alerts for future matching vulnerabilitiesLog in to subscribe

I. Basic Information for CVE-2025-38209

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
nvme-tcp: remove tag set when second admin queue config fails
Source: NVD (National Vulnerability Database)
Vulnerability Description
In the Linux kernel, the following vulnerability has been resolved: nvme-tcp: remove tag set when second admin queue config fails Commit 104d0e2f6222 ("nvme-fabrics: reset admin connection for secure concatenation") modified nvme_tcp_setup_ctrl() to call nvme_tcp_configure_admin_queue() twice. The first call prepares for DH-CHAP negotitation, and the second call is required for secure concatenation. However, this change triggered BUG KASAN slab-use-after- free in blk_mq_queue_tag_busy_iter(). This BUG can be recreated by repeating the blktests test case nvme/063 a few times [1]. When the BUG happens, nvme_tcp_create_ctrl() fails in the call chain below: nvme_tcp_create_ctrl() nvme_tcp_alloc_ctrl() new=true ... Alloc nvme_tcp_ctrl and admin_tag_set nvme_tcp_setup_ctrl() new=true nvme_tcp_configure_admin_queue() new=true ... Succeed nvme_alloc_admin_tag_set() ... Alloc the tag set for admin_tag_set nvme_stop_keep_alive() nvme_tcp_teardown_admin_queue() remove=false nvme_tcp_configure_admin_queue() new=false nvme_tcp_alloc_admin_queue() ... Fail, but do not call nvme_remove_admin_tag_set() nvme_uninit_ctrl() nvme_put_ctrl() ... Free up the nvme_tcp_ctrl and admin_tag_set The first call of nvme_tcp_configure_admin_queue() succeeds with new=true argument. The second call fails with new=false argument. This second call does not call nvme_remove_admin_tag_set() on failure, due to the new=false argument. Then the admin tag set is not removed. However, nvme_tcp_create_ctrl() assumes that nvme_tcp_setup_ctrl() would call nvme_remove_admin_tag_set(). Then it frees up struct nvme_tcp_ctrl which has admin_tag_set field. Later on, the timeout handler accesses the admin_tag_set field and causes the BUG KASAN slab-use-after-free. To not leave the admin tag set, call nvme_remove_admin_tag_set() when the second nvme_tcp_configure_admin_queue() call fails. Do not return from nvme_tcp_setup_ctrl() on failure. Instead, jump to "destroy_admin" go-to label to call nvme_tcp_teardown_admin_queue() which calls nvme_remove_admin_tag_set().
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存在安全漏洞,该漏洞源于未移除标签集导致释放后重用。
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 104d0e2f622233477ef7e57e59e8a4c3bb062c82 ~ db1da838b6012e4570c6f81e28ffe1d0ff595948 -
LinuxLinux 6.15 -

II. Public POCs for CVE-2025-38209

#POC DescriptionSource LinkShenlong Link
AI-Generated POCPremium

No public POC found.

Login to generate AI POC

III. Intelligence Information for CVE-2025-38209

登录查看更多情报信息。

Same Patch Batch · Linux · 2025-07-04 · 59 CVEs total

CVE-2025-38216iommu/vt-d: Restore context entry setup order for aliased devices
CVE-2025-38229media: cxusb: no longer judge rbuf when the write fails
CVE-2025-38231nfsd: Initialize ssc before laundromat_work to prevent NULL dereference
CVE-2025-38230jfs: validate AG parameters in dbMount() to prevent crashes
CVE-2025-38228media: imagination: fix a potential memory leak in e5010_probe()
CVE-2025-38233powerpc64/ftrace: fix clobbered r15 during livepatching
CVE-2025-38221ext4: fix out of bounds punch offset
CVE-2025-38219f2fs: prevent kernel warning due to negative i_nlink from corrupted image
CVE-2025-38218f2fs: fix to do sanity check on sit_bitmap_size
CVE-2025-38217hwmon: (ftsteutates) Fix TOCTOU race in fts_read()
CVE-2025-38220ext4: only dirty folios when data journaling regular files
CVE-2025-38215fbdev: Fix do_register_framebuffer to prevent null-ptr-deref in fb_videomode_to_var
CVE-2025-38214fbdev: Fix fb_set_var to prevent null-ptr-deref in fb_videomode_to_var
CVE-2025-38212ipc: fix to protect IPCS lookups using RCU
CVE-2025-38211RDMA/iwcm: Fix use-after-free of work objects after cm_id destruction
CVE-2025-38210configfs-tsm-report: Fix NULL dereference of tsm_ops
CVE-2025-38208smb: client: add NULL check in automount_fullpath
CVE-2025-38207mm: fix uprobe pte be overwritten when expanding vma
CVE-2025-38206exfat: fix double free in delayed_free
CVE-2025-38205drm/amd/display: Avoid divide by zero by initializing dummy pitch to 1

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

IV. Related Vulnerabilities

V. Comments for CVE-2025-38209

No comments yet


Leave a comment