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 <apw@canonical.com> Cc: Dwaipayan Ray <dwaipayanray1@gmail.com> Cc: Lukas Bulwahn <lukas.bulwahn@gmail.com> Fixed-by: Joe Perches <joe@perches.com> Signed-off-by: Kees Cook <keescook@chromium.org> Acked-by: Gustavo A. R. Silva <gustavoars@kernel.org> Acked-by: Joe Perches <joe@perches.com> Link: https://lore.kernel.org/r/20230517204530.never.151-kees@kernel.org
1 parent 8762606 commit 8515e4a

1 file changed

Lines changed: 10 additions & 0 deletions

File tree

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)