From: Thomas Gleixner Date: Mon, 28 Apr 2014 19:19:51 +0000 (-0500) Subject: dmaengine: edma: Check the current decriptor first in tx_status() X-Git-Tag: v4.14-rc1~7416^2~48 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=de135939716dcdc8a6ea62e9228feb2eec0fca11;p=platform%2Fkernel%2Flinux-rpi.git dmaengine: edma: Check the current decriptor first in tx_status() It's likely that the caller investigates the status of a currently active descriptor. Make that simple check first and only rumage in the vchan list if that fails. Signed-off-by: Thomas Gleixner Signed-off-by: Joel Fernandes Signed-off-by: Vinod Koul --- diff --git a/drivers/dma/edma.c b/drivers/dma/edma.c index 30cbbde..cfc267e 100644 --- a/drivers/dma/edma.c +++ b/drivers/dma/edma.c @@ -852,11 +852,10 @@ static enum dma_status edma_tx_status(struct dma_chan *chan, return ret; spin_lock_irqsave(&echan->vchan.lock, flags); - vdesc = vchan_find_desc(&echan->vchan, cookie); - if (vdesc) - txstate->residue = to_edma_desc(&vdesc->tx)->residue; - else if (echan->edesc && echan->edesc->vdesc.tx.cookie == cookie) + if (echan->edesc && echan->edesc->vdesc.tx.cookie == cookie) txstate->residue = echan->edesc->residue; + else if ((vdesc = vchan_find_desc(&echan->vchan, cookie))) + txstate->residue = to_edma_desc(&vdesc->tx)->residue; spin_unlock_irqrestore(&echan->vchan.lock, flags); return ret;