[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH for-4.0] hw/usb/bus.c: Handle "no speed matched"
From: |
Philippe Mathieu-Daudé |
Subject: |
Re: [Qemu-devel] [PATCH for-4.0] hw/usb/bus.c: Handle "no speed matched" case in usb_mask_to_str() |
Date: |
Thu, 28 Mar 2019 19:55:57 +0100 |
Le jeu. 28 mars 2019 14:36, Peter Maydell <address@hidden> a
écrit :
> In usb_mask_to_str() we convert a mask of USB speeds into
> a human-readable string (like "full+high") for use in
> tracing and error messages. However the conversion code
> doesn't do anything to the string buffer if the passed in
> speedmask doesn't match any of the recognized speeds,
> which means that the tracing and error messages will
> end up with random garbage in them. This can happen if
> we're doing USB device passthrough.
>
> Handle the "unrecognized speed" case by using the
> string "unknown".
>
> Fixes: https://bugs.launchpad.net/qemu/+bug/1603785
> Signed-off-by: Peter Maydell <address@hidden>
> ---
> Tested by temporarily fiddling with the callsites to
> pass in a 0 speedmask, since I don't have any USB passthrough
> stuff handy.
> ---
> hw/usb/bus.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/hw/usb/bus.c b/hw/usb/bus.c
> index 6fffab7bfa4..9a74dc95601 100644
> --- a/hw/usb/bus.c
> +++ b/hw/usb/bus.c
> @@ -500,6 +500,10 @@ static void usb_mask_to_str(char *dest, size_t size,
> speeds[i].name);
> }
> }
> +
> + if (pos == 0) {
> + snprintf(dest, size, "unknown");
> + }
> }
>
> void usb_check_attach(USBDevice *dev, Error **errp)
> --
> 2.20.1
>
Reviewed-by: Philippe Mathieu-Daudé <address@hidden>
>