On Tue, Sep 1, 2020 at 12:08 AM Nathan Chancellor <natechancellor@xxxxxxxxx> wrote: > > A new warning in clang points out when macro expansion might result in a > GNU C statement expression. There is an instance of this in the mwifiex > driver: > > drivers/net/wireless/marvell/mwifiex/cmdevt.c:217:34: warning: '}' and > ')' tokens terminating statement expression appear in different macro > expansion contexts [-Wcompound-token-split-by-macro] > host_cmd->seq_num = cpu_to_le16(HostCmd_SET_SEQ_NO_BSS_INFO > ^~~~~~~~~~~~~~~~~~~~~~~~~~~ > drivers/net/wireless/marvell/mwifiex/fw.h:519:46: note: expanded from > macro 'HostCmd_SET_SEQ_NO_BSS_INFO' > (((type) & 0x000f) << 12); } > ^ > > This does not appear to be a real issue. Removing the braces and > replacing them with parentheses will fix the warning and not change the > meaning of the code. > > Fixes: 5e6e3a92b9a4 ("wireless: mwifiex: initial commit for Marvell mwifiex driver") > Link: https://github.com/ClangBuiltLinux/linux/issues/1146 > Reported-by: Andy Lavr <andy.lavr@xxxxxxxxx> > Signed-off-by: Nathan Chancellor <natechancellor@xxxxxxxxx> Wow, that's tricky. The unnecessary extra parens mix with the extra curly braces to form a GNU C statement expression. Thanks for the patch. Reviewed-by: Nick Desaulniers <ndesaulniers@xxxxxxxxxx> > --- > drivers/net/wireless/marvell/mwifiex/cmdevt.c | 4 ++-- > drivers/net/wireless/marvell/mwifiex/fw.h | 8 ++++---- > 2 files changed, 6 insertions(+), 6 deletions(-) > > diff --git a/drivers/net/wireless/marvell/mwifiex/cmdevt.c b/drivers/net/wireless/marvell/mwifiex/cmdevt.c > index d068b9075c32..3a11342a6bde 100644 > --- a/drivers/net/wireless/marvell/mwifiex/cmdevt.c > +++ b/drivers/net/wireless/marvell/mwifiex/cmdevt.c > @@ -322,9 +322,9 @@ static int mwifiex_dnld_sleep_confirm_cmd(struct mwifiex_adapter *adapter) > > adapter->seq_num++; > sleep_cfm_buf->seq_num = > - cpu_to_le16((HostCmd_SET_SEQ_NO_BSS_INFO > + cpu_to_le16(HostCmd_SET_SEQ_NO_BSS_INFO > (adapter->seq_num, priv->bss_num, > - priv->bss_type))); > + priv->bss_type)); > > mwifiex_dbg(adapter, CMD, > "cmd: DNLD_CMD: %#x, act %#x, len %d, seqno %#x\n", > diff --git a/drivers/net/wireless/marvell/mwifiex/fw.h b/drivers/net/wireless/marvell/mwifiex/fw.h > index 8047e307892e..1f02c5058aed 100644 > --- a/drivers/net/wireless/marvell/mwifiex/fw.h > +++ b/drivers/net/wireless/marvell/mwifiex/fw.h > @@ -513,10 +513,10 @@ enum mwifiex_channel_flags { > > #define RF_ANTENNA_AUTO 0xFFFF > > -#define HostCmd_SET_SEQ_NO_BSS_INFO(seq, num, type) { \ > - (((seq) & 0x00ff) | \ > - (((num) & 0x000f) << 8)) | \ > - (((type) & 0x000f) << 12); } > +#define HostCmd_SET_SEQ_NO_BSS_INFO(seq, num, type) \ > + ((((seq) & 0x00ff) | \ > + (((num) & 0x000f) << 8)) | \ > + (((type) & 0x000f) << 12)) > > #define HostCmd_GET_SEQ_NO(seq) \ > ((seq) & HostCmd_SEQ_NUM_MASK) > -- -- Thanks, ~Nick Desaulniers