On Mon, Jul 23, 2018 at 04:02:20PM +0200, Romain Izard wrote: > Some modems now use the Android Debug Bridge to provide a debugging > interface, and some phones can also export serial ports managed by the > "option" driver. > > The ADB daemon running in userspace tries to use USB interfaces with > bDeviceClass=0xFF, bDeviceSubClass=0x42, bDeviceProtocol=1 > > Prevent the option driver from binding to those interfaces, as they > will not be serial ports. > > This can fix issues like: > https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=781256 > > Signed-off-by: Romain Izard <romain.izard.pro@xxxxxxxxx> > Cc: stable <stable@xxxxxxxxxxxxxxx> > --- > drivers/usb/serial/option.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c > index 664e61f16b6a..f98943a57ff0 100644 > --- a/drivers/usb/serial/option.c > +++ b/drivers/usb/serial/option.c > @@ -1987,6 +1987,12 @@ static int option_probe(struct usb_serial *serial, > if (iface_desc->bInterfaceClass == USB_CLASS_MASS_STORAGE) > return -ENODEV; > > + /* Do not bind Android Debug Bridge interfaces */ > + if (iface_desc->bInterfaceClass == USB_CLASS_VENDOR_SPEC && > + iface_desc->bInterfaceSubClass == 0x42 && > + iface_desc->bInterfaceProtocol == 1) > + return -ENODEV; Shouldn't you also check the vendor/product id as well? Otherwise this has the potential to match random devices that are not really adb devices. thanks, greg k-h