Skip to content

Commit 8515e4a

Browse files
committed
checkpatch: Check for 0-length and 1-element arrays
Fake flexible arrays have been deprecated since last millennium. Proper C99 flexible arrays must be used throughout the kernel so CONFIG_FORTIFY_SOURCE and CONFIG_UBSAN_BOUNDS can provide proper array bounds checking. Cc: Andy Whitcroft <[email protected]> Cc: Dwaipayan Ray <[email protected]> Cc: Lukas Bulwahn <[email protected]> Fixed-by: Joe Perches <[email protected]> Signed-off-by: Kees Cook <[email protected]> Acked-by: Gustavo A. R. Silva <[email protected]> Acked-by: Joe Perches <[email protected]> Link: https://lore.kernel.org/r/[email protected]
1 parent 8762606 commit 8515e4a

File tree

1 file changed

+10
-0
lines changed

1 file changed

+10
-0
lines changed

scripts/checkpatch.pl

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7430,6 +7430,16 @@ sub process {
74307430
}
74317431
}
74327432

7433+
# check for array definition/declarations that should use flexible arrays instead
7434+
if ($sline =~ /^[\+ ]\s*\}(?:\s*__packed)?\s*;\s*$/ &&
7435+
$prevline =~ /^\+\s*(?:\}(?:\s*__packed\s*)?|$Type)\s*$Ident\s*\[\s*(0|1)\s*\]\s*;\s*$/) {
7436+
if (ERROR("FLEXIBLE_ARRAY",
7437+
"Use C99 flexible arrays - see https://docs.kernel.org/process/deprecated.html#zero-length-and-one-element-arrays\n" . $hereprev) &&
7438+
$1 == '0' && $fix) {
7439+
$fixed[$fixlinenr - 1] =~ s/\[\s*0\s*\]/[]/;
7440+
}
7441+
}
7442+
74337443
# nested likely/unlikely calls
74347444
if ($line =~ /\b(?:(?:un)?likely)\s*\(\s*!?\s*(IS_ERR(?:_OR_NULL|_VALUE)?|WARN)/) {
74357445
WARN("LIKELY_MISUSE",

0 commit comments

Comments
 (0)