From: Sandeep Paulraj Date: Wed, 16 Sep 2009 22:09:59 +0000 (-0400) Subject: DaVinci: EDMA: Fix bug in edma_free_cont_slots API X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=51c99e0498c637bf43fb3be786d121d8dceef337;p=linux-beck.git DaVinci: EDMA: Fix bug in edma_free_cont_slots API In the edma_free_cont_slots API, the variable slot was being modified and then used in the for loop. This results in incorrect behaviour when the API is used. Signed-off-by: Sandeep Paulraj Signed-off-by: Kevin Hilman --- diff --git a/arch/arm/mach-davinci/dma.c b/arch/arm/mach-davinci/dma.c index f2e57d272958..89ce3e1a7ab1 100644 --- a/arch/arm/mach-davinci/dma.c +++ b/arch/arm/mach-davinci/dma.c @@ -813,7 +813,7 @@ EXPORT_SYMBOL(edma_alloc_cont_slots); */ int edma_free_cont_slots(unsigned slot, int count) { - unsigned ctlr; + unsigned ctlr, slot_to_free; int i; ctlr = EDMA_CTLR(slot); @@ -826,11 +826,11 @@ int edma_free_cont_slots(unsigned slot, int count) for (i = slot; i < slot + count; ++i) { ctlr = EDMA_CTLR(i); - slot = EDMA_CHAN_SLOT(i); + slot_to_free = EDMA_CHAN_SLOT(i); - memcpy_toio(edmacc_regs_base[ctlr] + PARM_OFFSET(slot), + memcpy_toio(edmacc_regs_base[ctlr] + PARM_OFFSET(slot_to_free), &dummy_paramset, PARM_SIZE); - clear_bit(slot, edma_info[ctlr]->edma_inuse); + clear_bit(slot_to_free, edma_info[ctlr]->edma_inuse); } return 0;