X-Git-Url: https://review.openocd.org/gitweb?a=blobdiff_plain;ds=sidebyside;f=src%2Fjtag%2Fdrivers%2Fcmsis_dap_usb_bulk.c;h=6599c414ce9e1bc9cd26712c03cdf8f0427f4df9;hb=3d3d35c9b87243a14b37478f1120c4c8d0a6d0bb;hp=55b9a558a1ccfb921d7ae90aa0a92ca4b0d2813c;hpb=600d0165cc041a36d3707168aeb113d7a2e6747f;p=openocd.git diff --git a/src/jtag/drivers/cmsis_dap_usb_bulk.c b/src/jtag/drivers/cmsis_dap_usb_bulk.c index 55b9a558a1..6599c414ce 100644 --- a/src/jtag/drivers/cmsis_dap_usb_bulk.c +++ b/src/jtag/drivers/cmsis_dap_usb_bulk.c @@ -352,25 +352,17 @@ static int cmsis_dap_usb_open(struct cmsis_dap *dap, uint16_t vids[], uint16_t p return ERROR_FAIL; } - dap->packet_size = packet_size; - dap->packet_buffer_size = packet_size; dap->bdata->usb_ctx = ctx; dap->bdata->dev_handle = dev_handle; dap->bdata->ep_out = ep_out; dap->bdata->ep_in = ep_in; dap->bdata->interface = interface_num; - dap->packet_buffer = malloc(dap->packet_buffer_size); - if (!dap->packet_buffer) { - LOG_ERROR("unable to allocate memory"); + err = cmsis_dap_usb_alloc(dap, packet_size); + if (err != ERROR_OK) cmsis_dap_usb_close(dap); - return ERROR_FAIL; - } - - dap->command = dap->packet_buffer; - dap->response = dap->packet_buffer; - return ERROR_OK; + return err; } libusb_close(dev_handle); @@ -445,6 +437,8 @@ static int cmsis_dap_usb_alloc(struct cmsis_dap *dap, unsigned int pkt_sz) dap->packet_buffer = buf; dap->packet_size = pkt_sz; dap->packet_buffer_size = pkt_sz; + /* Prevent sending zero size USB packets */ + dap->packet_usable_size = pkt_sz - 1; dap->command = dap->packet_buffer; dap->response = dap->packet_buffer;