2021-09-03 16:02:32

by Ian Pilcher

[permalink] [raw]
Subject: False positive EXPORT_SYMBOL warning with NS variants

$ cat foo.c
// SPDX-License-Identifier: GPL-2.0-only
void (*foo)(void);
EXPORT_SYMBOL_NS(foo, FOO);

$ scripts/checkpatch.pl -f foo.c
WARNING: EXPORT_SYMBOL(foo); should immediately follow its function/variable
#3: FILE: foo.c:3:
+EXPORT_SYMBOL_NS(foo, FOO);

The non-NS EXPORT_SYMBOL variants don't trigger this warning.

--
========================================================================
In Soviet Russia, Google searches you!
========================================================================


2021-09-05 06:01:22

by Joe Perches

[permalink] [raw]
Subject: Re: False positive EXPORT_SYMBOL warning with NS variants

On Fri, 2021-09-03 at 11:01 -0500, Ian Pilcher wrote:
> $ cat foo.c
> // SPDX-License-Identifier: GPL-2.0-only
> void (*foo)(void);
> EXPORT_SYMBOL_NS(foo, FOO);
>
> $ scripts/checkpatch.pl -f foo.c
> WARNING: EXPORT_SYMBOL(foo); should immediately follow its function/variable
> #3: FILE: foo.c:3:
> +EXPORT_SYMBOL_NS(foo, FOO);
>
> The non-NS EXPORT_SYMBOL variants don't trigger this warning.
>

Try this:
---
scripts/checkpatch.pl | 1 +
1 file changed, 1 insertion(+)

diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index 88cb294dc4472..91798b07c6cb5 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -4449,6 +4449,7 @@ sub process {
# XXX(foo);
# EXPORT_SYMBOL(something_foo);
my $name = $1;
+ $name =~ s/^\s*($Ident).*/$1/;
if ($stat =~ /^(?:.\s*}\s*\n)?.([A-Z_]+)\s*\(\s*($Ident)/ &&
$name =~ /^${Ident}_$2/) {
#print "FOO C name<$name>\n";

2021-09-09 15:04:27

by Ian Pilcher

[permalink] [raw]
Subject: Re: False positive EXPORT_SYMBOL warning with NS variants

On 9/5/21 12:51 AM, Joe Perches wrote:
> On Fri, 2021-09-03 at 11:01 -0500, Ian Pilcher wrote:
>> $ cat foo.c
>> // SPDX-License-Identifier: GPL-2.0-only
>> void (*foo)(void);
>> EXPORT_SYMBOL_NS(foo, FOO);
>>
>> $ scripts/checkpatch.pl -f foo.c
>> WARNING: EXPORT_SYMBOL(foo); should immediately follow its function/variable
>> #3: FILE: foo.c:3:
>> +EXPORT_SYMBOL_NS(foo, FOO);
>>
>> The non-NS EXPORT_SYMBOL variants don't trigger this warning.
>>
>
> Try this:
> ---
> scripts/checkpatch.pl | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
> index 88cb294dc4472..91798b07c6cb5 100755
> --- a/scripts/checkpatch.pl
> +++ b/scripts/checkpatch.pl
> @@ -4449,6 +4449,7 @@ sub process {
> # XXX(foo);
> # EXPORT_SYMBOL(something_foo);
> my $name = $1;
> + $name =~ s/^\s*($Ident).*/$1/;
> if ($stat =~ /^(?:.\s*}\s*\n)?.([A-Z_]+)\s*\(\s*($Ident)/ &&
> $name =~ /^${Ident}_$2/) {
> #print "FOO C name<$name>\n";
>

Seems to work

--
========================================================================
In Soviet Russia, Google searches you!
========================================================================

2021-10-07 19:40:27

by Joe Perches

[permalink] [raw]
Subject: [PATCH] checkpatch: Improve EXPORT_SYMBOL test for EXPORT_SYMBOL_NS uses

The EXPORT_SYMBOL test expects a single argument but definitions of
EXPORT_SYMBOL_NS have multiple arguments.

Update the test to extract only the first argument from any
EXPORT_SYMBOL related definition.

Reported-by: Ian Pilcher <[email protected]>
Signed-off-by: Joe Perches <[email protected]>
---
scripts/checkpatch.pl | 1 +
1 file changed, 1 insertion(+)

diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index 88cb294dc4472..91798b07c6cb5 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -4449,6 +4449,7 @@ sub process {
# XXX(foo);
# EXPORT_SYMBOL(something_foo);
my $name = $1;
+ $name =~ s/^\s*($Ident).*/$1/;
if ($stat =~ /^(?:.\s*}\s*\n)?.([A-Z_]+)\s*\(\s*($Ident)/ &&
$name =~ /^${Ident}_$2/) {
#print "FOO C name<$name>\n";