Commit 483b4121 authored by Sam Ravnborg's avatar Sam Ravnborg

kbuild: add checks for include of linux/types in userspace headers

If we see __[us](8|16|32|64) then we must include <linux/types.h>
If wee see include of <asm/types.h> then we recommend <linux/types.h>

Original script from Mike but modified by me.

Cc: Mike Frysinger <vapier@gentoo.org>
Signed-off-by: default avatarSam Ravnborg <sam@ravnborg.org>
parent 521b0c77
...@@ -34,9 +34,11 @@ foreach my $file (@files) { ...@@ -34,9 +34,11 @@ foreach my $file (@files) {
$lineno = 0; $lineno = 0;
while ($line = <FH>) { while ($line = <FH>) {
$lineno++; $lineno++;
check_include(); &check_include();
check_prototypes(); &check_asm_types();
check_config(); &check_sizetypes();
&check_prototypes();
&check_config();
} }
close FH; close FH;
} }
...@@ -73,3 +75,42 @@ sub check_config ...@@ -73,3 +75,42 @@ sub check_config
} }
} }
my $linux_asm_types;
sub check_asm_types()
{
if ($lineno == 1) {
$linux_asm_types = 0;
} elsif ($linux_asm_types >= 1) {
return;
}
if ($line =~ m/^\s*#\s*include\s+<asm\/types.h>/) {
$linux_asm_types = 1;
printf STDERR "$filename:$lineno: " .
"include of <linux/types.h> is preferred over <asm/types.h>\n"
# Warn until headers are all fixed
#$ret = 1;
}
}
my $linux_types;
sub check_sizetypes
{
if ($lineno == 1) {
$linux_types = 0;
} elsif ($linux_types >= 1) {
return;
}
if ($line =~ m/^\s*#\s*include\s+<linux\/types.h>/) {
$linux_types = 1;
return;
}
if ($line =~ m/__[us](8|16|32|64)\b/) {
printf STDERR "$filename:$lineno: " .
"found __[us]{8,16,32,64} type " .
"without #include <linux/types.h>\n";
$linux_types = 2;
# Warn until headers are all fixed
#$ret = 1;
}
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment