diff options
author | Stefan Koch <stefan.koch10@gmail.com> | 2015-08-25 22:10:07 +0300 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2015-09-22 22:08:40 +0300 |
commit | 8d1f8573a33224dce9b6e3a5085a6857b7572c13 (patch) | |
tree | dac9b095c98ac9a3f3f0facfa230e6bf51a81b0b /drivers | |
parent | 6b2bd3c8c69c4817a9a2feb4597021d486c105f4 (diff) | |
download | linux-8d1f8573a33224dce9b6e3a5085a6857b7572c13.tar.xz |
usb: interface authorization: Control interface probing and claiming
Driver probings and interface claims get rejected
if an interface is not authorized.
Signed-off-by: Stefan Koch <stefan.koch10@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/usb/core/driver.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/usb/core/driver.c b/drivers/usb/core/driver.c index 6b5063e7943f..047f9f94d72d 100644 --- a/drivers/usb/core/driver.c +++ b/drivers/usb/core/driver.c @@ -296,6 +296,10 @@ static int usb_probe_interface(struct device *dev) if (udev->authorized == 0) { dev_err(&intf->dev, "Device is not authorized for usage\n"); return error; + } else if (intf->authorized == 0) { + dev_err(&intf->dev, "Interface %d is not authorized for usage\n", + intf->altsetting->desc.bInterfaceNumber); + return error; } id = usb_match_dynamic_id(intf, driver); @@ -508,6 +512,10 @@ int usb_driver_claim_interface(struct usb_driver *driver, if (dev->driver) return -EBUSY; + /* reject claim if interface is not authorized */ + if (!iface->authorized) + return -ENODEV; + udev = interface_to_usbdev(iface); dev->driver = &driver->drvwrap.driver; |