This is a note to let you know that I've just added the patch titled dmaengine: at_hdmac: Fix impossible condition to the 6.0-stable tree which can be found at: http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary The filename of the patch is: dmaengine-at_hdmac-fix-impossible-condition.patch and it can be found in the queue-6.0 subdirectory. If you, or anyone else, feels it should not be added to the stable tree, please let <stable@xxxxxxxxxxxxxxx> know about it. >From 28cbe5a0a46a6637adbda52337d7b2777fc04027 Mon Sep 17 00:00:00 2001 From: Tudor Ambarus <tudor.ambarus@xxxxxxxxxxxxx> Date: Tue, 25 Oct 2022 12:02:48 +0300 Subject: dmaengine: at_hdmac: Fix impossible condition From: Tudor Ambarus <tudor.ambarus@xxxxxxxxxxxxx> 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@xxxxxxxxxxxxx> Cc: stable@xxxxxxxxxxxxxxx Acked-by: Nicolas Ferre <nicolas.ferre@xxxxxxxxxxxxx> Link: https://lore.kernel.org/r/20221025090306.297886-1-tudor.ambarus@xxxxxxxxxxxxx Link: https://lore.kernel.org/r/20221025090306.297886-15-tudor.ambarus@xxxxxxxxxxxxx Signed-off-by: Vinod Koul <vkoul@xxxxxxxxxx> Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> --- drivers/dma/at_hdmac.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) --- a/drivers/dma/at_hdmac.c +++ b/drivers/dma/at_hdmac.c @@ -318,7 +318,8 @@ static int atc_get_bytes_left(struct dma 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 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 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 */ Patches currently in stable-queue which might be from tudor.ambarus@xxxxxxxxxxxxx are queue-6.0/dmaengine-at_hdmac-fix-concurrency-problems-by-removing-atc_complete_all.patch queue-6.0/dmaengine-at_hdmac-start-transfer-for-cyclic-channels-in-issue_pending.patch queue-6.0/dmaengine-at_hdmac-don-t-start-transactions-at-tx_submit-level.patch queue-6.0/dmaengine-at_hdmac-fix-at_lli-struct-definition.patch queue-6.0/dmaengine-at_hdmac-fix-descriptor-handling-when-issuing-it-to-hardware.patch queue-6.0/dmaengine-at_hdmac-free-the-memset-buf-without-holding-the-chan-lock.patch queue-6.0/dmaengine-at_hdmac-fix-concurrency-over-the-active-list.patch queue-6.0/dmaengine-at_hdmac-fix-premature-completion-of-desc-in-issue_pending.patch queue-6.0/dmaengine-at_hdmac-fix-impossible-condition.patch queue-6.0/dmaengine-at_hdmac-check-return-code-of-dma_async_device_register.patch queue-6.0/dmaengine-at_hdmac-don-t-allow-cpu-to-reorder-channel-enable.patch queue-6.0/dmaengine-at_hdmac-fix-concurrency-over-descriptor.patch queue-6.0/dmaengine-at_hdmac-protect-atchan-status-with-the-channel-lock.patch queue-6.0/dmaengine-at_hdmac-fix-completion-of-unissued-descriptor-in-case-of-errors.patch queue-6.0/dmaengine-at_hdmac-do-not-call-the-complete-callback-on-device_terminate_all.patch