Re: [PATCH] staging: greybus: loopback: enclose macro statements in do-while loop

From: Deepak R Varma
Date: Sun Oct 16 2022 - 12:15:12 EST


On Sun, Oct 16, 2022 at 04:51:09PM +0200, Julia Lawall wrote:
>
>
> On Sun, 16 Oct 2022, Deepak R Varma wrote:
>
> > Include multiple statements of macro definition inside do-while{0} loop
> > to avoid possible partial program execution. Issue reported by
> > checkpatch script:
> >
> > ERROR: Macros with multiple statements should be enclosed in a do - while loop
>
> I don't think this change will compile. See if you can figure out why
> not.

After trying a direct compile of the loopback.c file, it did not compile. The
kernel build ran did not compile the loopback.c file due to missing
configuration.

About this change, the macro expands to function declarations at compile time
and those can't be enclosed in do/while loop as these are not logical execution
instructions. So it won't compile.

I initially looked for "greybus driver" under the "main menu > drivers >
staging drivers" path, but not find any configurations for the driver. While
retuning back, I found "greybus support" config under "menu-menu > device
drivers" itself. I set it to "M" and build the module. I did not realise that
setting this parameter to "M" actually results in adding several configurations
under "staging drivers" path. I now understand that.

Thank you for your help. I will look for another sensible change and send my new
first patch.

./drv

>
> julia
>
> >
> > Signed-off-by: Deepak R Varma <drv@xxxxxxxxx>
> > ---
> > drivers/staging/greybus/loopback.c | 4 +++-
> > 1 file changed, 3 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/staging/greybus/loopback.c b/drivers/staging/greybus/loopback.c
> > index 1a61fce98056..37214cb43937 100644
> > --- a/drivers/staging/greybus/loopback.c
> > +++ b/drivers/staging/greybus/loopback.c
> > @@ -163,9 +163,11 @@ static ssize_t name##_avg_show(struct device *dev, \
> > static DEVICE_ATTR_RO(name##_avg)
> >
> > #define gb_loopback_stats_attrs(field) \
> > +do { \
> > gb_loopback_ro_stats_attr(field, min, u); \
> > gb_loopback_ro_stats_attr(field, max, u); \
> > - gb_loopback_ro_avg_attr(field)
> > + gb_loopback_ro_avg_attr(field); \
> > +} while (0)
> >
> > #define gb_loopback_attr(field, type) \
> > static ssize_t field##_show(struct device *dev, \
> > --
> > 2.30.2
> >
> >
> >
> >
> >