diff options
Diffstat (limited to 'drivers/bluetooth/bfusb.c')
| -rw-r--r-- | drivers/bluetooth/bfusb.c | 13 |
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) { |
