mirror of https://gitee.com/openkylin/linux.git
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: Joe Perches <joe@perches.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
cb426e99ff
commit
e6176fa472
|
@ -347,15 +347,20 @@ our $UTF8 = qr{
|
|||
| $NON_ASCII_UTF8
|
||||
}x;
|
||||
|
||||
our $typeC99Typedefs = qr{(?:__)?(?:[us]_?)?int_?(?:8|16|32|64)_t};
|
||||
our $typeOtherOSTypedefs = qr{(?x:
|
||||
u_(?:char|short|int|long) | # bsd
|
||||
u(?:nchar|short|int|long) # sysv
|
||||
)};
|
||||
|
||||
our $typeTypedefs = qr{(?x:
|
||||
our $typeKernelTypedefs = qr{(?x:
|
||||
(?:__)?(?:u|s|be|le)(?:8|16|32|64)|
|
||||
atomic_t
|
||||
)};
|
||||
our $typeTypedefs = qr{(?x:
|
||||
$typeC99Typedefs\b|
|
||||
$typeOtherOSTypedefs\b|
|
||||
$typeKernelTypedefs\b
|
||||
)};
|
||||
|
||||
our $logFunctions = qr{(?x:
|
||||
printk(?:_ratelimited|_once|)|
|
||||
|
@ -516,7 +521,6 @@ sub build_types {
|
|||
my $allWithAttr = "(?x: \n" . join("|\n ", @typeListWithAttr) . "\n)";
|
||||
$Modifier = qr{(?:$Attribute|$Sparse|$mods)};
|
||||
$BasicType = qr{
|
||||
(?:$typeOtherOSTypedefs\b)|
|
||||
(?:$typeTypedefs\b)|
|
||||
(?:${all}\b)
|
||||
}x;
|
||||
|
@ -524,7 +528,6 @@ sub build_types {
|
|||
(?:$Modifier\s+|const\s+)*
|
||||
(?:
|
||||
(?:typeof|__typeof__)\s*\([^\)]*\)|
|
||||
(?:$typeOtherOSTypedefs\b)|
|
||||
(?:$typeTypedefs\b)|
|
||||
(?:${all}\b)
|
||||
)
|
||||
|
@ -542,7 +545,6 @@ sub build_types {
|
|||
(?:
|
||||
(?:typeof|__typeof__)\s*\([^\)]*\)|
|
||||
(?:$typeTypedefs\b)|
|
||||
(?:$typeOtherOSTypedefs\b)|
|
||||
(?:${allWithAttr}\b)
|
||||
)
|
||||
(?:\s+$Modifier|\s+const)*
|
||||
|
@ -3264,7 +3266,6 @@ sub process {
|
|||
$line !~ /\btypedef\s+$Type\s*\(\s*\*?$Ident\s*\)\s*\(/ &&
|
||||
$line !~ /\btypedef\s+$Type\s+$Ident\s*\(/ &&
|
||||
$line !~ /\b$typeTypedefs\b/ &&
|
||||
$line !~ /\b$typeOtherOSTypedefs\b/ &&
|
||||
$line !~ /\b__bitwise(?:__|)\b/) {
|
||||
WARN("NEW_TYPEDEFS",
|
||||
"do not add new typedefs\n" . $herecurr);
|
||||
|
@ -4980,6 +4981,24 @@ sub process {
|
|||
"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(&)
|
||||
if ($line =~ /\bsizeof\s*\(\s*\&/) {
|
||||
WARN("SIZEOF_ADDRESS",
|
||||
|
|
Loading…
Reference in New Issue