linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] kbuild: warn about headers using __[us]{8,16,32,64} types w/out linux/types.h
@ 2008-12-29 12:18 Mike Frysinger
  2008-12-29 13:24 ` Sam Ravnborg
  0 siblings, 1 reply; 6+ messages in thread
From: Mike Frysinger @ 2008-12-29 12:18 UTC (permalink / raw)
  To: Sam Ravnborg, linux-kernel

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;
+	}
+}
-- 
1.6.0.6


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH] kbuild: warn about headers using __[us]{8,16,32,64} types w/out linux/types.h
  2008-12-29 12:18 [PATCH] kbuild: warn about headers using __[us]{8,16,32,64} types w/out linux/types.h Mike Frysinger
@ 2008-12-29 13:24 ` Sam Ravnborg
  2008-12-29 20:27   ` Mike Frysinger
  0 siblings, 1 reply; 6+ messages in thread
From: Sam Ravnborg @ 2008-12-29 13:24 UTC (permalink / raw)
  To: Mike Frysinger; +Cc: linux-kernel

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;
+	}
+}
+

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH] kbuild: warn about headers using __[us]{8,16,32,64} types w/out linux/types.h
  2008-12-29 13:24 ` Sam Ravnborg
@ 2008-12-29 20:27   ` Mike Frysinger
  2008-12-30 10:43     ` Sam Ravnborg
  0 siblings, 1 reply; 6+ messages in thread
From: Mike Frysinger @ 2008-12-29 20:27 UTC (permalink / raw)
  To: Sam Ravnborg; +Cc: linux-kernel

[-- Attachment #1: Type: text/plain, Size: 1756 bytes --]

On Monday 29 December 2008 08:24:56 Sam Ravnborg wrote:
> 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.

i wasnt sure about that ... got pretty noisy the way i posted it :)

> Also I assume that include <asm/types.h> is also ok.

i dont think so ... does it really make sense for headers to be hitting 
asm/types.h anyways ?  shouldnt they all be going through linux/types.h ?  
checkpatch would certainly warn about it ...
-mike

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 835 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] kbuild: warn about headers using __[us]{8,16,32,64} types w/out linux/types.h
  2008-12-29 20:27   ` Mike Frysinger
@ 2008-12-30 10:43     ` Sam Ravnborg
  2008-12-30 11:50       ` Mike Frysinger
  2013-10-08 19:03       ` [PATCH] kbuild: warn about headers using __[us]{8, 16, 32, 64} " Geert Uytterhoeven
  0 siblings, 2 replies; 6+ messages in thread
From: Sam Ravnborg @ 2008-12-30 10:43 UTC (permalink / raw)
  To: Mike Frysinger; +Cc: linux-kernel

On Mon, Dec 29, 2008 at 03:27:51PM -0500, Mike Frysinger wrote:
> >
> > We do not need to warn for each line in a file. Only once is enough.
> 
> i wasnt sure about that ... got pretty noisy the way i posted it :)
> 
> > Also I assume that include <asm/types.h> is also ok.
> 
> i dont think so ... does it really make sense for headers to be hitting 
> asm/types.h anyways ?  shouldnt they all be going through linux/types.h ?  
> checkpatch would certainly warn about it ...

I added following patch which I have pushed out.

	Sam

>From 1f71c478dadbe1425eeaa704e50c7030ab011c5b Mon Sep 17 00:00:00 2001
From: Sam Ravnborg <sam@ravnborg.org>
Date: Tue, 30 Dec 2008 11:34:58 +0100
Subject: [PATCH] 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: Sam Ravnborg <sam@ravnborg.org>
---
 scripts/headers_check.pl |   47 +++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 44 insertions(+), 3 deletions(-)

diff --git a/scripts/headers_check.pl b/scripts/headers_check.pl
index 72924a7..b62c319 100644
--- a/scripts/headers_check.pl
+++ b/scripts/headers_check.pl
@@ -34,9 +34,11 @@ foreach my $file (@files) {
 	$lineno = 0;
 	while ($line = <FH>) {
 		$lineno++;
-		check_include();
-		check_prototypes();
-		check_config();
+		&check_include();
+		&check_asm_types();
+		&check_sizetypes();
+		&check_prototypes();
+		&check_config();
 	}
 	close FH;
 }
