Patchwork Fix usage of USB_DEV_FLAG_IS_HOST flag.

login
register
mail settings
Submitter Michael Marineau
Date May 12, 2013, 11:19 p.m.
Message ID <1368400777-2938-1-git-send-email-mike@marineau.org>
Download mbox | patch
Permalink /patch/243265/
State New
Headers show

Comments

Michael Marineau - May 12, 2013, 11:19 p.m.
USB_DEV_FLAG_IS_HOST is the bit number, not value. Booting with a
"Fitbit Base Station" USB dongle was triggering this assert.

Signed-off-by: Michael Marineau <mike@marineau.org>
---
 hw/usb/core.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
Gerd Hoffmann - May 13, 2013, 3:51 p.m.
On 05/13/13 01:19, Michael Marineau wrote:
> USB_DEV_FLAG_IS_HOST is the bit number, not value. Booting with a
> "Fitbit Base Station" USB dongle was triggering this assert.
> 
> Signed-off-by: Michael Marineau <mike@marineau.org>
> ---
>  hw/usb/core.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/hw/usb/core.c b/hw/usb/core.c
> index 15a150a..05948ca 100644
> --- a/hw/usb/core.c
> +++ b/hw/usb/core.c
> @@ -410,7 +410,7 @@ void usb_handle_packet(USBDevice *dev, USBPacket *p)
>              assert(p->ep->type != USB_ENDPOINT_XFER_ISOC);
>              /* using async for interrupt packets breaks migration */
>              assert(p->ep->type != USB_ENDPOINT_XFER_INT ||
> -                   (dev->flags & USB_DEV_FLAG_IS_HOST));
> +                   (dev->flags & (1 << USB_DEV_FLAG_IS_HOST)));
>              usb_packet_set_state(p, USB_PACKET_ASYNC);
>              QTAILQ_INSERT_TAIL(&p->ep->queue, p, queue);
>          } else if (p->status == USB_RET_ADD_TO_QUEUE) {

Looks good.

Anthony?  Can you pick it for 1.5 directly?  I don't have any other
pending usb bits for 1.5 at the moment.

Reviewed-by: Gerd Hoffmann <kraxel@redhat.com>

cheers,
  Gerd
Michael Marineau - May 22, 2013, 1:44 a.m.
On Mon, May 13, 2013 at 11:51 AM, Gerd Hoffmann <kraxel@redhat.com> wrote:

> On 05/13/13 01:19, Michael Marineau wrote:
> > USB_DEV_FLAG_IS_HOST is the bit number, not value. Booting with a
> > "Fitbit Base Station" USB dongle was triggering this assert.
> >
> > Signed-off-by: Michael Marineau <mike@marineau.org>
> > ---
> >  hw/usb/core.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/hw/usb/core.c b/hw/usb/core.c
> > index 15a150a..05948ca 100644
> > --- a/hw/usb/core.c
> > +++ b/hw/usb/core.c
> > @@ -410,7 +410,7 @@ void usb_handle_packet(USBDevice *dev, USBPacket *p)
> >              assert(p->ep->type != USB_ENDPOINT_XFER_ISOC);
> >              /* using async for interrupt packets breaks migration */
> >              assert(p->ep->type != USB_ENDPOINT_XFER_INT ||
> > -                   (dev->flags & USB_DEV_FLAG_IS_HOST));
> > +                   (dev->flags & (1 << USB_DEV_FLAG_IS_HOST)));
> >              usb_packet_set_state(p, USB_PACKET_ASYNC);
> >              QTAILQ_INSERT_TAIL(&p->ep->queue, p, queue);
> >          } else if (p->status == USB_RET_ADD_TO_QUEUE) {
>
> Looks good.
>
> Anthony?  Can you pick it for 1.5 directly?  I don't have any other
> pending usb bits for 1.5 at the moment.
>
> Reviewed-by: Gerd Hoffmann <kraxel@redhat.com>
>
> cheers,
>   Gerd
>

Ping, looks like this hasn't managed to land in master yet and just wanted
to make sure it doesn't get forgotten. I probably should have noted in the
original email that this bug was introduced
in be41efde3ca0372dbf7543e09ff473b4eec25057 and impacts both 1.4 and 1.5.
Gerd Hoffmann - May 28, 2013, 10:48 a.m.
Hi,

>> Looks good.
>>
>> Anthony?  Can you pick it for 1.5 directly?  I don't have any other
>> pending usb bits for 1.5 at the moment.
>>
>> Reviewed-by: Gerd Hoffmann <kraxel@redhat.com>
>>
>> cheers,
>>   Gerd
>>
> 
> Ping, looks like this hasn't managed to land in master yet and just wanted
> to make sure it doesn't get forgotten. I probably should have noted in the
> original email that this bug was introduced
> in be41efde3ca0372dbf7543e09ff473b4eec25057 and impacts both 1.4 and 1.5.

Damn, missed 1.5.  Added to usb patch queue now.
Will also queue up for stable (aka 1.5.1).

cheers,
  Gerd

Patch

diff --git a/hw/usb/core.c b/hw/usb/core.c
index 15a150a..05948ca 100644
--- a/hw/usb/core.c
+++ b/hw/usb/core.c
@@ -410,7 +410,7 @@  void usb_handle_packet(USBDevice *dev, USBPacket *p)
             assert(p->ep->type != USB_ENDPOINT_XFER_ISOC);
             /* using async for interrupt packets breaks migration */
             assert(p->ep->type != USB_ENDPOINT_XFER_INT ||
-                   (dev->flags & USB_DEV_FLAG_IS_HOST));
+                   (dev->flags & (1 << USB_DEV_FLAG_IS_HOST)));
             usb_packet_set_state(p, USB_PACKET_ASYNC);
             QTAILQ_INSERT_TAIL(&p->ep->queue, p, queue);
         } else if (p->status == USB_RET_ADD_TO_QUEUE) {