Patch "rtl8150: Use heap buffers for all register access" has been added to the 4.4-stable tree
Subsystems (4)
This is a note to let you know that I've just added the patch titled
rtl8150: Use heap buffers for all register access
to the 4.4-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
rtl8150-use-heap-buffers-for-all-register-access.patch
and it can be found in the queue-4.4 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
7926aff5c57b577ab0f43364ff0c59d968f6a414Mon Sep 17 00:00:00 2001
From: Ben Hutchings <[email protected]>
Date: Sat, 4 Feb 2017 16:56:32 +0000
Subject: rtl8150: Use heap buffers for all register access
From: Ben Hutchings <[email protected]>
commit 7926aff5c57b577ab0f43364ff0c59d968f6a414 upstream.
Allocating USB buffers on the stack is not portable, and no longer works on x86_64 (with VMAP_STACK enabled as per default).
--- drivers/net/usb/rtl8150.c | 34 +++++++++++++++++++++++++++------- 1 file changed, 27 insertions(+), 7 deletions(-)
drivers/net/usb/rtl8150.c +27 -7
@@ -155,16 +155,36 @@ static const char driver_name [] = "rtl8*/ static int get_registers (rtl8150_t * dev,u16 indx,u16 size,void *data) { -return usb_control_msg (dev->udev,usb_rcvctrlpipe (dev->udev,0 ), -RTL8150_REQ_GET_REGS ,RTL8150_REQT_READ , - indx,0 , data, size,500 ); +void *buf; +int ret; + + buf =kmalloc (size,GFP_NOIO ); +if (!buf) +return -ENOMEM ; + + ret =usb_control_msg (dev->udev,usb_rcvctrlpipe (dev->udev,0 ), +RTL8150_REQ_GET_REGS ,RTL8150_REQT_READ , + indx,0 , buf, size,500 ); +if (ret >0 && ret <= size) +memcpy (data, buf, ret); +kfree (buf); +return ret; } -static int set_registers (rtl8150_t * dev,u16 indx,u16 size,void *data) +static int set_registers (rtl8150_t * dev,u16 indx,u16 size,const void *data) { -return usb_control_msg (dev->udev,usb_sndctrlpipe (dev->udev,0 ), -RTL8150_REQ_SET_REGS ,RTL8150_REQT_WRITE , - indx,0 , data, size,500 ); +void *buf; +int ret; + + buf =kmemdup (data, size,GFP_NOIO ); +if (!buf) +return -ENOMEM ; + + ret =usb_control_msg (dev->udev,usb_sndctrlpipe (dev->udev,0 ), +RTL8150_REQ_SET_REGS ,RTL8150_REQT_WRITE , + indx,0 , buf, size,500 ); +kfree (buf); +return ret; }static void async_set_reg_cb (struct urb *urb)
Patches currently in stable-queue which might be from [email protected] are
queue-4.4/dvb-usb-firmware-don-t-do-dma-on-stack.patch queue-4.4/dvb-usb-don-t-use-stack-for-firmware-load.patch queue-4.4/catc-combine-failure-cleanup-code-in-catc_probe.patch queue-4.4/acpi-nfit-libnvdimm-fix-interleave-set-cookie-calculation-64-bit-comparison.patch queue-4.4/virtio-console-avoid-dma-from-stack.patch queue-4.4/rtc-tegra-implement-clock-handling.patch queue-4.4/dvb-usb-v2-avoid-use-after-free.patch queue-4.4/platform-x86-acer-wmi-setup-accelerometer-when-machine-has-appropriate-notify-event.patch queue-4.4/catc-use-heap-buffer-for-memory-size-test.patch queue-4.4/pegasus-use-heap-buffers-for-all-register-access.patch queue-4.4/kvm-fix-page-struct-leak-in-handle_vmon.patch queue-4.4/rtl8150-use-heap-buffers-for-all-register-access.patch