|
@@ -1381,7 +1381,7 @@ static int usbtmc_probe(struct usb_interface *intf,
|
|
|
|
|
|
dev_dbg(&intf->dev, "%s called\n", __func__);
|
|
|
|
|
|
- data = kmalloc(sizeof(*data), GFP_KERNEL);
|
|
|
+ data = kzalloc(sizeof(*data), GFP_KERNEL);
|
|
|
if (!data)
|
|
|
return -ENOMEM;
|
|
|
|
|
@@ -1444,6 +1444,13 @@ static int usbtmc_probe(struct usb_interface *intf,
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ if (!data->bulk_out || !data->bulk_in) {
|
|
|
+ dev_err(&intf->dev, "bulk endpoints not found\n");
|
|
|
+ retcode = -ENODEV;
|
|
|
+ goto err_put;
|
|
|
+ }
|
|
|
+
|
|
|
/* Find int endpoint */
|
|
|
for (n = 0; n < iface_desc->desc.bNumEndpoints; n++) {
|
|
|
endpoint = &iface_desc->endpoint[n].desc;
|
|
@@ -1512,6 +1519,7 @@ error_register:
|
|
|
sysfs_remove_group(&intf->dev.kobj, &capability_attr_grp);
|
|
|
sysfs_remove_group(&intf->dev.kobj, &data_attr_grp);
|
|
|
usbtmc_free_int(data);
|
|
|
+err_put:
|
|
|
kref_put(&data->kref, usbtmc_delete);
|
|
|
return retcode;
|
|
|
}
|