dmaengine: at_hdmac: Fix impossible condition
authorTudor Ambarus <tudor.ambarus@microchip.com>
Tue, 25 Oct 2022 09:02:48 +0000 (12:02 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 16 Nov 2022 08:58:30 +0000 (09:58 +0100)
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: 93dce3a6434f ("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>
drivers/dma/at_hdmac.c

index 40e4388..ffe3bcf 100644 (file)
@@ -318,7 +318,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;
        int ret;
-       u32 ctrla, dscr, trials;
+       u32 ctrla, dscr;
+       unsigned int i;
 
        /*
         * If the cookie doesn't match to the currently running transfer then
@@ -388,7 +389,7 @@ static int atc_get_bytes_left(struct dma_chan *chan, dma_cookie_t cookie)
                dscr = channel_readl(atchan, DSCR);
                rmb(); /* ensure DSCR is read before 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;
 
                        rmb(); /* ensure DSCR is read after CTRLA */
@@ -414,7 +415,7 @@ static int atc_get_bytes_left(struct dma_chan *chan, dma_cookie_t cookie)
                        rmb(); /* ensure DSCR is read before CTRLA */
                        ctrla = channel_readl(atchan, CTRLA);
                }
-               if (unlikely(trials >= ATC_MAX_DSCR_TRIALS))
+               if (unlikely(i == ATC_MAX_DSCR_TRIALS))
                        return -ETIMEDOUT;
 
                /* for the first descriptor we can be more accurate */