usb: mass storage fix
authorGerd Hoffmann <kraxel@redhat.com>
Wed, 4 May 2011 14:49:56 +0000 (16:49 +0200)
committerGerd Hoffmann <kraxel@redhat.com>
Wed, 4 May 2011 14:55:15 +0000 (16:55 +0200)
Initialize scsi_len with zero when starting a new request, so any
stuff leftover from the previous request is cleared out.  This may
happen in case the data returned by the scsi command doesn't fit
into the buffer provided by the guest.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
hw/usb-msd.c

index 93f4b78f3ca30c3f4742c4d09f41ac830a0b8959..bd1c3a415f12446405d2522af40131d8983f265f 100644 (file)
@@ -364,6 +364,7 @@ static int usb_msd_handle_data(USBDevice *dev, USBPacket *p)
             DPRINTF("Command tag 0x%x flags %08x len %d data %d\n",
                     s->tag, cbw.flags, cbw.cmd_len, s->data_len);
             s->residue = 0;
+            s->scsi_len = 0;
             s->scsi_dev->info->send_command(s->scsi_dev, s->tag, cbw.cmd, 0);
             /* ??? Should check that USB and SCSI data transfer
                directions match.  */