Messages in this thread | | | Date | Wed, 15 Sep 2010 10:09:37 +0300 | From | Felipe Balbi <> | Subject | Re: [RESEND/PATCH 6/6] USB: musb-gadget: fix dma length in txstate |
| |
On Tue, Sep 14, 2010 at 12:43:25PM -0500, Sergei Shtylyov wrote: >Hello. > >tom.leiming@gmail.com wrote: > >> From: Ming Lei <tom.leiming@gmail.com> > >> DMA length should not go beyond the availabe space of request buffer, >> so fix it. > >> Signed-off-by: Ming Lei <tom.leiming@gmail.com> >> Cc: David Brownell <dbrownell@users.sourceforge.net> >> Cc: Felipe Balbi <me@felipebalbi.com> >> Cc: Anand Gadiyar <gadiyar@ti.com> >> Cc: Mike Frysinger <vapier@gentoo.org> >> Cc: Sergei Shtylyov <sshtylyov@ru.mvista.com> > >[...] > >> 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
| |