This fixes compatibility for OSes which enqueue multiple data transfers on the same endpoint without waiting for the previous one to be ACKed by the mass storage device.
Signed-off-by: Hannes Bredberg <hannesbredb...@gmail.com> --- hw/usb/dev-storage.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/hw/usb/dev-storage.c b/hw/usb/dev-storage.c index b13fe345c4..43d57afd00 100644 --- a/hw/usb/dev-storage.c +++ b/hw/usb/dev-storage.c @@ -182,13 +182,14 @@ static void usb_msd_packet_complete(MSDState *s, int status) USBPacket *p = s->packet; /* - * Set s->packet to NULL before calling usb_packet_complete + * Set s->packet and s->req to NULL before calling usb_packet_complete * because another request may be issued before * usb_packet_complete returns. */ trace_usb_msd_packet_complete(); p->status = status; s->packet = NULL; + s->req = NULL; usb_packet_complete(&s->dev, p); } -- 2.47.0