Re: [PATCH 1/2] usbcore/driver: Fix specific driver selection

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, 2020-09-17 at 13:39 +0300, M. Vefa Bicakci wrote:
> On 17/09/2020 13.23, Bastien Nocera wrote:
> > On Thu, 2020-09-17 at 12:59 +0300, M. Vefa Bicakci wrote:
> > > This commit resolves two minor bugs in the selection/discovery of
> > > more
> > > specific USB device drivers for devices that are currently bound
> > > to
> > > generic USB device drivers.
> > > 
> > > The first bug is related to the way a candidate USB device driver
> > > is
> > > compared against the generic USB device driver. The code in
> > > is_dev_usb_generic_driver() used to unconditionally use
> > > to_usb_device_driver() on each device driver, without verifying
> > > that
> > > the device driver in question is a USB device driver (as opposed
> > > to a
> > > USB interface driver).
> > 
> > You could also return early if is_usb_device() fails in
> > __usb_bus_reprobe_drivers(). Each of the interface and the device
> > itself is a separate "struct device", and "non-interface" devices
> > won't
> > have interface devices assigned to them.
> 
> Will do! If I understand you correctly, you mean something like the
> following:
> 
> static int __usb_bus_reprobe_drivers(struct device *dev, void *data)
> {
>          struct usb_device_driver *new_udriver = data;
>          struct usb_device *udev;
>          int ret;
> 
> 	/* Proposed addition begins */
> 
> 	if (!is_usb_device(dev))
> 		return 0;
> 
> 	/* Proposed addition ends */
> 
>          if (!is_dev_usb_generic_driver(dev))
>                  return 0;

Or:
	if (!is_usb_device(dev) ||
            !is_dev_usb_generic_driver(dev))
 		return 0;





[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux