CVE-2026-74472: ublk: reset kernel-owned dev_info fields in ublk_ctrl_add_dev()

Greg Kroah-Hartman <[email protected]>
Newsgroups org.kernel.vger.linux-cve-announce
Message-ID <2026081535-CVE-2026-74472-fcab@gregkh>
From: Greg Kroah-Hartman <[email protected]>

Description
===========

In the Linux kernel, the following vulnerability has been resolved:

ublk: reset kernel-owned dev_info fields in ublk_ctrl_add_dev()

ublk_ctrl_add_dev() memcpy()s the userspace ublksrv_ctrl_dev_info into
ub->dev_info and then fixes up the fields the driver owns, but misses
->state and ->ublksrv_pid.

A device added with ->state = UBLK_S_DEV_LIVE passes the
"->state != UBLK_S_DEV_DEAD" test that ublk_stop_dev_unlocked() uses as its
proxy for "a disk is attached", while ->ub_disk is still NULL, so DEL_DEV
right after ADD_DEV oopses in del_gendisk().  UBLK_S_DEV_QUIESCED plus
UBLK_F_USER_RECOVERY dies one step earlier, in ublk_force_abort_dev().  A
poisoned ->state also gets START_USER_RECOVERY and the char device
read/write path onto a device that was never started, and wedges START_DEV
at -EEXIST.  A poisoned ->ublksrv_pid just makes GET_DEV_INFO report an
unrelated task as the ublk server.

Reset both after the memcpy(), as ublk_detach_disk() does.  Userspace only
ever reads these back, so correcting them silently breaks nothing.

ADD_DEV has copied ->state in unsanitized since ublk was merged, but back
then it was harmless: the gendisk was allocated during ADD_DEV, and both
teardown and the START_DEV -EEXIST check keyed off disk_live() rather than
->state.  The oops became reachable once the disk allocation moved to
START_DEV and those checks switched to ->state.

The Linux kernel CVE team has assigned CVE-2026-74472 to this issue.


Affected and fixed versions
===========================

	Issue introduced in 6.0 with commit 6d9e6dfdf3b207701471f364121c67eefb000682 and fixed in 6.6.151 with commit ee41b00858ca65b4428e99efe39a4277c1f043d2
	Issue introduced in 6.0 with commit 6d9e6dfdf3b207701471f364121c67eefb000682 and fixed in 6.12.103 with commit b67ce16b26ad0f14cfd6071013840aa95f823bea
	Issue introduced in 6.0 with commit 6d9e6dfdf3b207701471f364121c67eefb000682 and fixed in 6.18.44 with commit 205feb72e5beb3140e4e1403b6cff30cf739bab9
	Issue introduced in 6.0 with commit 6d9e6dfdf3b207701471f364121c67eefb000682 and fixed in 7.1.8 with commit 127033b79383a3e78361d7e971588aa8849f5124
	Issue introduced in 6.0 with commit 6d9e6dfdf3b207701471f364121c67eefb000682 and fixed in 7.2-rc6 with commit e65848e4ce352bac9e3465099354c8b8f845391f

Please see https://www.kernel.org for a full list of currently supported
kernel versions by the kernel community.

Unaffected versions might change over time as fixes are backported to
older supported kernel versions.  The official CVE entry at
	https://cve.org/CVERecord/?id=CVE-2026-74472
will be updated if fixes are backported, please check that for the most
up to date information about this issue.


Affected files
==============

The file(s) affected by this issue are:
	drivers/block/ublk_drv.c


Mitigation
==========

The Linux kernel CVE team recommends that you update to the latest
stable kernel version for this, and many other bugfixes.  Individual
changes are never tested alone, but rather are part of a larger kernel
release.  Cherry-picking individual commits is not recommended or
supported by the Linux kernel community at all.  If however, updating to
the latest release is impossible, the individual changes to resolve this
issue can be found at these commits:
	https://git.kernel.org/stable/c/ee41b00858ca65b4428e99efe39a4277c1f043d2
	https://git.kernel.org/stable/c/b67ce16b26ad0f14cfd6071013840aa95f823bea
	https://git.kernel.org/stable/c/205feb72e5beb3140e4e1403b6cff30cf739bab9
	https://git.kernel.org/stable/c/127033b79383a3e78361d7e971588aa8849f5124
	https://git.kernel.org/stable/c/e65848e4ce352bac9e3465099354c8b8f845391f
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.