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 <[email protected]> wrote: > > From: Xining Xu <[email protected]> > > 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 <[email protected]> > Tested-by: Barry Song <[email protected]> > Signed-off-by: Barry Song <[email protected]> > Cc: Chris Zankel <[email protected]> > Cc: Huacai Chen <[email protected]> > Cc: Herbert Xu <[email protected]> > Cc: Guenter Roeck <[email protected]> > Cc: Stephen Rothwell <[email protected]> > Cc: Mark Brown <[email protected]> > Cc: Andy Whitcroft <[email protected]> > Cc: Dwaipayan Ray <[email protected]> > Cc: Joe Perches <[email protected]> > Cc: Jonathan Corbet <[email protected]> > Cc: Lukas Bulwahn <[email protected]> > Cc: Max Filippov <[email protected]> > Cc: Jeff Johnson <[email protected]> > Cc: Charlemagne Lasse <[email protected]> > --- > 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
