[PATCH v2 0/2] usb: gadget: dummy_hcd: fixes found while testing virtio-usb

From: Igor Skalkin

Date: Wed Aug 12 2026 - 04:24:37 EST


This is v2 of the dummy_hcd fixes found while testing our upcoming
virtio-usb transport driver (patches for that will follow separately).

Changes since v1:

- Patch 1 (ep0 maxpacket) is unchanged; carrying forward Alan
Stern's Acked-by.

- Patch 2 (false overflow on bounded IN) is dropped. Alan Stern
pointed out the fix was wrong: an IN short packet where the
device has more data queued than the host's buffer can hold is a
genuine overflow, not a normal bounded completion. Agreed, and
there's no replacement fix queued for this report.

- Patch 3 (SG transfer handling across chunks) is dropped from this
version. Alan Stern confirmed the underlying issue and suggested
a simpler fix (resync the sg_miter with sg_miter_skip() after each
consumed chunk instead of restarting and re-walking from
urb->actual_length on every call). The original failure was
reliably reproducible against an earlier, debug-instrumented
version of our (not yet posted) virtio-usb transport driver, but
is not currently reproducing against the current version of that
driver, which makes it hard to verify a replacement fix with any
confidence. I'd rather confirm a fix against a real reproduction
before resending than resend an unverified change, so this patch
is held back for now and will follow separately once reproduced
again.

- Patch 4 (no_sg_constraint) is reworked per Alan Stern's review:
instead of unconditionally relaxing the SG alignment constraint,
it is now only relaxed on the SuperSpeed bus, preserving the
EHCI-style alignment emulation on the HighSpeed bus.

Igor Skalkin (2):
usb: gadget: dummy_hcd: fix SuperSpeed ep0 maxpacket
usb: gadget: dummy_hcd: set no_sg_constraint only on the SuperSpeed
bus

drivers/usb/gadget/udc/dummy_hcd.c | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)

--
2.49.0