Patchwork usb-bus: fix no params

login
register
mail settings
Submitter TeLeMan
Date March 19, 2010, 4:59 a.m.
Message ID <a38b25541003182159p75e1ff04nb29ff6d3c73d7b49@mail.gmail.com>
Download mbox | patch
Permalink /patch/48110/
State New
Headers show

Comments

TeLeMan - March 19, 2010, 4:59 a.m.
The "params" is never NULL and the usb hid devices have no params.

Signed-off-by: TeLeMan <geleman@gmail.com>
---
 hw/usb-bus.c |    4 ----
 1 files changed, 0 insertions(+), 4 deletions(-)
Aurelien Jarno - March 27, 2010, 12:47 p.m.
On Fri, Mar 19, 2010 at 12:59:24PM +0800, TeLeMan wrote:
> The "params" is never NULL and the usb hid devices have no params.

This looks plainly wrong. With your patch, usb devices which don't
accept parameters, will accept and ignore them.

What are you trying to fix here?

> Signed-off-by: TeLeMan <geleman@gmail.com>
> ---
>  hw/usb-bus.c |    4 ----
>  1 files changed, 0 insertions(+), 4 deletions(-)
> 
> diff --git a/hw/usb-bus.c b/hw/usb-bus.c
> index ce8a694..f3f1ed6 100644
> --- a/hw/usb-bus.c
> +++ b/hw/usb-bus.c
> @@ -299,10 +299,6 @@ USBDevice *usbdevice_create(const char *cmdline)
>      }
> 
>      if (!usb->usbdevice_init) {
> -        if (params) {
> -            error_report("usbdevice %s accepts no params", driver);
> -            return NULL;
> -        }
>          return usb_create_simple(bus, usb->qdev.name);
>      }
>      return usb->usbdevice_init(params);
> -- 
> 1.6.5.1.1367.gcd48
> --
> SUN OF A BEACH
> 
> 
>
Kevin Wolf - March 29, 2010, 12:16 p.m.
Am 27.03.2010 13:47, schrieb Aurelien Jarno:
> On Fri, Mar 19, 2010 at 12:59:24PM +0800, TeLeMan wrote:
>> The "params" is never NULL and the usb hid devices have no params.
> 
> This looks plainly wrong. With your patch, usb devices which don't
> accept parameters, will accept and ignore them.
> 
> What are you trying to fix here?

It looks like it's fixing -usbdevice tablet (and keyboard/mouse) which
currently fails like this:

qemu-system-x86_64: usbdevice tablet accepts no params
qemu: could not add USB device 'tablet'

He's correct in that params is never NULL (if it was NULL it's set to an
empty string some lines earlier, introduced by 702f3e0f), so
usb_create_simple is never called. Maybe the right fix is to check for
*params instead of params now?

Kevin

> 
>> Signed-off-by: TeLeMan <geleman@gmail.com>
>> ---
>>  hw/usb-bus.c |    4 ----
>>  1 files changed, 0 insertions(+), 4 deletions(-)
>>
>> diff --git a/hw/usb-bus.c b/hw/usb-bus.c
>> index ce8a694..f3f1ed6 100644
>> --- a/hw/usb-bus.c
>> +++ b/hw/usb-bus.c
>> @@ -299,10 +299,6 @@ USBDevice *usbdevice_create(const char *cmdline)
>>      }
>>
>>      if (!usb->usbdevice_init) {
>> -        if (params) {
>> -            error_report("usbdevice %s accepts no params", driver);
>> -            return NULL;
>> -        }
>>          return usb_create_simple(bus, usb->qdev.name);
>>      }
>>      return usb->usbdevice_init(params);
>> -- 
>> 1.6.5.1.1367.gcd48
>> --
>> SUN OF A BEACH
>>
>>
>>
>
TeLeMan - March 30, 2010, 1:35 a.m.
On Mon, Mar 29, 2010 at 20:16, Kevin Wolf <kwolf@redhat.com> wrote:
> Am 27.03.2010 13:47, schrieb Aurelien Jarno:
>> On Fri, Mar 19, 2010 at 12:59:24PM +0800, TeLeMan wrote:
>>> The "params" is never NULL and the usb hid devices have no params.
>>
>> This looks plainly wrong. With your patch, usb devices which don't
>> accept parameters, will accept and ignore them.
>>
>> What are you trying to fix here?
>
> It looks like it's fixing -usbdevice tablet (and keyboard/mouse) which
> currently fails like this:
>
> qemu-system-x86_64: usbdevice tablet accepts no params
> qemu: could not add USB device 'tablet'
>
> He's correct in that params is never NULL (if it was NULL it's set to an
> empty string some lines earlier, introduced by 702f3e0f), so
> usb_create_simple is never called. Maybe the right fix is to check for
> *params instead of params now?
Yes, you are right. I did a new patch for it.

Patch

diff --git a/hw/usb-bus.c b/hw/usb-bus.c
index ce8a694..f3f1ed6 100644
--- a/hw/usb-bus.c
+++ b/hw/usb-bus.c
@@ -299,10 +299,6 @@  USBDevice *usbdevice_create(const char *cmdline)
     }

     if (!usb->usbdevice_init) {
-        if (params) {
-            error_report("usbdevice %s accepts no params", driver);
-            return NULL;
-        }
         return usb_create_simple(bus, usb->qdev.name);
     }
     return usb->usbdevice_init(params);