diff mbox

kbuild: fix headers_check.pl

Message ID 20090605021419.7905.89870.sendpatchset@localhost.localdomain (mailing list archive)
State New, archived
Headers show

Commit Message

Amerigo Wang June 5, 2009, 2:12 a.m. UTC
'extern' checking information is not clear, refine it.
Plus, fix a comment.

Signed-off-by: WANG Cong <amwang@redhat.com>
Cc: Sam Ravnborg <sam@ravnborg.org>

----
--
To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Comments

Arnd Bergmann June 5, 2009, 9:21 a.m. UTC | #1
On Friday 05 June 2009, Amerigo Wang wrote:
> -sub check_prototypes
> +sub check_declarations
>  {
> -       if ($line =~ m/^\s*extern\b/) {
> -               printf STDERR "$filename:$lineno: extern's make no sense in userspace\n";
> +       if ($line =~m/^\s*extern\b/) {
> +               if ($line =~ m/^\s*extern\b.*\(.*\)/) {
> +                       printf STDERR "$filename:$lineno: extern's make no sense in userspace\n";
> +               } else {
> +                       printf STDERR "$filename:$lineno: exporting global variable to userspace is suspicious\n";
> +               }
>         }
>  }

I don't think we really need that distinction here, the old
text applies to both. But please find a way to get rid of
the "extern's".

http://angryflower.com/bobsqu.gif

	Arnd <><
--
To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Amerigo Wang June 5, 2009, 10:22 a.m. UTC | #2
Arnd Bergmann wrote:
> On Friday 05 June 2009, Amerigo Wang wrote:
>   
>> -sub check_prototypes
>> +sub check_declarations
>>  {
>> -       if ($line =~ m/^\s*extern\b/) {
>> -               printf STDERR "$filename:$lineno: extern's make no sense in userspace\n";
>> +       if ($line =~m/^\s*extern\b/) {
>> +               if ($line =~ m/^\s*extern\b.*\(.*\)/) {
>> +                       printf STDERR "$filename:$lineno: extern's make no sense in userspace\n";
>> +               } else {
>> +                       printf STDERR "$filename:$lineno: exporting global variable to userspace is suspicious\n";
>> +               }
>>         }
>>  }
>>     
>
> I don't think we really need that distinction here, the old
> text applies to both.
Even for function declarations?
> But please find a way to get rid of
> the "extern's".
>   
Here, that one has already been removed by other patch ...

--
To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Artem Bityutskiy June 5, 2009, 11:26 a.m. UTC | #3
Arnd Bergmann wrote:
> On Friday 05 June 2009, Amerigo Wang wrote:
>> -sub check_prototypes
>> +sub check_declarations
>>  {
>> -       if ($line =~ m/^\s*extern\b/) {
>> -               printf STDERR "$filename:$lineno: extern's make no sense in userspace\n";
>> +       if ($line =~m/^\s*extern\b/) {
>> +               if ($line =~ m/^\s*extern\b.*\(.*\)/) {
>> +                       printf STDERR "$filename:$lineno: extern's make no sense in userspace\n";
>> +               } else {
>> +                       printf STDERR "$filename:$lineno: exporting global variable to userspace is suspicious\n";
>> +               }
>>         }
>>  }
> 
> I don't think we really need that distinction here, the old
> text applies to both. But please find a way to get rid of
> the "extern's".
> 
> http://angryflower.com/bobsqu.gif

Hehe, made me smile :-)
--
To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Arnd Bergmann June 5, 2009, 12:31 p.m. UTC | #4
On Friday 05 June 2009, Amerigo Wang wrote:
> 
> >
> > I don't think we really need that distinction here, the old
> > text applies to both.
>
> Even for function declarations?

Yes. Any use of 'extern' in a kernel header file by definition
refers to a symbol that is defined in the kernel and therefore
not accessibly in user space. It is the same problem for
variables and functions, with the complication that leaving
out the 'extern' statement on a function declaration will
hide it from this check, while leaving it out on a variable
declaration turns it into a definition.

	Arnd <><
--
To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/scripts/headers_check.pl b/scripts/headers_check.pl
index 56f90a4..3923888 100644
--- a/scripts/headers_check.pl
+++ b/scripts/headers_check.pl
@@ -2,7 +2,7 @@ 
 #
 # headers_check.pl execute a number of trivial consistency checks
 #
-# Usage: headers_check.pl dir [files...]
+# Usage: headers_check.pl dir arch [files...]
 # dir:   dir to look for included files
 # arch:  architecture
 # files: list of files to check
@@ -37,7 +37,7 @@  foreach my $file (@files) {
 		&check_include();
 		&check_asm_types();
 		&check_sizetypes();
-		&check_prototypes();
+		&check_declarations();
 		# Dropped for now. Too much noise &check_config();
 	}
 	close FH;
@@ -61,10 +61,14 @@  sub check_include
 	}
 }
 
-sub check_prototypes
+sub check_declarations
 {
-	if ($line =~ m/^\s*extern\b/) {
-		printf STDERR "$filename:$lineno: extern's make no sense in userspace\n";
+	if ($line =~m/^\s*extern\b/) {
+		if ($line =~ m/^\s*extern\b.*\(.*\)/) {
+			printf STDERR "$filename:$lineno: extern's make no sense in userspace\n";
+		} else {
+			printf STDERR "$filename:$lineno: exporting global variable to userspace is suspicious\n";
+		}
 	}
 }