In musb_packet() handle final processing of non-asynchronous USB packets by directly calling musb_schedule_cb() rather than going through usb_packet_complete(). The latter will trigger an assertion because the packet doesn't belong to a device.
Signed-off-by: Peter Maydell <peter.mayd...@linaro.org> --- The fix here is as suggested by Gerd. hw/usb-musb.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/hw/usb-musb.c b/hw/usb-musb.c index 6037193..3eed855 100644 --- a/hw/usb-musb.c +++ b/hw/usb-musb.c @@ -611,7 +611,7 @@ static void musb_packet(MUSBState *s, MUSBEndPoint *ep, } ep->status[dir] = ret; - usb_packet_complete(s->port.dev, &ep->packey[dir].p); + musb_schedule_cb(s->port.dev, &ep->packey[dir].p); } static void musb_tx_packet_complete(USBPacket *packey, void *opaque) -- 1.7.1