From: Sandeep Paulraj <[email protected]>

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 <[email protected]>
---
 arch/arm/mach-davinci/dma.c |    8 ++++----
 1 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/arch/arm/mach-davinci/dma.c b/arch/arm/mach-davinci/dma.c
index f2e57d2..89ce3e1 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;
-- 
1.6.0.4

_______________________________________________
Davinci-linux-open-source mailing list
[email protected]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source

Reply via email to