lkml.org 
[lkml]   [2008]   [Dec]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
SubjectRe: [PATCH] kbuild: warn about headers using __[us]{8,16,32,64} types w/out linux/types.h
On Mon, Dec 29, 2008 at 07:18:47AM -0500, Mike Frysinger wrote:
> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
> ---
> 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;
+ }
+}
+

\
 
 \ /
  Last update: 2008-12-29 14:25    [W:4.523 / U:0.012 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site