@@ -549,6 +549,8 @@ static void atc_handle_error(struct at_dma_chan *atchan)
atc_dostart(atchan, desc);
}
+ spin_unlock_irqrestore(&atchan->lock, flags);
+
/*
* KERN_CRITICAL may seem harsh, but since this only happens
* when someone submits a bad physical address in a
@@ -564,8 +566,6 @@ static void atc_handle_error(struct at_dma_chan *atchan)
list_for_each_entry(child, &bad_desc->tx_list, desc_node)
atc_dump_lli(atchan, &child->lli);
- spin_unlock_irqrestore(&atchan->lock, flags);
-
/* Pretend the descriptor completed successfully */
atc_chain_complete(atchan, bad_desc);
}
The descriptor was already removed from the transfer list, there's no reason to keep the channel lock while printing desc info, thus do the prints without holding the lock. Signed-off-by: Tudor Ambarus <tudor.ambarus@microchip.com> --- drivers/dma/at_hdmac.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)