On Sat, Jul 25, 2020 at 11:14:07AM +0200, Bastien Nocera wrote: > We only ever used a the ID table matching before, but we should probably > also support an open-coded match function. > > Fixes: 88b7381a939de ("USB: Select better matching USB drivers when available") > Signed-off-by: Bastien Nocera <hadess@xxxxxxxxxx> > --- > drivers/usb/core/generic.c | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > diff --git a/drivers/usb/core/generic.c b/drivers/usb/core/generic.c > index b6f2d4b44754..2b2f1ab6e36a 100644 > --- a/drivers/usb/core/generic.c > +++ b/drivers/usb/core/generic.c > @@ -205,8 +205,9 @@ static int __check_usb_generic(struct device_driver *drv, void *data) > udrv = to_usb_device_driver(drv); > if (udrv == &usb_generic_driver) > return 0; > - > - return usb_device_match_id(udev, udrv->id_table) != NULL; > + if (usb_device_match_id(udev, udrv->id_table) != NULL) > + return 1; > + return (udrv->match && udrv->match(udev)); > } > > static bool usb_generic_driver_match(struct usb_device *udev) Acked-by: Alan Stern <stern@xxxxxxxxxxxxxxxxxxx> You know, at some point it would be nice to change the name of this function. __check_usb_generic doesn't explain very well what the function actually does: It checks to see whether the driver is non-generic and matches the device. Something like check_for_non_generic_match would be a lot better. Alan Stern