diff options
author | Antony Pavlov <antonynpavlov@gmail.com> | 2018-12-05 16:21:56 +0300 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2018-12-06 08:56:09 +0100 |
commit | f27701ad378503459d387abbadd320a8c065b892 (patch) | |
tree | 90b3c360f0b553d15a7c19ccf986336fe17199c1 /scripts | |
parent | 05d7f8e66f3f6e34edf7cbd3e1b389a5dc839acd (diff) | |
download | barebox-f27701ad378503459d387abbadd320a8c065b892.tar.gz barebox-f27701ad378503459d387abbadd320a8c065b892.tar.xz |
checkpatch.pl: check for common memset parameter issues against statements
Based on these Linux kernel commits
> 309c00c73f053a90 checkpatch: warn about memset with swapped arguments
> 554e165cf32610ec checkpatch: check for common memset parameter issues against statments
Signed-off-by: Antony Pavlov <antonynpavlov@gmail.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'scripts')
-rwxr-xr-x | scripts/checkpatch.pl | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl index 4b9b9d06f3..d8a8e5004f 100755 --- a/scripts/checkpatch.pl +++ b/scripts/checkpatch.pl @@ -2961,6 +2961,28 @@ sub process { "sizeof(& should be avoided\n" . $herecurr); } +# Check for misused memsets + if (defined $stat && $stat =~ /\bmemset\s*\((.*)\)/s) { + my $args = $1; + + # Flatten any parentheses and braces + while ($args =~ s/\([^\(\)]*\)/10/s || + $args =~ s/\{[^\{\}]*\}/10/s || + $args =~ s/\[[^\[\]]*\]/10/s) + { + } + # Extract the simplified arguments. + my ($ms_addr, $ms_val, $ms_size) = + split(/\s*,\s*/, $args); + if ($ms_size =~ /^(0x|)0$/i) { + ERROR("MEMSET", + "memset size is 3rd argument, not the second.\n" . $herecurr); + } elsif ($ms_size =~ /^(0x|)1$/i) { + WARN("MEMSET", + "single byte memset is suspicious. Swapped 2nd/3rd argument?\n" . $herecurr); + } + } + # check for new externs in .c files. if ($realfile =~ /\.c$/ && defined $stat && $stat =~ /^.\s*(?:extern\s+)?$Type\s+($Ident)(\s*)\(/s) |