diff options
author | Gerd Hoffmann <kraxel@redhat.com> | 2020-07-13 08:27:12 +0200 |
---|---|---|
committer | Gerd Hoffmann <kraxel@redhat.com> | 2020-07-16 10:20:27 +0200 |
commit | 4084e35068772cf4f81bbae5174019f277c61084 (patch) | |
tree | 668b9d8be6e207167ce3b54f3d14788ab4536f51 /hw/usb | |
parent | 8ec1415935ff4214ef9b47448ff7ac52cfa8b77e (diff) | |
download | qemu-4084e35068772cf4f81bbae5174019f277c61084.zip qemu-4084e35068772cf4f81bbae5174019f277c61084.tar.gz qemu-4084e35068772cf4f81bbae5174019f277c61084.tar.bz2 |
usb: fix storage regression
Fix the contition to figure whenever we need to wait for more data or
not. Simply check the mode, if we are not in DATAIN state any more we
are done already and don't need to go ASYNC.
Fixes: 7ad3d51ebb8a ("usb: add short-packet handling to usb-storage driver")
Reported-by: Sai Pavan Boddu <saipava@xilinx.com>
Tested-by: Paul Zimmerman <pauldzim@gmail.com>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Message-id: 20200713062712.1476-1-kraxel@redhat.com
Diffstat (limited to 'hw/usb')
-rw-r--r-- | hw/usb/dev-storage.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/hw/usb/dev-storage.c b/hw/usb/dev-storage.c index 2ed6a8d..405a4cc 100644 --- a/hw/usb/dev-storage.c +++ b/hw/usb/dev-storage.c @@ -546,8 +546,7 @@ static void usb_msd_handle_data(USBDevice *dev, USBPacket *p) } } } - if (p->actual_length < p->iov.size && (p->short_not_ok || - s->scsi_len >= p->ep->max_packet_size)) { + if (p->actual_length < p->iov.size && s->mode == USB_MSDM_DATAIN) { DPRINTF("Deferring packet %p [wait data-in]\n", p); s->packet = p; p->status = USB_RET_ASYNC; |