Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+44 −3
Original line number Diff line number Diff line
@@ -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;
	}
}