On Tue, Sep 14, 2010 at 12:43:25PM -0500, Sergei Shtylyov wrote:
Hello.

[email protected] wrote:

From: Ming Lei <[email protected]>

DMA length should not go beyond the availabe space of request buffer,
so fix it.

Signed-off-by: Ming Lei <[email protected]>
Cc: David Brownell <[email protected]>
Cc: Felipe Balbi <[email protected]>
Cc: Anand Gadiyar <[email protected]>
Cc: Mike Frysinger <[email protected]>
Cc: Sergei Shtylyov <[email protected]>

[...]

diff --git a/drivers/usb/musb/musb_gadget.c b/drivers/usb/musb/musb_gadget.c
index fa826f9..cacae96 100644
--- a/drivers/usb/musb/musb_gadget.c
+++ b/drivers/usb/musb/musb_gadget.c
@@ -300,6 +300,11 @@ static void txstate(struct musb *musb, struct musb_request 
*req)
 #ifndef        CONFIG_MUSB_PIO_ONLY
        if (is_dma_capable() && musb_ep->dma) {
                struct dma_controller   *c = musb->dma_controller;
+               size_t request_size;
+
+               /* setup DMA, then program endpoint CSR */
+               request_size = min_t(size_t, request->length - request->actual,
+                                       musb_ep->dma->max_len);

   Er, you're moving this from under #ifdef CONFIG_USB_INVENTRA_DMA to the
common code, right? Do you know that not all DMA drivers initialize max_len? For
example CPPI driver doesn't, so it's left at zero. You're going to break DMA for
CPPI. Please extend your patch, adding cppi_dma.c to it.

yes, please set some value on cppi_dma.c max_len field.

--
balbi
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to