From: Thomas Huth <[email protected]> The assert() statement in xhci_find_stream() can be triggered by the guest (see bug tickets #273, #3895 and #3988 on gitlab.com). Turn it into a qemu_log_mask() instead to fix this problem.
Resolves: https://gitlab.com/qemu-project/qemu/-/work_items/273 Reviewed-by: Peter Maydell <[email protected]> Signed-off-by: Thomas Huth <[email protected]> Message-ID: <[email protected]> (cherry picked from commit 4daeaa2fe0f979b70fb3e54cc5661aadbffcd311) Signed-off-by: Michael Tokarev <[email protected]> diff --git a/hw/usb/hcd-xhci.c b/hw/usb/hcd-xhci.c index 31def9dad7e..3aeb4f8780f 100644 --- a/hw/usb/hcd-xhci.c +++ b/hw/usb/hcd-xhci.c @@ -1011,7 +1011,12 @@ static XHCIStreamContext *xhci_find_stream(XHCIEPContext *epctx, dma_addr_t base; uint32_t ctx[2], sct; - assert(streamid != 0); + if (!streamid) { + qemu_log_mask(LOG_GUEST_ERROR, "xhci: stream ID is zero\n"); + *cc_error = CC_INVALID_STREAM_ID_ERROR; + return NULL; + } + if (epctx->lsa) { if (streamid >= epctx->nr_pstreams) { *cc_error = CC_INVALID_STREAM_ID_ERROR; -- 2.47.3
