On Mon, Mar 13, 2023 at 4:44 PM Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> wrote: > > WebUSB code uses wLength directly without proper endianness conversion. > Update it to use already prepared temporary variable w_length instead. Excellent catch! Thank you very much for finding this. This could have been a very hard to find issue in a big endian system. I tested this on my local setup and it (unsurprisingly) works like a charm. > Fixes: 93c473948c58 ("usb: gadget: add WebUSB landing page support") > Signed-off-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> Tested-By: Jó Ágila Bitsch <jgilab@xxxxxxxxx> > --- > drivers/usb/gadget/composite.c | 7 +++---- > 1 file changed, 3 insertions(+), 4 deletions(-) > > diff --git a/drivers/usb/gadget/composite.c b/drivers/usb/gadget/composite.c > index fa7dd6cf014d..5377d873c08e 100644 > --- a/drivers/usb/gadget/composite.c > +++ b/drivers/usb/gadget/composite.c > @@ -2079,10 +2079,9 @@ composite_setup(struct usb_gadget *gadget, const struct usb_ctrlrequest *ctrl) > sizeof(url_descriptor->URL) > - WEBUSB_URL_DESCRIPTOR_HEADER_LENGTH + landing_page_offset); > > - if (ctrl->wLength < WEBUSB_URL_DESCRIPTOR_HEADER_LENGTH > - + landing_page_length) > - landing_page_length = ctrl->wLength > - - WEBUSB_URL_DESCRIPTOR_HEADER_LENGTH + landing_page_offset; > + if (w_length < WEBUSB_URL_DESCRIPTOR_HEADER_LENGTH + landing_page_length) > + landing_page_length = w_length > + - WEBUSB_URL_DESCRIPTOR_HEADER_LENGTH + landing_page_offset; > > memcpy(url_descriptor->URL, > cdev->landing_page + landing_page_offset, > -- > 2.39.2 >