Commit ea4acbb1 authored by Joe Perches's avatar Joe Perches Committed by Linus Torvalds
Browse files

checkpatch: Add --strict test for function pointer calling style

Peter Hurley wrote:

The use of older function ptr calling style, (*fn)(), makes static
analysis more error-prone; replace with modern fn() style.

So make checkpatch emit a --strict test for that condition.

Update the unnecessary parentheses test for dereferencing
objects at the same time and create a $fix mechanism too.
Signed-off-by: default avatarJoe Perches <>
Cc: Peter Hurley <>
Signed-off-by: default avatarAndrew Morton <>
Signed-off-by: default avatarLinus Torvalds <>
parent e0d975b1
......@@ -3844,9 +3844,27 @@ sub process {
# ie: &(foo->bar) should be &foo->bar and *(foo->bar) should be *foo->bar
while ($line =~ /(?:[^&]&\s*|\*)\(\s*($Ident\s*(?:$Member\s*)+)\s*\)/g) {
"Unnecessary parentheses around $1\n" . $herecurr);
my $var = $1;
"Unnecessary parentheses around $var\n" . $herecurr) &&
$fix) {
$fixed[$fixlinenr] =~ s/\(\s*\Q$var\E\s*\)/$var/;
# check for unnecessary parentheses around function pointer uses
# ie: (foo->bar)(); should be foo->bar();
# but not "if (foo->bar) (" to avoid some false positives
if ($line =~ /(\bif\s*|)(\(\s*$Ident\s*(?:$Member\s*)+\))[ \t]*\(/ && $1 !~ /^if/) {
my $var = $2;
"Unnecessary parentheses around function pointer $var\n" . $herecurr) &&
$fix) {
my $var2 = deparenthesize($var);
$var2 =~ s/\s//g;
$fixed[$fixlinenr] =~ s/\Q$var\E/$var2/;
#goto labels aren't indented, allow a single space however
if ($line=~/^.\s+[A-Za-z\d_]+:(?![0-9]+)/ and
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment