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:
parent
d1b781002b
commit
d846b7650d
|
@ -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;
|
||||||
|
|
Loading…
Reference in New Issue