@@ -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;
+	}
+}
+
-- 
1.6.0.2.GIT


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH] kbuild: warn about headers using __[us]{8,16,32,64} types w/out linux/types.h
  2008-12-30 10:43     ` Sam Ravnborg
@ 2008-12-30 11:50       ` Mike Frysinger
  2013-10-08 19:03       ` [PATCH] kbuild: warn about headers using __[us]{8, 16, 32, 64} " Geert Uytterhoeven
  1 sibling, 0 replies; 6+ messages in thread
From: Mike Frysinger @ 2008-12-30 11:50 UTC (permalink / raw)
  To: Sam Ravnborg; +Cc: linux-kernel

[-- Attachment #1: Type: text/plain, Size: 2456 bytes --]

On Tuesday 30 December 2008 05:43:03 Sam Ravnborg wrote:
> On Mon, Dec 29, 2008 at 03:27:51PM -0500, Mike Frysinger wrote:
> > > We do not need to warn for each line in a file. Only once is enough.
> >
> > i wasnt sure about that ... got pretty noisy the way i posted it :)
> >
> > > Also I assume that include <asm/types.h> is also ok.
> >
> > i dont think so ... does it really make sense for headers to be hitting
> > asm/types.h anyways ?  shouldnt they all be going through linux/types.h ?
> > checkpatch would certainly warn about it ...
>
> I added following patch which I have pushed out.
>
> 	Sam
>
> From 1f71c478dadbe1425eeaa704e50c7030ab011c5b Mon Sep 17 00:00:00 2001
> From: Sam Ravnborg <sam@ravnborg.org>
> Date: Tue, 30 Dec 2008 11:34:58 +0100
> Subject: [PATCH] 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: Sam Ravnborg <sam@ravnborg.org>
> ---
>  scripts/headers_check.pl |   47
> +++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 44
> insertions(+), 3 deletions(-)
>
> diff --git a/scripts/headers_check.pl b/scripts/headers_check.pl
> index 72924a7..b62c319 100644
> --- a/scripts/headers_check.pl
> +++ b/scripts/headers_check.pl
> @@ -34,9 +34,11 @@ foreach my $file (@files) {
>  	$lineno = 0;
>  	while ($line = <FH>) {
>  		$lineno++;
> -		check_include();
> -		check_prototypes();
> -		check_config();
> +		&check_include();
> +		&check_asm_types();
> +		&check_sizetypes();
> +		&check_prototypes();
> +		&check_config();
>  	}
>  	close FH;
>  }
> @@ -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;
> +	}
> +}

you'll want to special case linux/types.h as it should be pulling in 
asm/types.h ... off the top of my head, that's the only one ...
-mike

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 835 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] kbuild: warn about headers using __[us]{8, 16, 32, 64} types w/out linux/types.h
  2008-12-30 10:43     ` Sam Ravnborg
  2008-12-30 11:50       ` Mike Frysinger
@ 2013-10-08 19:03       ` Geert Uytterhoeven
  1 sibling, 0 replies; 6+ messages in thread
From: Geert Uytterhoeven @ 2013-10-08 19:03 UTC (permalink / raw)
  To: Sam Ravnborg; +Cc: Mike Frysinger, Linux Kernel Development, linux-kbuild

On Tue, 30 Dec 2008, Sam Ravnborg wrote:
> Subject: [PATCH] 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 ($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;
> +	}

FWIW, this also triggers on __[us]{8,16,32,64} in comments instead of in
actual code (just got caught ;-).

Gr{oetje,eeting}s,

						Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
							    -- Linus Torvalds

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2013-10-08 19:03 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-12-29 12:18 [PATCH] kbuild: warn about headers using __[us]{8,16,32,64} types w/out linux/types.h Mike Frysinger
2008-12-29 13:24 ` Sam Ravnborg
2008-12-29 20:27   ` Mike Frysinger
2008-12-30 10:43     ` Sam Ravnborg
2008-12-30 11:50       ` Mike Frysinger
2013-10-08 19:03       ` [PATCH] kbuild: warn about headers using __[us]{8, 16, 32, 64} " Geert Uytterhoeven

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).