On Tue, Jan 26, 2021 at 12:20:11AM -0800, Joe Perches wrote: > On Tue, 2021-01-26 at 08:01 +0200, Leon Romanovsky wrote: > > On Mon, Jan 25, 2021 at 01:52:29PM -0800, Jakub Kicinski wrote: > > > On Sun, 24 Jan 2021 15:11:16 +0200 Leon Romanovsky wrote: > > > > +static int pci_enable_vfs_overlay(struct pci_dev *dev) { return 0; } > > > > +static void pci_disable_vfs_overlay(struct pci_dev *dev) {} > > > > > > s/static /static inline / > > > > Thanks a lot, I think that we should extend checkpatch.pl to catch such > > mistakes. > > Who is this "we" you refer to? ;) "We" == community :) > > > How hard is it to extend checkpatch.pl to do regexp and warn if in *.h file > > someone declared function with implementation but didn't add "inline" word? > > Something like this seems reasonable and catches these instances in > include/linux/*.h Thanks > > $ ./scripts/checkpatch.pl -f include/linux/*.h --types=static_inline --terse --nosummary > include/linux/dma-mapping.h:203: WARNING: static function definition might be better as static inline > include/linux/genl_magic_func.h:55: WARNING: static function definition might be better as static inline > include/linux/genl_magic_func.h:78: WARNING: static function definition might be better as static inline > include/linux/kernel.h:670: WARNING: static function definition might be better as static inline > include/linux/kprobes.h:213: WARNING: static function definition might be better as static inline > include/linux/kprobes.h:231: WARNING: static function definition might be better as static inline > include/linux/kprobes.h:511: WARNING: static function definition might be better as static inline > include/linux/skb_array.h:185: WARNING: static function definition might be better as static inline > include/linux/slab.h:606: WARNING: static function definition might be better as static inline > include/linux/stop_machine.h:62: WARNING: static function definition might be better as static inline > include/linux/vmw_vmci_defs.h:850: WARNING: static function definition might be better as static inline > include/linux/zstd.h:95: WARNING: static function definition might be better as static inline > include/linux/zstd.h:106: WARNING: static function definition might be better as static inline > > A false positive exists when __must_check is used between > static and inline. It's an unusual and IMO not a preferred use. Maybe just filter and ignore such functions for now? Will you send proper patch or do you want me to do it? > --- > scripts/checkpatch.pl | 12 ++++++++++++ > 1 file changed, 12 insertions(+) > > diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl > index 4f8494527139..0ac366481962 100755 > --- a/scripts/checkpatch.pl > +++ b/scripts/checkpatch.pl > @@ -4451,6 +4451,18 @@ sub process { > } > } > > +# check for static function definitions without inline in .h files > +# only works for static in column 1 and avoids multiline macro definitions > + if ($realfile =~ /\.h$/ && > + defined($stat) && > + $stat =~ /^\+static(?!\s+(?:$Inline|union|struct))\b.*\{.*\}\s*$/s && > + $line =~ /^\+static(?!\s+(?:$Inline|union|struct))\b/ && > + $line !~ /\\$/) { > + WARN("STATIC_INLINE", > + "static function definition might be better as static inline\n" . > + $herecurr); > + } > + > # check for non-global char *foo[] = {"bar", ...} declarations. > if ($line =~ /^.\s+(?:static\s+|const\s+)?char\s+\*\s*\w+\s*\[\s*\]\s*=\s*\{/) { > WARN("STATIC_CONST_CHAR_ARRAY", > >