hso: Fix stack corruption on some architectures
Subsystems (4)
PATCH 2/2 hso: Fix stack corruption on some architectures
As Sergei Shtylyov explained in the #mipslinux IRC channel:
[Mon 2013-08-19 12:28:21 PM PDT] <headless> guys, are you sure it's not "DMA off stack" case? [Mon 2013-08-19 12:28:35 PM PDT] <headless> it's a known stack corruptor on non-coherent arches [Mon 2013-08-19 12:31:48 PM PDT] <DonkeyHotei> headless: for usb/ehci? [Mon 2013-08-19 12:34:11 PM PDT] <DonkeyHotei> headless: explain [Mon 2013-08-19 12:35:38 PM PDT] <headless> usb_control_msg() (or other such func) should not use buffer on stack. DMA from/to stack is prohibited [Mon 2013-08-19 12:35:58 PM PDT] <headless> and EHCI uses DMA on control xfers (as well as all the others)
Signed-off-by Daniel Gimpelevich <[email protected]>
--- drivers/net/usb/hso.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)
drivers/net/usb/hso.c +5 -1
@@ -2816,13 +2816,16 @@ exit:static int hso_get_config_data (struct usb_interface *interface) {struct usb_device *usbdev =interface_to_usbdev (interface); -u8 config_data[17 ]; +u8 *config_data =kmalloc (17 ,GFP_KERNEL );u32 if_num = interface->altsetting->desc.bInterfaceNumber;s32 result; +if (!config_data) +return -ENOMEM ;if (usb_control_msg (usbdev,usb_rcvctrlpipe (usbdev,0 ),0x86 ,0xC0 ,0 ,0 , config_data,17 ,USB_CTRL_SET_TIMEOUT ) !=0x11 ) { +kfree (config_data);return -EIO ; }
@@ -2873,6 +2876,7 @@ static int hso_get_config_data(struct usb_interface *interface)if (config_data[16 ] &0x1 ) result |=HSO_INFO_CRC_BUG ; +kfree (config_data);return result; }
Signature · 1 line
1.7.9.5
Quoted 9 lines · Daniel Gimpelevich
As Sergei Shtylyov explained in the #mipslinux IRC channel:
[Mon 2013-08-19 12:28:21 PM PDT] <headless> guys, are you sure it's not "DMA off stack" case? [Mon 2013-08-19 12:28:35 PM PDT] <headless> it's a known stack corruptor on non-coherent arches [Mon 2013-08-19 12:31:48 PM PDT] <DonkeyHotei> headless: for usb/ehci? [Mon 2013-08-19 12:34:11 PM PDT] <DonkeyHotei> headless: explain [Mon 2013-08-19 12:35:38 PM PDT] <headless> usb_control_msg() (or other such func) should not use buffer on stack. DMA from/to stack is prohibited [Mon 2013-08-19 12:35:58 PM PDT] <headless> and EHCI uses DMA on control xfers (as well as all the others)Signed-off-by Daniel Gimpelevich <[email protected]>
David Miller
maintainerFrom: Greg KH <[email protected]>
Date: Wed, 21 Aug 2013 09:24:47 -0700
Quoted 9 lines · Daniel Gimpelevich
Quoted 8 lines
As Sergei Shtylyov explained in the #mipslinux IRC channel:
[Mon 2013-08-19 12:28:21 PM PDT] <headless> guys, are you sure it's not "DMA off stack" case? [Mon 2013-08-19 12:28:35 PM PDT] <headless> it's a known stack corruptor on non-coherent arches [Mon 2013-08-19 12:31:48 PM PDT] <DonkeyHotei> headless: for usb/ehci? [Mon 2013-08-19 12:34:11 PM PDT] <DonkeyHotei> headless: explain [Mon 2013-08-19 12:35:38 PM PDT] <headless> usb_control_msg() (or other such func) should not use buffer on stack. DMA from/to stack is prohibited [Mon 2013-08-19 12:35:58 PM PDT] <headless> and EHCI uses DMA on control xfers (as well as all the others)
Quoted 3 lines
Quoted 1 line
Signed-off-by Daniel Gimpelevich <daniel-R/[email protected]>
Applied.
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html