Message ID | 20210103135738.3741123-1-arnd@kernel.org (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
Series | dmaengine: qcom: fix gpi undefined behavior | expand |
On 03-01-21, 14:57, Arnd Bergmann wrote: > From: Arnd Bergmann <arnd@arndb.de> > > gcc points out an incorrect error handling loop: > > drivers/dma/qcom/gpi.c: In function 'gpi_ch_init': > drivers/dma/qcom/gpi.c:1254:15: error: iteration 2 invokes undefined behavior [-Werror=aggressive-loop-optimizations] > 1254 | struct gpii *gpii = gchan->gpii; > | ^~~~ > drivers/dma/qcom/gpi.c:1951:2: note: within this loop > 1951 | for (i = i - 1; i >= 0; i++) { > | ^~~ > > Change the loop to correctly walk backwards through the > initialized fields rather than off into the woods. Applied, thanks
diff --git a/drivers/dma/qcom/gpi.c b/drivers/dma/qcom/gpi.c index 8d39d3e24686..9c211104ddbf 100644 --- a/drivers/dma/qcom/gpi.c +++ b/drivers/dma/qcom/gpi.c @@ -1948,7 +1948,7 @@ static int gpi_ch_init(struct gchan *gchan) return ret; error_start_chan: - for (i = i - 1; i >= 0; i++) { + for (i = i - 1; i >= 0; i--) { gpi_stop_chan(&gpii->gchan[i]); gpi_send_cmd(gpii, gchan, GPI_CH_CMD_RESET); }