Skip to content

Commit

Permalink
checkpatch: check for common memset parameter issues against statments
Browse files Browse the repository at this point in the history
Move the memset checks over to work against the statement.  Also add
checks for 0 and 1 used as lengths.  Generally these indicate badly
ordered parameters.

Signed-off-by: Andy Whitcroft <[email protected]>
Cc: Joe Perches <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
  • Loading branch information
Andy Whitcroft authored and torvalds committed Jan 11, 2012
1 parent f74bd19 commit 554e165
Showing 1 changed file with 22 additions and 6 deletions.
28 changes: 22 additions & 6 deletions scripts/checkpatch.pl
Original file line number Diff line number Diff line change
Expand Up @@ -3120,6 +3120,28 @@ sub process {
"Avoid line continuations in quoted strings\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)
Expand Down Expand Up @@ -3291,12 +3313,6 @@ sub process {
WARN("EXPORTED_WORLD_WRITABLE",
"Exporting world writable files is usually an error. Consider more restrictive permissions.\n" . $herecurr);
}

# Check for memset with swapped arguments
if ($line =~ /memset.*\,(\ |)(0x|)0(\ |0|)\);/) {
ERROR("MEMSET",
"memset size is 3rd argument, not the second.\n" . $herecurr);
}
}

# If we have no input at all, then there is nothing to report on
Expand Down

0 comments on commit 554e165

Please sign in to comment.