Message ID | 20210312094954.796799-1-kraxel@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | usb/storage: clear csw on reset | expand |
On 3/12/21 10:49 AM, Gerd Hoffmann wrote: > Stale data in csw (specifically residue) can confuse the state machine > and allows the guest trigger an assert(). So clear csw on reset to > avoid this happening in case the guest resets the device in the middle > of a request. > > Buglink: https://bugs.launchpad.net/qemu/+bug/1523811 > Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> > --- > hw/usb/dev-storage.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/hw/usb/dev-storage.c b/hw/usb/dev-storage.c > index a5f76fc00120..fd4ea818115c 100644 > --- a/hw/usb/dev-storage.c > +++ b/hw/usb/dev-storage.c > @@ -352,6 +352,7 @@ static void usb_msd_handle_reset(USBDevice *dev) > usb_msd_packet_complete(s); > } > > + memset(&s->csw, 0, sizeof(s->csw)); easy-peasy... Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> > s->mode = USB_MSDM_CBW; > }
diff --git a/hw/usb/dev-storage.c b/hw/usb/dev-storage.c index a5f76fc00120..fd4ea818115c 100644 --- a/hw/usb/dev-storage.c +++ b/hw/usb/dev-storage.c @@ -352,6 +352,7 @@ static void usb_msd_handle_reset(USBDevice *dev) usb_msd_packet_complete(s); } + memset(&s->csw, 0, sizeof(s->csw)); s->mode = USB_MSDM_CBW; }
Stale data in csw (specifically residue) can confuse the state machine and allows the guest trigger an assert(). So clear csw on reset to avoid this happening in case the guest resets the device in the middle of a request. Buglink: https://bugs.launchpad.net/qemu/+bug/1523811 Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> --- hw/usb/dev-storage.c | 1 + 1 file changed, 1 insertion(+)