[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <Zv7ZsieITDle2lgl@smile.fi.intel.com>
Date: Thu, 3 Oct 2024 20:51:46 +0300
From: Andy Shevchenko <andriy.shevchenko@...el.com>
To: Peter Zijlstra <peterz@...radead.org>
Cc: Przemek Kitszel <przemyslaw.kitszel@...el.com>,
linux-kernel@...r.kernel.org, amadeuszx.slawinski@...ux.intel.com,
Tony Nguyen <anthony.l.nguyen@...el.com>,
nex.sw.ncis.osdt.itp.upstreaming@...el.com, netdev@...r.kernel.org,
Markus Elfring <Markus.Elfring@....de>, Kees Cook <kees@...nel.org>,
Dmitry Torokhov <dmitry.torokhov@...il.com>,
Dan Carpenter <dan.carpenter@...aro.org>
Subject: Re: [PATCH v1] cleanup: adjust scoped_guard() to avoid potential
warning
On Thu, Oct 03, 2024 at 04:12:21PM +0200, Peter Zijlstra wrote:
> On Thu, Oct 03, 2024 at 03:46:24PM +0300, Andy Shevchenko wrote:
> > On Thu, Oct 03, 2024 at 03:43:17PM +0300, Andy Shevchenko wrote:
> > > On Thu, Oct 03, 2024 at 01:39:06PM +0200, Przemek Kitszel wrote:
...
> > > > +#define __scoped_guard_labeled(_label, _name, args...) \
> > > > + for (CLASS(_name, scope)(args); \
> > > > + __guard_ptr(_name)(&scope) || !__is_cond_ptr(_name); \
> > > > + ({ goto _label; })) \
> > > > + if (0) \
> > > > + _label: \
> > > > + break; \
> > > > + else
> > >
> > > I believe the following will folow more the style we use in the kernel:
> > >
> > > #define __scoped_guard_labeled(_label, _name, args...) \
> > > for (CLASS(_name, scope)(args); \
> > > __guard_ptr(_name)(&scope) || !__is_cond_ptr(_name); \
> > > ({ goto _label; })) \
> > > if (0) { \
> > > _label: \
> > > break; \
> > > } else
> > >
>
> Yeah, needs braces like that. I'm not super opposed to this, however,
>
> > And FWIW:
> > 1) still NAKed;
>
> I would really like to understand why you don't like this; care to
> elaborate Andy?
To me the idea of
int my_foo(...)
{
NOT_my_foo_macro(...)
return X;
}
is counter intuitive from C programming. Without knowing the magic behind the
scenes of NOT_my_foo_macro() I would eager to ask for adding a dead code like
int my_foo(...)
{
NOT_my_foo_macro(...)
return X;
return 0;
}
What I would agree on is
int my_foo(...)
{
return NOT_my_foo_macro(..., X);
}
Or just using guard()().
--
With Best Regards,
Andy Shevchenko
Powered by blists - more mailing lists