Re: [PATCH] kbuild: warn about headers using __[us]{8,16,32,64} types w/out linux/types.h

From: Sam Ravnborg
Date: Mon Dec 29 2008 - 08:23:35 EST


On Mon, Dec 29, 2008 at 07:18:47AM -0500, Mike Frysinger wrote:
> Signed-off-by: Mike Frysinger <vapier@xxxxxxxxxx>
> ---
> scripts/headers_check.pl | 20 ++++++++++++++++++++
> 1 files changed, 20 insertions(+), 0 deletions(-)
>
> diff --git a/scripts/headers_check.pl b/scripts/headers_check.pl
> index bdd9fb6..5036319 100644
> --- a/scripts/headers_check.pl
> +++ b/scripts/headers_check.pl
> @@ -37,6 +37,7 @@ foreach my $file (@files) {
> check_include();
> check_prototypes();
> check_config();
> + check_sizetypes();
> }
> close FH;
> }
> @@ -72,3 +73,22 @@ sub check_config
> printf STDERR "$filename:$lineno: leaks CONFIG_$1 to userspace where it is not valid\n";
> }
> }
> +
> +my $linux_types;
> +sub check_sizetypes
> +{
> + if ($lineno == 1) {
> + $linux_types = 0;
> + } elsif ($linux_types) {
> + 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 w/out #include <linux/types.h>\n";
> + # Warn until headers are all fixed
> + #$ret = 1;
> + }
> +}

We do not need to warn for each line in a file. Only once is enough.
Also I assume that include <asm/types.h> is also ok.

It looks like this now. Acceptable?

kbuild-next.git is updated now (but not with this patch).

Sam

diff --git a/scripts/headers_check.pl b/scripts/headers_check.pl
index 72924a7..27a0d1f 100644
--- a/scripts/headers_check.pl
+++ b/scripts/headers_check.pl
@@ -35,6 +35,7 @@ foreach my $file (@files) {
while ($line = <FH>) {
$lineno++;
check_include();
+ check_sizetypes();
check_prototypes();
check_config();
}
@@ -73,3 +74,27 @@ sub check_config
}
}

+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/^\s*#\s*include\s+<asm\/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 w/out #include <linux/types.h>\n";
+ $linux_types = 2;
+ # Warn until headers are all fixed
+ #$ret = 1;
+ }
+}
+
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/