The USB protocol allows devices to have multiple "configurations" that the OS can switch between. A an "unconfigured" state is also possible, especially when the device is first connected. If '__wacom_is_usb_parent' comes across an unconfigured USB device, the 'config' variable will be NULL. We need to add a check for this state before attempting a dereference.
Fixes: 38c795d ("backport: HID: wacom: Improve generic name generation") Fixes: bb55947 ("HID: wacom: Improve generic name generation") Signed-off-by: Jason Gerecke <jason.gere...@wacom.com> --- Changes from v1: * Apply fix to 3.17 tree * Add proper "Fixes" annotations 3.17/wacom_sys.c | 2 +- 4.5/wacom_sys.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/3.17/wacom_sys.c b/3.17/wacom_sys.c index 9fccf59..2996d0d 100644 --- a/3.17/wacom_sys.c +++ b/3.17/wacom_sys.c @@ -29,7 +29,7 @@ static int __wacom_is_usb_parent(struct usb_device *usbdev, void *ptr) struct usb_host_config *config = usbdev->actconfig; int i; - for (i = 0; i < config->desc.bNumInterfaces; i++) { + for (i = 0; config && i < config->desc.bNumInterfaces; i++) { if (&config->interface[i]->dev == parent) return 1; } diff --git a/4.5/wacom_sys.c b/4.5/wacom_sys.c index cfe5fa8..3a65174 100644 --- a/4.5/wacom_sys.c +++ b/4.5/wacom_sys.c @@ -30,7 +30,7 @@ static int __wacom_is_usb_parent(struct usb_device *usbdev, void *ptr) struct usb_host_config *config = usbdev->actconfig; int i; - for (i = 0; i < config->desc.bNumInterfaces; i++) { + for (i = 0; config && i < config->desc.bNumInterfaces; i++) { if (&config->interface[i]->dev == parent) return 1; } -- 2.13.4 ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ Linuxwacom-devel mailing list Linuxwacom-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel