It turns out this patch could cause lock dependency issue. The other patch "Acquire dmac's spinlock in pl330_tx_status" that I've uploaded is the correct fix to replace this one. Thanks, Hsin-yu On Fri, Sep 9, 2016 at 7:48 PM, Vinod Koul <vinod.koul@xxxxxxxxx> wrote: > On Fri, Aug 19, 2016 at 09:03:48PM +0800, Hsin-Yu Chao wrote: >> The content of pl330_thread could be modified in pl330_update >> without protection by the lock from the dma channel who currently >> holding this thread. This could cause bug to the calculation of >> in pl330_tx_status, if the running request has just been done and >> moving to next request while calculating the residual number, an >> invalid number from BUSY descriptor could be added up. >> --- >> drivers/dma/pl330.c | 19 +++++++++++++++++++ >> 1 file changed, 19 insertions(+) >> >> diff --git a/drivers/dma/pl330.c b/drivers/dma/pl330.c >> index 31e9c49..2449cb7 100644 >> --- a/drivers/dma/pl330.c >> +++ b/drivers/dma/pl330.c >> @@ -1564,6 +1564,19 @@ static void pl330_dotask(unsigned long data) >> return; >> } >> >> +static struct dma_pl330_chan *get_dma_channel(struct pl330_dmac *pl330, >> + struct pl330_thread *thrd) >> +{ >> + struct dma_pl330_chan *pch; >> + int i; > > empty line here please > > -- > ~Vinod -- To unsubscribe from this list: send the line "unsubscribe dmaengine" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html