dmaengine: at_hdmac: Fix impossible condition
commit 28cbe5a0a46a6637adbda52337d7b2777fc04027 upstream.
The iterator can not be greater than ATC_MAX_DSCR_TRIALS, as the for loop
will stop when i == ATC_MAX_DSCR_TRIALS. While here, use the common "i"
name for the iterator.
Fixes: 93dce3a643
("dmaengine: at_hdmac: fix residue computation")
Signed-off-by: Tudor Ambarus <tudor.ambarus@microchip.com>
Cc: stable@vger.kernel.org
Acked-by: Nicolas Ferre <nicolas.ferre@microchip.com>
Link: https://lore.kernel.org/r/20221025090306.297886-1-tudor.ambarus@microchip.com
Link: https://lore.kernel.org/r/20221025090306.297886-15-tudor.ambarus@microchip.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:

committed by
Greg Kroah-Hartman

parent
f53a233eaa
commit
85f97c97ef
@@ -299,7 +299,8 @@ static int atc_get_bytes_left(struct dma_chan *chan, dma_cookie_t cookie)
|
|||||||
struct at_desc *desc_first = atc_first_active(atchan);
|
struct at_desc *desc_first = atc_first_active(atchan);
|
||||||
struct at_desc *desc;
|
struct at_desc *desc;
|
||||||
int ret;
|
int ret;
|
||||||
u32 ctrla, dscr, trials;
|
u32 ctrla, dscr;
|
||||||
|
unsigned int i;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If the cookie doesn't match to the currently running transfer then
|
* If the cookie doesn't match to the currently running transfer then
|
||||||
@@ -369,7 +370,7 @@ static int atc_get_bytes_left(struct dma_chan *chan, dma_cookie_t cookie)
|
|||||||
dscr = channel_readl(atchan, DSCR);
|
dscr = channel_readl(atchan, DSCR);
|
||||||
rmb(); /* ensure DSCR is read before CTRLA */
|
rmb(); /* ensure DSCR is read before CTRLA */
|
||||||
ctrla = channel_readl(atchan, CTRLA);
|
ctrla = channel_readl(atchan, CTRLA);
|
||||||
for (trials = 0; trials < ATC_MAX_DSCR_TRIALS; ++trials) {
|
for (i = 0; i < ATC_MAX_DSCR_TRIALS; ++i) {
|
||||||
u32 new_dscr;
|
u32 new_dscr;
|
||||||
|
|
||||||
rmb(); /* ensure DSCR is read after CTRLA */
|
rmb(); /* ensure DSCR is read after CTRLA */
|
||||||
@@ -395,7 +396,7 @@ static int atc_get_bytes_left(struct dma_chan *chan, dma_cookie_t cookie)
|
|||||||
rmb(); /* ensure DSCR is read before CTRLA */
|
rmb(); /* ensure DSCR is read before CTRLA */
|
||||||
ctrla = channel_readl(atchan, CTRLA);
|
ctrla = channel_readl(atchan, CTRLA);
|
||||||
}
|
}
|
||||||
if (unlikely(trials >= ATC_MAX_DSCR_TRIALS))
|
if (unlikely(i == ATC_MAX_DSCR_TRIALS))
|
||||||
return -ETIMEDOUT;
|
return -ETIMEDOUT;
|
||||||
|
|
||||||
/* for the first descriptor we can be more accurate */
|
/* for the first descriptor we can be more accurate */
|
||||||
|
Reference in New Issue
Block a user