aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/bluetooth/bfusb.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/drivers/bluetooth/bfusb.c b/drivers/bluetooth/bfusb.c
index 005919ab043c..61b591470a90 100644
--- a/drivers/bluetooth/bfusb.c
+++ b/drivers/bluetooth/bfusb.c
@@ -568,22 +568,23 @@ static int bfusb_load_firmware(struct bfusb_data *data,
568 568
569 BT_INFO("BlueFRITZ! USB loading firmware"); 569 BT_INFO("BlueFRITZ! USB loading firmware");
570 570
571 buf = kmalloc(BFUSB_MAX_BLOCK_SIZE + 3, GFP_KERNEL);
572 if (!buf) {
573 BT_ERR("Can't allocate memory chunk for firmware");
574 return -ENOMEM;
575 }
576
571 pipe = usb_sndctrlpipe(data->udev, 0); 577 pipe = usb_sndctrlpipe(data->udev, 0);
572 578
573 if (usb_control_msg(data->udev, pipe, USB_REQ_SET_CONFIGURATION, 579 if (usb_control_msg(data->udev, pipe, USB_REQ_SET_CONFIGURATION,
574 0, 1, 0, NULL, 0, USB_CTRL_SET_TIMEOUT) < 0) { 580 0, 1, 0, NULL, 0, USB_CTRL_SET_TIMEOUT) < 0) {
575 BT_ERR("Can't change to loading configuration"); 581 BT_ERR("Can't change to loading configuration");
582 kfree(buf);
576 return -EBUSY; 583 return -EBUSY;
577 } 584 }
578 585
579 data->udev->toggle[0] = data->udev->toggle[1] = 0; 586 data->udev->toggle[0] = data->udev->toggle[1] = 0;
580 587
581 buf = kmalloc(BFUSB_MAX_BLOCK_SIZE + 3, GFP_ATOMIC);
582 if (!buf) {
583 BT_ERR("Can't allocate memory chunk for firmware");
584 return -ENOMEM;
585 }
586
587 pipe = usb_sndbulkpipe(data->udev, data->bulk_out_ep); 588 pipe = usb_sndbulkpipe(data->udev, data->bulk_out_ep);
588 589
589 while (count) { 590 while (count) {