Re: [PATCH] ASoC: ux500: Parenthesize MSP_{RX,TX}_CLKPOL_BIT() arguments

From: Linus Walleij

Date: Wed Sep 16 2026 - 08:57:19 EST


On Sun, Sep 13, 2026 at 7:31 PM Sasha Levin <sashal@xxxxxxxxxx> wrote:

> arm allmodconfig fails to build with gcc:
>
> In file included from sound/soc/ux500/ux500_msp_i2s.c:20:
> sound/soc/ux500/ux500_msp_i2s.h:151:38: error: suggest parentheses
> around arithmetic in operand of '^' [-Werror=parentheses]
> sound/soc/ux500/ux500_msp_i2s.c:204:21: note: in expansion of macro
> 'MSP_TX_CLKPOL_BIT'
> cc1: all warnings being treated as errors
>
> The macros never parenthesized their argument:
>
> #define MSP_TX_CLKPOL_BIT(n) ((n & TCKPOL_MASK) << TCKPOL_SHIFT)
>
> That went unnoticed while every caller passed a plain variable, but
> configure_protocol() now passes an XOR expression, which binds as
> "a ^ (b & MASK)" rather than "(a ^ b) & MASK", and gcc rightly
> complains.
>
> No functional change: tx_clk_pol and rx_clk_pol only ever hold
> MSP_FALLING_EDGE (0) or MSP_RISING_EDGE (1), and bclk_inverted is a
> bool, so masking before or after the XOR gives the same 0/1 result.
> Parenthesize the argument anyway - it fixes the build and stops the
> macros from silently mis-evaluating a future composite argument.
>
> Fixes: 9ccbacf5a012 ("ASoC: ux500: Validate MSP DAI configuration")
> Reported-by: kernel test robot <lkp@xxxxxxxxx>
> Closes: https://lore.kernel.org/oe-kbuild-all/202609051547.G9SJp8UQ-lkp@xxxxxxxxx/
> Assisted-by: LLM
> Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

Reviewed-by: Linus Walleij <linusw@xxxxxxxxxx>

Yours,
Linus Walleij