USB: usbtmc: fix DMA on stack

send_request_dev_dep_msg_in() use a buffer allocated on the stack.
Fix by kmalloc()ing the buffer.

Signed-off-by: Oliver Neukum <oneukum@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Oliver Neukum 2014-05-19 13:54:57 +02:00 committed by Greg Kroah-Hartman
parent d1b781002b
commit d846b7650d
1 changed files with 5 additions and 1 deletions

View File

@ -383,9 +383,12 @@ exit:
static int send_request_dev_dep_msg_in(struct usbtmc_device_data *data, size_t transfer_size) static int send_request_dev_dep_msg_in(struct usbtmc_device_data *data, size_t transfer_size)
{ {
int retval; int retval;
u8 buffer[USBTMC_HEADER_SIZE]; u8 *buffer;
int actual; int actual;
buffer = kmalloc(USBTMC_HEADER_SIZE, GFP_KERNEL);
if (!buffer)
return -ENOMEM;
/* Setup IO buffer for REQUEST_DEV_DEP_MSG_IN message /* Setup IO buffer for REQUEST_DEV_DEP_MSG_IN message
* Refer to class specs for details * Refer to class specs for details
*/ */
@ -417,6 +420,7 @@ static int send_request_dev_dep_msg_in(struct usbtmc_device_data *data, size_t t
if (!data->bTag) if (!data->bTag)
data->bTag++; data->bTag++;
kfree(buffer);
if (retval < 0) { if (retval < 0) {
dev_err(&data->intf->dev, "usb_bulk_msg in send_request_dev_dep_msg_in() returned %d\n", retval); dev_err(&data->intf->dev, "usb_bulk_msg in send_request_dev_dep_msg_in() returned %d\n", retval);
return retval; return retval;