Commit e6176fa4 authored by Joe Perches's avatar Joe Perches Committed by Linus Torvalds

checkpatch: add --strict warning for c99 fixed size typedefs : int<size>_t

Using declarations like u_int16_t in kernel code is not preferred.

Suggest the kernel sized types instead of the c99 types when not in the
uapi directory.

Add a $typeC99Typedefs variable for the types to check and neaten the
other typedef variables.
Signed-off-by: default avatarJoe Perches <joe@perches.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent cb426e99
...@@ -347,15 +347,20 @@ our $UTF8 = qr{ ...@@ -347,15 +347,20 @@ our $UTF8 = qr{
| $NON_ASCII_UTF8 | $NON_ASCII_UTF8
}x; }x;
our $typeC99Typedefs = qr{(?:__)?(?:[us]_?)?int_?(?:8|16|32|64)_t};
our $typeOtherOSTypedefs = qr{(?x: our $typeOtherOSTypedefs = qr{(?x:
u_(?:char|short|int|long) | # bsd u_(?:char|short|int|long) | # bsd
u(?:nchar|short|int|long) # sysv u(?:nchar|short|int|long) # sysv
)}; )};
our $typeKernelTypedefs = qr{(?x:
our $typeTypedefs = qr{(?x:
(?:__)?(?:u|s|be|le)(?:8|16|32|64)| (?:__)?(?:u|s|be|le)(?:8|16|32|64)|
atomic_t atomic_t
)}; )};
our $typeTypedefs = qr{(?x:
$typeC99Typedefs\b|
$typeOtherOSTypedefs\b|
$typeKernelTypedefs\b
)};
our $logFunctions = qr{(?x: our $logFunctions = qr{(?x:
printk(?:_ratelimited|_once|)| printk(?:_ratelimited|_once|)|
...@@ -516,7 +521,6 @@ sub build_types { ...@@ -516,7 +521,6 @@ sub build_types {
my $allWithAttr = "(?x: \n" . join("|\n ", @typeListWithAttr) . "\n)"; my $allWithAttr = "(?x: \n" . join("|\n ", @typeListWithAttr) . "\n)";
$Modifier = qr{(?:$Attribute|$Sparse|$mods)}; $Modifier = qr{(?:$Attribute|$Sparse|$mods)};
$BasicType = qr{ $BasicType = qr{
(?:$typeOtherOSTypedefs\b)|
(?:$typeTypedefs\b)| (?:$typeTypedefs\b)|
(?:${all}\b) (?:${all}\b)
}x; }x;
...@@ -524,7 +528,6 @@ sub build_types { ...@@ -524,7 +528,6 @@ sub build_types {
(?:$Modifier\s+|const\s+)* (?:$Modifier\s+|const\s+)*
(?: (?:
(?:typeof|__typeof__)\s*\([^\)]*\)| (?:typeof|__typeof__)\s*\([^\)]*\)|
(?:$typeOtherOSTypedefs\b)|
(?:$typeTypedefs\b)| (?:$typeTypedefs\b)|
(?:${all}\b) (?:${all}\b)
) )
...@@ -542,7 +545,6 @@ sub build_types { ...@@ -542,7 +545,6 @@ sub build_types {
(?: (?:
(?:typeof|__typeof__)\s*\([^\)]*\)| (?:typeof|__typeof__)\s*\([^\)]*\)|
(?:$typeTypedefs\b)| (?:$typeTypedefs\b)|
(?:$typeOtherOSTypedefs\b)|
(?:${allWithAttr}\b) (?:${allWithAttr}\b)
) )
(?:\s+$Modifier|\s+const)* (?:\s+$Modifier|\s+const)*
...@@ -3264,7 +3266,6 @@ sub process { ...@@ -3264,7 +3266,6 @@ sub process {
$line !~ /\btypedef\s+$Type\s*\(\s*\*?$Ident\s*\)\s*\(/ && $line !~ /\btypedef\s+$Type\s*\(\s*\*?$Ident\s*\)\s*\(/ &&
$line !~ /\btypedef\s+$Type\s+$Ident\s*\(/ && $line !~ /\btypedef\s+$Type\s+$Ident\s*\(/ &&
$line !~ /\b$typeTypedefs\b/ && $line !~ /\b$typeTypedefs\b/ &&
$line !~ /\b$typeOtherOSTypedefs\b/ &&
$line !~ /\b__bitwise(?:__|)\b/) { $line !~ /\b__bitwise(?:__|)\b/) {
WARN("NEW_TYPEDEFS", WARN("NEW_TYPEDEFS",
"do not add new typedefs\n" . $herecurr); "do not add new typedefs\n" . $herecurr);
...@@ -4980,6 +4981,24 @@ sub process { ...@@ -4980,6 +4981,24 @@ sub process {
"Using weak declarations can have unintended link defects\n" . $herecurr); "Using weak declarations can have unintended link defects\n" . $herecurr);
} }
# check for c99 types like uint8_t used outside of uapi/
if ($realfile !~ m@\binclude/uapi/@ &&
$line =~ /\b($Declare)\s*$Ident\s*[=;,\[]/) {
my $type = $1;
if ($type =~ /\b($typeC99Typedefs)\b/) {
$type = $1;
my $kernel_type = 'u';
$kernel_type = 's' if ($type =~ /^_*[si]/);
$type =~ /(\d+)/;
$kernel_type .= $1;
if (CHK("PREFER_KERNEL_TYPES",
"Prefer kernel type '$kernel_type' over '$type'\n" . $herecurr) &&
$fix) {
$fixed[$fixlinenr] =~ s/\b$type\b/$kernel_type/;
}
}
}
# check for sizeof(&) # check for sizeof(&)
if ($line =~ /\bsizeof\s*\(\s*\&/) { if ($line =~ /\bsizeof\s*\(\s*\&/) {
WARN("SIZEOF_ADDRESS", WARN("SIZEOF_ADDRESS",
......
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