DMAENGINE: at_hdmac: locking fixlet
authorYong Wang <yong.y.wang@linux.intel.com>
Thu, 5 Aug 2010 02:40:08 +0000 (10:40 +0800)
committerDan Williams <dan.j.williams@intel.com>
Thu, 5 Aug 2010 05:09:17 +0000 (22:09 -0700)
atc_chain_complete shall be called with atchan->lock held
and bh disabled.

Signed-off-by: Yong Wang <yong.y.wang@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
drivers/dma/at_hdmac.c

index bd5250e..646f6d6 100644 (file)
@@ -790,12 +790,12 @@ static int atc_control(struct dma_chan *chan, enum dma_ctrl_cmd cmd,
        list_splice_init(&atchan->queue, &list);
        list_splice_init(&atchan->active_list, &list);
 
-       spin_unlock_bh(&atchan->lock);
-
        /* Flush all pending and queued descriptors */
        list_for_each_entry_safe(desc, _desc, &list, desc_node)
                atc_chain_complete(atchan, desc);
 
+       spin_unlock_bh(&atchan->lock);
+
        return 0;
 }