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: 7ad3d51ebb
("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
This commit is contained in:
parent
8ec1415935
commit
4084e35068
|
@ -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 ||
|
if (p->actual_length < p->iov.size && s->mode == USB_MSDM_DATAIN) {
|
||||||
s->scsi_len >= p->ep->max_packet_size)) {
|
|
||||||
DPRINTF("Deferring packet %p [wait data-in]\n", p);
|
DPRINTF("Deferring packet %p [wait data-in]\n", p);
|
||||||
s->packet = p;
|
s->packet = p;
|
||||||
p->status = USB_RET_ASYNC;
|
p->status = USB_RET_ASYNC;
|
||||||
|
|
Loading…
Reference in a new issue