diff options
author | Sarah Sharp <sarah.a.sharp@linux.intel.com> | 2011-08-09 16:31:54 -0700 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2011-11-11 09:36:37 -0800 |
commit | f6fad686650aaf264b2acee848825e2183a944e3 (patch) | |
tree | fa75420aff3293295cbffe65cba516e0b4c96c8a /drivers/usb | |
parent | 91c193f925d75b03f5a7f31ae1358a87af33c78a (diff) |
USB: Avoid NULL pointer deref in usb_hcd_alloc_bandwidth.
commit 8a9af4fdf6d5eeb3200a088354d266a87e8260b0 upstream.
usb_ifnum_to_if() can return NULL if the USB device does not have a
configuration installed (usb_device->actconfig == NULL), or if we can't
find the interface number in the installed configuration. Return an
error instead of crashing.
Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/usb')
-rw-r--r-- | drivers/usb/core/hcd.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c index ace9f8442e5..39ea00bfb9c 100644 --- a/drivers/usb/core/hcd.c +++ b/drivers/usb/core/hcd.c @@ -1764,6 +1764,8 @@ int usb_hcd_alloc_bandwidth(struct usb_device *udev, struct usb_interface *iface = usb_ifnum_to_if(udev, cur_alt->desc.bInterfaceNumber); + if (!iface) + return -EINVAL; if (iface->resetting_device) { /* * The USB core just reset the device, so the xHCI host |