diff options
Diffstat (limited to 'kernel/drivers/usb/gadget/composite.c')
-rw-r--r-- | kernel/drivers/usb/gadget/composite.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/kernel/drivers/usb/gadget/composite.c b/kernel/drivers/usb/gadget/composite.c index 4e3447bbd..58b4657fc 100644 --- a/kernel/drivers/usb/gadget/composite.c +++ b/kernel/drivers/usb/gadget/composite.c @@ -1758,10 +1758,13 @@ unknown: * take such requests too, if that's ever needed: to work * in config 0, etc. */ - list_for_each_entry(f, &cdev->config->functions, list) - if (f->req_match && f->req_match(f, ctrl)) - goto try_fun_setup; - f = NULL; + if (cdev->config) { + list_for_each_entry(f, &cdev->config->functions, list) + if (f->req_match && f->req_match(f, ctrl)) + goto try_fun_setup; + f = NULL; + } + switch (ctrl->bRequestType & USB_RECIP_MASK) { case USB_RECIP_INTERFACE: if (!cdev->config || intf >= MAX_CONFIG_INTERFACES) |