• Nathan Chancellor's avatar
    dmaengine: xilinx: xdma: Fix operator precedence in xdma_prep_interleaved_dma() · fe0d495e
    Nathan Chancellor authored
    Clang warns (or errors with CONFIG_WERROR=y):
    
      drivers/dma/xilinx/xdma.c:757:68: error: operator '?:' has lower precedence than '+'; '+' will be evaluated first [-Werror,-Wparentheses]
        757 |                 src_addr += dmaengine_get_src_icg(xt, &xt->sgl[i]) + xt->src_inc ?
            |                             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^
      drivers/dma/xilinx/xdma.c:757:68: note: place parentheses around the '+' expression to silence this warning
        757 |                 src_addr += dmaengine_get_src_icg(xt, &xt->sgl[i]) + xt->src_inc ?
            |                                                                                  ^
            |                             (                                                   )
      drivers/dma/xilinx/xdma.c:757:68: note: place parentheses around the '?:' expression to evaluate it first
        757 |                 src_addr += dmaengine_get_src_icg(xt, &xt->sgl[i]) + xt->src_inc ?
            |                                                                                  ^
            |                                                                      (
        758 |                                                               xt->sgl[i].size : 0;
            |
            |                                                                                  )
      drivers/dma/xilinx/xdma.c:759:68: error: operator '?:' has lower precedence than '+'; '+' will be evaluated first [-Werror,-Wparentheses]
        759 |                 dst_addr += dmaengine_get_dst_icg(xt, &xt->sgl[i]) + xt->dst_inc ?
            |                             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^
      drivers/dma/xilinx/xdma.c:759:68: note: place parentheses around the '+' expression to silence this warning
        759 |                 dst_addr += dmaengine_get_dst_icg(xt, &xt->sgl[i]) + xt->dst_inc ?
            |                                                                                  ^
            |                             (                                                   )
      drivers/dma/xilinx/xdma.c:759:68: note: place parentheses around the '?:' expression to evaluate it first
        759 |                 dst_addr += dmaengine_get_dst_icg(xt, &xt->sgl[i]) + xt->dst_inc ?
            |                                                                                  ^
            |                                                                      (
        760 |                                                               xt->sgl[i].size : 0;
            |
            |                                                                                  )
    
    The src_inc and dst_inc members of 'struct dma_interleaved_template' are
    booleans, so it does not make sense for the addition to happen first.
    Wrap the conditional operator in parantheses so it is evaluated first.
    
    Closes: https://github.com/ClangBuiltLinux/linux/issues/1971
    Fixes: 2f8f90cd ("dmaengine: xilinx: xdma: Implement interleaved DMA transfers")
    Signed-off-by: default avatarNathan Chancellor <nathan@kernel.org>
    Link: https://lore.kernel.org/r/20231222-dma-xilinx-xdma-clang-fixes-v1-1-84a18ff184d2@kernel.orgSigned-off-by: default avatarVinod Koul <vkoul@kernel.org>
    fe0d495e
xdma.c 33.7 KB