diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2012-06-20 13:57:34 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2012-06-30 12:46:25 +0200 |
commit | 3f7987af96d2589d2d1f7a01ca11318909063ac1 (patch) | |
tree | 54f7037ed8838aace4319bce41a444da4669432a /drivers | |
parent | f98ebf91d624f0cb0f85105a0e67aee0078aa58b (diff) | |
download | barebox-3f7987af96d2589d2d1f7a01ca11318909063ac1.tar.gz barebox-3f7987af96d2589d2d1f7a01ca11318909063ac1.tar.xz |
USB gadget fsl: request cacheline aligned buffer
The fsl udc driver allocates a buffer for small requests. The
driver then calls dma_inv_range later on it. This buffer happens
to be not cacheline aligned which means that a dma_inv_range can
corrupt other memory around the buffer.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
[mkl: use dma_alloc]
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/usb/gadget/fsl_udc.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/usb/gadget/fsl_udc.c b/drivers/usb/gadget/fsl_udc.c index 5b64ec2011..627e4177d6 100644 --- a/drivers/usb/gadget/fsl_udc.c +++ b/drivers/usb/gadget/fsl_udc.c @@ -1,5 +1,6 @@ #include <common.h> #include <errno.h> +#include <dma.h> #include <init.h> #include <clock.h> #include <usb/ch9.h> @@ -8,7 +9,6 @@ #include <io.h> #include <poller.h> #include <asm/byteorder.h> -#include <asm/mmu.h> /* ### define USB registers here */ @@ -2109,7 +2109,8 @@ static int struct_udc_setup(struct fsl_udc *udc, udc->status_req = container_of(fsl_alloc_request(NULL), struct fsl_req, req); /* allocate a small amount of memory to get valid address */ - udc->status_req->req.buf = xmalloc(8); + udc->status_req->req.buf = dma_alloc(8); + udc->status_req->req.length = 8; udc->resume_state = USB_STATE_NOTATTACHED; udc->usb_state = USB_STATE_POWERED; udc->ep0_dir = 0; |