Hi Joe, any further comment for this ? May this patch get your reviewed / acked? On Thu, Apr 4, 2024 at 6:43 AM Barry Song <21cnbao@xxxxxxxxx> wrote: > > From: Xining Xu <mac.xxn@xxxxxxxxxxx> > > If function-like macros do not utilize a parameter, it might result in a > build warning. In our coding style guidelines, we advocate for utilizing > static inline functions to replace such macros. This patch verifies > compliance with the new rule. > > For a macro such as the one below, > > #define test(a) do { } while (0) > > The test result is as follows. > > WARNING: Argument 'a' is not used in function-like macro > #21: FILE: mm/init-mm.c:20: > +#define test(a) do { } while (0) > > total: 0 errors, 1 warnings, 8 lines checked > > Signed-off-by: Xining Xu <mac.xxn@xxxxxxxxxxx> > Tested-by: Barry Song <v-songbaohua@xxxxxxxx> > Signed-off-by: Barry Song <v-songbaohua@xxxxxxxx> > Cc: Chris Zankel <chris@xxxxxxxxxx> > Cc: Huacai Chen <chenhuacai@xxxxxxxxxxx> > Cc: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx> > Cc: Guenter Roeck <linux@xxxxxxxxxxxx> > Cc: Stephen Rothwell <sfr@xxxxxxxxxxxxxxxx> > Cc: Mark Brown <broonie@xxxxxxxxxx> > Cc: Andy Whitcroft <apw@xxxxxxxxxxxxx> > Cc: Dwaipayan Ray <dwaipayanray1@xxxxxxxxx> > Cc: Joe Perches <joe@xxxxxxxxxxx> > Cc: Jonathan Corbet <corbet@xxxxxxx> > Cc: Lukas Bulwahn <lukas.bulwahn@xxxxxxxxx> > Cc: Max Filippov <jcmvbkbc@xxxxxxxxx> > Cc: Jeff Johnson <quic_jjohnson@xxxxxxxxxxx> > Cc: Charlemagne Lasse <charlemagnelasse@xxxxxxxxx> > --- > Documentation/dev-tools/checkpatch.rst | 14 ++++++++++++++ > scripts/checkpatch.pl | 6 ++++++ > 2 files changed, 20 insertions(+) > > diff --git a/Documentation/dev-tools/checkpatch.rst b/Documentation/dev-tools/checkpatch.rst > index 127968995847..a9fac978a525 100644 > --- a/Documentation/dev-tools/checkpatch.rst > +++ b/Documentation/dev-tools/checkpatch.rst > @@ -906,6 +906,20 @@ Macros, Attributes and Symbols > > See: https://lore.kernel.org/lkml/1399671106.2912.21.camel@joe-AO725/ > > + **MACRO_ARG_UNUSED** > + If function-like macros do not utilize a parameter, it might result > + in a build warning. We advocate for utilizing static inline functions > + to replace such macros. > + For example, for a macro such as the one below:: > + > + #define test(a) do { } while (0) > + > + there would be a warning like below:: > + > + WARNING: Argument 'a' is not used in function-like macro. > + > + See: https://www.kernel.org/doc/html/latest/process/coding-style.html#macros-enums-and-rtl > + > **SINGLE_STATEMENT_DO_WHILE_MACRO** > For the multi-statement macros, it is necessary to use the do-while > loop to avoid unpredictable code paths. The do-while loop helps to > diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl > index 9c4c4a61bc83..9895d7e38a9f 100755 > --- a/scripts/checkpatch.pl > +++ b/scripts/checkpatch.pl > @@ -6040,6 +6040,12 @@ sub process { > CHK("MACRO_ARG_PRECEDENCE", > "Macro argument '$arg' may be better as '($arg)' to avoid precedence issues\n" . "$herectx"); > } > + > +# check if this is an unused argument > + if ($define_stmt !~ /\b$arg\b/) { > + WARN("MACRO_ARG_UNUSED", > + "Argument '$arg' is not used in function-like macro\n" . "$herectx"); > + } > } > > # check for macros with flow control, but without ## concatenation > -- > 2.34.1 > Thanks Barry