From: Dan Carpenter > Sent: 31 March 2022 11:40 > > On Thu, Mar 31, 2022 at 10:29:04AM +0000, David Laight wrote: > > From: Alaa Mohamed > > > Sent: 31 March 2022 11:19 > > > > > > Fix Duplication of Side Effects for GDM_TTY_READY(gdm) macro > > > reported by checkpatch > > > "CHECK: Macro argument reuse 'gdm' - possible side-effects?" > > > > > > Signed-off-by: Alaa Mohamed <eng.alaamohamedsoliman.am@xxxxxxxxx> > > > --- > > > drivers/staging/gdm724x/gdm_tty.c | 4 +++- > > > 1 file changed, 3 insertions(+), 1 deletion(-) > > > > > > diff --git a/drivers/staging/gdm724x/gdm_tty.c b/drivers/staging/gdm724x/gdm_tty.c > > > index 04df6f9f5403..6f0274470e69 100644 > > > --- a/drivers/staging/gdm724x/gdm_tty.c > > > +++ b/drivers/staging/gdm724x/gdm_tty.c > > > @@ -27,7 +27,9 @@ > > > > > > #define MUX_TX_MAX_SIZE 2048 > > > > > > -#define GDM_TTY_READY(gdm) (gdm && gdm->tty_dev && gdm->port.count) > > > +#define GDM_TTY_READY(_gdm) \ > > > + ({ typeof(_gdm) (gdm) = (_gdm); \ > > > + (gdm && gdm->tty_dev && gdm->port.count); }) > > > > Did you test this? > > > > see https://godbolt.org/z/cazPrrzPv > > > > I don't understand the link. The patch should work as far as I can see. If you call GDM_TTY_READY(gdm) the first line ends up as: struct xxx *gdm = gdm; which shadows the parameter. There's probably a warning about an uninitialised variable as well. The 'gdm' and '_gdm' would need swapping over. But, as you said, just: #define GDM_TTY_READY(gdm) ((gdm) && (gdm)->tty_dev && (gdm)->port.count) is fine - I'd add the () but not worry about multiple evaluation. David - Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK Registration No: 1397386 (Wales)