From: "Denis V. Lunev" <den@openvz.org>
To: andrey.drobyshev@virtuozzo.com
Cc: svt-core@virtuozzo.com, den@openvz.org
Subject: [PATCH hci-8.1 0/3] hw/usb/hcd-xhci: fix guest-triggerable use-after-free (CVE-2026-17588, CVE-2026-111819) #VSTOR-151666
Date: Mon, 26 Oct 2026 12:46:42 +0100 [thread overview]
Message-ID: <20261026114645.187003-1-den@openvz.org> (raw)
A guest can crash QEMU through the emulated xHCI controller by pointing
the event ring, or an MSI-X vector, at the controller's own doorbell
register. An event posted outside MMIO context, such as a USB transfer
completion from the main loop, is then written by DMA into doorbell 0
and runs the command ring re-entrantly. A Disable Slot command planted
there frees the transfer and endpoint the caller still holds.
VSTOR-151666 is this crash on a production node: qemu-kvm SIGSEGV in
xhci_ep_free_xfer() <- xhci_complete() <- usb_msd_command_complete().
In the core, intr[0].er_start equals BAR0 + 0x2000, which is doorbell 0,
and most crashes of that VM follow the
"Blocked re-entrant IO on MemoryRegion: doorbell at addr: 0x0" warning
by a second or two.
Upstream fixed it with these three commits from Thomas Huth:
f91b0544fe engage the re-entrancy guard in the xHCI timer callbacks
(CVE-2026-17588)
89e653b773 restrict xHCI DMA writes to RAM, so events cannot reach
MMIO at all
cfa70f3a82 engage the guard in xhci_complete() and the other port
callbacks (CVE-2026-111819); this is the path that crashed
All three cherry-pick cleanly onto hci-dev with no changes. The only
local edit is the #VSTOR-151666 tag in the subjects.
Upstream has no test for either CVE. hw/usb/hcd-xhci.c builds, and the
existing usb-hcd-xhci-test qtest passes. The attack itself has not been
reproduced.
The same series is needed on hci-8.0, hci-7.4 and hci-7.3 and will be
sent separately.
Signed-off-by: Denis V. Lunev <den@openvz.org>
Thomas Huth (3):
hw/usb/hcd-xhci: Set reentrancy guard in timer functions
(CVE-2026-17588) #VSTOR-151666
hw/usb/hcd-xhci: Limit DMA transfers to plain memory #VSTOR-151666
hw/usb/hcd-xhci: More reentrancy guard fixes for the XHCI code
#VSTOR-151666
hw/usb/hcd-xhci.c | 52 ++++++++++++++++++++++++++++++++++++++++++-----
1 file changed, 47 insertions(+), 5 deletions(-)
base-commit: f3c1d9ef263edfab8d2a273078493bb766dcf8f8
--
2.53.0
next reply other threads:[~2026-10-26 11:47 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-26 11:46 Denis V. Lunev [this message]
2026-10-26 11:46 ` [PATCH hci-8.1 1/3] hw/usb/hcd-xhci: Set reentrancy guard in timer functions (CVE-2026-17588) #VSTOR-151666 Denis V. Lunev
2026-10-26 11:51 ` no-reply
2026-10-26 11:46 ` [PATCH hci-8.1 2/3] hw/usb/hcd-xhci: Limit DMA transfers to plain memory #VSTOR-151666 Denis V. Lunev
2026-10-26 11:50 ` no-reply
2026-10-26 11:46 ` [PATCH hci-8.1 3/3] hw/usb/hcd-xhci: More reentrancy guard fixes for the XHCI code #VSTOR-151666 Denis V. Lunev
2026-10-26 11:53 ` no-reply
2026-10-26 16:13 ` [PATCH hci-8.1 0/3] hw/usb/hcd-xhci: fix guest-triggerable use-after-free (CVE-2026-17588, CVE-2026-111819) #VSTOR-151666 Andrey Drobyshev
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20261026114645.187003-1-den@openvz.org \
--to=den@openvz.org \
--cc=andrey.drobyshev@virtuozzo.com \
--cc=svt-core@virtuozzo.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.