[PATCH] staging: rtl8188eu: Macro should be enclosed

Alfonso Lima alfonsolimaastor at gmail.com
Sun Apr 9 13:47:45 UTC 2017


On Sat, Apr 01, 2017 at 09:24:58AM +0200, Sebastian Haas wrote:
> Hi Alfonso,
> 
> On Wed, Mar 29, 2017 at 07:50:11PM +0100, alfonsolimaastor at gmail.com wrote:
> > diff --git a/drivers/staging/rtl8188eu/include/odm_debug.h b/drivers/staging/rtl8188eu/include/odm_debug.h
> > index 687ff3e..fd92f7e 100644
> > --- a/drivers/staging/rtl8188eu/include/odm_debug.h
> > +++ b/drivers/staging/rtl8188eu/include/odm_debug.h
> > @@ -86,11 +86,13 @@
> >  #endif
> >  
> >  #define ODM_RT_TRACE(pDM_Odm, comp, level, fmt)				\
> > -	if (((comp) & pDM_Odm->DebugComponents) &&			\
> > -	    (level <= pDM_Odm->DebugLevel)) {				\
> > -		pr_info("[ODM-8188E] ");				\
> > -		RT_PRINTK fmt;						\
> > -	}
> > +	do {								\
> > +		if (((comp) & pDM_Odm->DebugComponents) &&		\
> > +		    (level <= pDM_Odm->DebugLevel)) {			\
> > +			pr_info("[ODM-8188E] ");			\
> > +			RT_PRINTK fmt;					\
> > +		}							\
> > +	} while (0)
> 
> isn't the if-statement already a single block?
> I don't think the do-while adds any improvement.

I have investigated a little bit and found no reason why checkpatch
complains about this, so I reported a bug:
http://www.spinics.net/lists/kernel/msg2484676.html

It turns out the problem comes when you use that macro inside an if-else
statement like this:

if (foo())
	ODM_RT_TRACE(pDM_Odm, comp, level, fmt);
else
	do_smomething();

So, checkpatch's complain seems to be legit.

Regards,
Alfonso


More information about the devel mailing list