Building with CONFIG_UBSAN_SANITIZE_ALL shows this warning: drivers/dma/sh/rcar-dmac.c: In function 'rcar_dmac_chan_prep_sg': drivers/dma/sh/rcar-dmac.c:839:29: error: array subscript is above array bounds [-Werror=array-bounds] desc->chcr = chcr | chcr_ts[desc->xfer_shift]; As the compiler doesn't know what the xfer_size is, it is impossible to rule out the array overflow here. As we know that xfer_size can only be within enum dma_slave_buswidth, this will not overflow for correct users, and adding a range check will handle the obscure case and shut up the warning. Fixes: 87244fe5abdf ("dmaengine: rcar-dmac: Add Renesas R-Car Gen2 DMA Controller (DMAC) driver") Signed-off-by: Arnd Bergmann <arnd@xxxxxxxx> --- drivers/dma/sh/rcar-dmac.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/dma/sh/rcar-dmac.c b/drivers/dma/sh/rcar-dmac.c index ffcadca53243..f5b28eb4009e 100644 --- a/drivers/dma/sh/rcar-dmac.c +++ b/drivers/dma/sh/rcar-dmac.c @@ -836,7 +836,8 @@ static void rcar_dmac_chan_configure_desc(struct rcar_dmac_chan *chan, } desc->xfer_shift = ilog2(xfer_size); - desc->chcr = chcr | chcr_ts[desc->xfer_shift]; + if (desc->xfer_shift < ARRAY_SIZE(chcr_ts)) + desc->chcr = chcr | chcr_ts[desc->xfer_shift]; } /* -- 2.9.0 -- To unsubscribe from this list: send the line "unsubscribe dmaengine" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html