aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/arm/mach-tegra/dma.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/arch/arm/mach-tegra/dma.c b/arch/arm/mach-tegra/dma.c
index 250bc7baa00a..4625e3ae766e 100644
--- a/arch/arm/mach-tegra/dma.c
+++ b/arch/arm/mach-tegra/dma.c
@@ -311,6 +311,7 @@ int tegra_dma_enqueue_req(struct tegra_dma_channel *ch,
311 struct tegra_dma_req *req) 311 struct tegra_dma_req *req)
312{ 312{
313 unsigned long irq_flags; 313 unsigned long irq_flags;
314 struct tegra_dma_req *_req;
314 int start_dma = 0; 315 int start_dma = 0;
315 316
316 if (req->size > NV_DMA_MAX_TRASFER_SIZE || 317 if (req->size > NV_DMA_MAX_TRASFER_SIZE ||
@@ -321,6 +322,13 @@ int tegra_dma_enqueue_req(struct tegra_dma_channel *ch,
321 322
322 spin_lock_irqsave(&ch->lock, irq_flags); 323 spin_lock_irqsave(&ch->lock, irq_flags);
323 324
325 list_for_each_entry(_req, &ch->list, node) {
326 if (req == _req) {
327 spin_unlock_irqrestore(&ch->lock, irq_flags);
328 return -EEXIST;
329 }
330 }
331
324 req->bytes_transferred = 0; 332 req->bytes_transferred = 0;
325 req->status = 0; 333 req->status = 0;
326 req->buffer_status = 0; 334 req->buffer_status = 0;