diff options
| -rw-r--r-- | drivers/staging/comedi/drivers/usbduxsigma.c | 27 |
1 files changed, 17 insertions, 10 deletions
diff --git a/drivers/staging/comedi/drivers/usbduxsigma.c b/drivers/staging/comedi/drivers/usbduxsigma.c index d066351a71b2..a728c8fc32a2 100644 --- a/drivers/staging/comedi/drivers/usbduxsigma.c +++ b/drivers/staging/comedi/drivers/usbduxsigma.c | |||
| @@ -681,7 +681,11 @@ static void usbduxsub_ao_IsocIrq(struct urb *urb) | |||
| 681 | static int usbduxsub_start(struct usbduxsub *usbduxsub) | 681 | static int usbduxsub_start(struct usbduxsub *usbduxsub) |
| 682 | { | 682 | { |
| 683 | int errcode = 0; | 683 | int errcode = 0; |
| 684 | uint8_t local_transfer_buffer[16]; | 684 | uint8_t *local_transfer_buffer; |
| 685 | |||
| 686 | local_transfer_buffer = kmalloc(16, GFP_KERNEL); | ||
| 687 | if (!local_transfer_buffer) | ||
| 688 | return -ENOMEM; | ||
| 685 | 689 | ||
| 686 | /* 7f92 to zero */ | 690 | /* 7f92 to zero */ |
| 687 | local_transfer_buffer[0] = 0; | 691 | local_transfer_buffer[0] = 0; |
| @@ -702,19 +706,22 @@ static int usbduxsub_start(struct usbduxsub *usbduxsub) | |||
| 702 | 1, | 706 | 1, |
| 703 | /* Timeout */ | 707 | /* Timeout */ |
| 704 | BULK_TIMEOUT); | 708 | BULK_TIMEOUT); |
| 705 | if (errcode < 0) { | 709 | if (errcode < 0) |
| 706 | dev_err(&usbduxsub->interface->dev, | 710 | dev_err(&usbduxsub->interface->dev, |
| 707 | "comedi_: control msg failed (start)\n"); | 711 | "comedi_: control msg failed (start)\n"); |
| 708 | return errcode; | 712 | |
| 709 | } | 713 | kfree(local_transfer_buffer); |
| 710 | return 0; | 714 | return errcode; |
| 711 | } | 715 | } |
| 712 | 716 | ||
| 713 | static int usbduxsub_stop(struct usbduxsub *usbduxsub) | 717 | static int usbduxsub_stop(struct usbduxsub *usbduxsub) |
| 714 | { | 718 | { |
| 715 | int errcode = 0; | 719 | int errcode = 0; |
| 720 | uint8_t *local_transfer_buffer; | ||
| 716 | 721 | ||
| 717 | uint8_t local_transfer_buffer[16]; | 722 | local_transfer_buffer = kmalloc(16, GFP_KERNEL); |
| 723 | if (!local_transfer_buffer) | ||
| 724 | return -ENOMEM; | ||
| 718 | 725 | ||
| 719 | /* 7f92 to one */ | 726 | /* 7f92 to one */ |
| 720 | local_transfer_buffer[0] = 1; | 727 | local_transfer_buffer[0] = 1; |
| @@ -732,12 +739,12 @@ static int usbduxsub_stop(struct usbduxsub *usbduxsub) | |||
| 732 | 1, | 739 | 1, |
| 733 | /* Timeout */ | 740 | /* Timeout */ |
| 734 | BULK_TIMEOUT); | 741 | BULK_TIMEOUT); |
| 735 | if (errcode < 0) { | 742 | if (errcode < 0) |
| 736 | dev_err(&usbduxsub->interface->dev, | 743 | dev_err(&usbduxsub->interface->dev, |
| 737 | "comedi_: control msg failed (stop)\n"); | 744 | "comedi_: control msg failed (stop)\n"); |
| 738 | return errcode; | 745 | |
| 739 | } | 746 | kfree(local_transfer_buffer); |
| 740 | return 0; | 747 | return errcode; |
| 741 | } | 748 | } |
| 742 | 749 | ||
| 743 | static int usbduxsub_upload(struct usbduxsub *usbduxsub, | 750 | static int usbduxsub_upload(struct usbduxsub *usbduxsub, |
