summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/staging/greybus/es2.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/drivers/staging/greybus/es2.c b/drivers/staging/greybus/es2.c
index 4b1f34fe1a60..909ca6acae1c 100644
--- a/drivers/staging/greybus/es2.c
+++ b/drivers/staging/greybus/es2.c
@@ -108,7 +108,7 @@ struct es1_ap_dev {
bool cport_out_urb_cancelled[NUM_CPORT_OUT_URB];
spinlock_t cport_out_urb_lock;
- int cport_to_ep[CPORT_COUNT];
+ int *cport_to_ep;
};
struct cport_to_ep {
@@ -443,6 +443,7 @@ static void ap_disconnect(struct usb_interface *interface)
usb_set_intfdata(interface, NULL);
udev = es1->usb_dev;
greybus_remove_hd(es1->hd);
+ kfree(es1->cport_to_ep);
usb_put_dev(udev);
}
@@ -678,6 +679,13 @@ static int ap_probe(struct usb_interface *interface,
endpoint = &udev->ep0.desc;
es1->control_endpoint = endpoint->bEndpointAddress;
+ es1->cport_to_ep = kcalloc(hd->num_cports, sizeof(*es1->cport_to_ep),
+ GFP_KERNEL);
+ if (!es1->cport_to_ep) {
+ retval = -ENOMEM;
+ goto error;
+ }
+
/* find all 3 of our endpoints */
iface_desc = interface->cur_altsetting;
for (i = 0; i < iface_desc->desc.bNumEndpoints; ++i) {