OSDN Git Service

Merge tag 'v4.4.214' into 10
[sagit-ice-cold/kernel_xiaomi_msm8998.git] / drivers / mfd / dln2.c
index 704e189..95d0f2d 100644 (file)
@@ -729,6 +729,8 @@ static int dln2_probe(struct usb_interface *interface,
                      const struct usb_device_id *usb_id)
 {
        struct usb_host_interface *hostif = interface->cur_altsetting;
+       struct usb_endpoint_descriptor *epin;
+       struct usb_endpoint_descriptor *epout;
        struct device *dev = &interface->dev;
        struct dln2_dev *dln2;
        int ret;
@@ -738,12 +740,19 @@ static int dln2_probe(struct usb_interface *interface,
            hostif->desc.bNumEndpoints < 2)
                return -ENODEV;
 
+       epin = &hostif->endpoint[0].desc;
+       epout = &hostif->endpoint[1].desc;
+       if (!usb_endpoint_is_bulk_out(epout))
+               return -ENODEV;
+       if (!usb_endpoint_is_bulk_in(epin))
+               return -ENODEV;
+
        dln2 = kzalloc(sizeof(*dln2), GFP_KERNEL);
        if (!dln2)
                return -ENOMEM;
 
-       dln2->ep_out = hostif->endpoint[0].desc.bEndpointAddress;
-       dln2->ep_in = hostif->endpoint[1].desc.bEndpointAddress;
+       dln2->ep_out = epout->bEndpointAddress;
+       dln2->ep_in = epin->bEndpointAddress;
        dln2->usb_dev = usb_get_dev(interface_to_usbdev(interface));
        dln2->interface = interface;
        usb_set_intfdata(interface, dln2);