1 From 05c0cf88bec588a7cb34de569acd871ceef26760 Mon Sep 17 00:00:00 2001
2 From: Malcolm Priestley <tvboxspy@gmail.com>
3 Date: Sat, 22 Apr 2017 11:14:58 +0100
4 Subject: staging: vt6656: use off stack for in buffer USB transfers.
6 From: Malcolm Priestley <tvboxspy@gmail.com>
8 commit 05c0cf88bec588a7cb34de569acd871ceef26760 upstream.
10 Since 4.9 mandated USB buffers to be heap allocated. This causes
13 Create buffer for USB transfers.
15 Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com>
16 Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
19 drivers/staging/vt6656/usbpipe.c | 17 +++++++++++++++--
20 1 file changed, 15 insertions(+), 2 deletions(-)
22 --- a/drivers/staging/vt6656/usbpipe.c
23 +++ b/drivers/staging/vt6656/usbpipe.c
24 @@ -75,15 +75,28 @@ int vnt_control_in(struct vnt_private *p
25 u16 index, u16 length, u8 *buffer)
30 if (test_bit(DEVICE_FLAGS_DISCONNECTED, &priv->flags))
31 return STATUS_FAILURE;
33 mutex_lock(&priv->usb_lock);
35 + usb_buffer = kmalloc(length, GFP_KERNEL);
37 + mutex_unlock(&priv->usb_lock);
41 status = usb_control_msg(priv->usb,
42 - usb_rcvctrlpipe(priv->usb, 0), request, 0xc0, value,
43 - index, buffer, length, USB_CTL_WAIT);
44 + usb_rcvctrlpipe(priv->usb, 0),
45 + request, 0xc0, value,
46 + index, usb_buffer, length, USB_CTL_WAIT);
48 + if (status == length)
49 + memcpy(buffer, usb_buffer, length);
53 mutex_unlock(&priv->usb_lock);