On Thu, Apr 11, 2024 at 02:42:59PM +0200, Oliver Neukum wrote: > We have to ignore the higher bits in bEndpointAddress Why? > Signed-off-by: Oliver Neukum <oneukum@xxxxxxxx> > --- > drivers/usb/core/config.c | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > > diff --git a/drivers/usb/core/config.c b/drivers/usb/core/config.c > index 7f8d33f92ddb..c7056b123d46 100644 > --- a/drivers/usb/core/config.c > +++ b/drivers/usb/core/config.c > @@ -279,11 +279,11 @@ static int usb_parse_endpoint(struct device *ddev, int cfgno, > goto skip_to_next_endpoint_or_interface_descriptor; > } > > - i = d->bEndpointAddress & ~USB_ENDPOINT_DIR_MASK; > - if (i >= 16 || i == 0) { > + i = d->bEndpointAddress & 0x0f; > + if (i == 0) { > dev_notice(ddev, "config %d interface %d altsetting %d has an " > - "invalid endpoint with address 0x%X, skipping\n", > - cfgno, inum, asnum, d->bEndpointAddress); > + "invalid descriptor for the common control endpoint, skipping\n", > + cfgno, inum, asnum); So now we just ignore invalid descriptors here and let them pass? confused, greg k-h