From: Christian Gromm Date: Mon, 28 Sep 2015 15:18:43 +0000 (+0200) Subject: staging: most: prevent DMA on stack X-Git-Tag: firefly_0821_release~176^2~802^2~1758 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=26370228875b823b9a90562619c509461f9b91ae;p=firefly-linux-kernel-4.4.55.git staging: most: prevent DMA on stack This patch is needed to avoid having DMA on the stack. Signed-off-by: Andrey Shvetsov Signed-off-by: Christian Gromm Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/staging/most/hdm-usb/hdm_usb.c b/drivers/staging/most/hdm-usb/hdm_usb.c index 01ea91b0c6c5..7722212c8654 100644 --- a/drivers/staging/most/hdm-usb/hdm_usb.c +++ b/drivers/staging/most/hdm-usb/hdm_usb.c @@ -146,17 +146,23 @@ static void wq_netinfo(struct work_struct *wq_obj); * * This is reads data from INIC's direct register communication interface */ -static inline int drci_rd_reg(struct usb_device *dev, u16 reg, void *buf) +static inline int drci_rd_reg(struct usb_device *dev, u16 reg, u16 *buf) { - return usb_control_msg(dev, - usb_rcvctrlpipe(dev, 0), - DRCI_READ_REQ, - USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_DEVICE, - 0x0000, - reg, - buf, - 2, - 5 * HZ); + int retval; + u16 *dma_buf = kzalloc(sizeof(u16), GFP_KERNEL); + u8 req_type = USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_DEVICE; + + if (!dma_buf) + return -ENOMEM; + + retval = usb_control_msg(dev, usb_rcvctrlpipe(dev, 0), + DRCI_READ_REQ, req_type, + 0x0000, + reg, dma_buf, sizeof(u16), 5 * HZ); + *buf = *dma_buf; + kfree(dma_buf); + + return retval; } /**