aboutsummaryrefslogtreecommitdiffstats
path: root/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/checkpatch.pl28
1 files changed, 20 insertions, 8 deletions
diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index 7bed4ed2c519..45eb0ae98eba 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -10,7 +10,7 @@ use strict;
10my $P = $0; 10my $P = $0;
11$P =~ s@.*/@@g; 11$P =~ s@.*/@@g;
12 12
13my $V = '0.26'; 13my $V = '0.27';
14 14
15use Getopt::Long qw(:config no_auto_abbrev); 15use Getopt::Long qw(:config no_auto_abbrev);
16 16
@@ -411,13 +411,15 @@ sub ctx_statement_block {
411 411
412 my $type = ''; 412 my $type = '';
413 my $level = 0; 413 my $level = 0;
414 my @stack = ([$type, $level]); 414 my @stack = ();
415 my $p; 415 my $p;
416 my $c; 416 my $c;
417 my $len = 0; 417 my $len = 0;
418 418
419 my $remainder; 419 my $remainder;
420 while (1) { 420 while (1) {
421 @stack = (['', 0]) if ($#stack == -1);
422
421 #warn "CSB: blk<$blk> remain<$remain>\n"; 423 #warn "CSB: blk<$blk> remain<$remain>\n";
422 # If we are about to drop off the end, pull in more 424 # If we are about to drop off the end, pull in more
423 # context. 425 # context.
@@ -1663,7 +1665,7 @@ sub process {
1663 # Should not end with a space. 1665 # Should not end with a space.
1664 $to =~ s/\s+$//; 1666 $to =~ s/\s+$//;
1665 # '*'s should not have spaces between. 1667 # '*'s should not have spaces between.
1666 while ($to =~ s/(.)\s\*/$1\*/) { 1668 while ($to =~ s/\*\s+\*/\*\*/) {
1667 } 1669 }
1668 1670
1669 #print "from<$from> to<$to>\n"; 1671 #print "from<$from> to<$to>\n";
@@ -1678,7 +1680,7 @@ sub process {
1678 # Should not end with a space. 1680 # Should not end with a space.
1679 $to =~ s/\s+$//; 1681 $to =~ s/\s+$//;
1680 # '*'s should not have spaces between. 1682 # '*'s should not have spaces between.
1681 while ($to =~ s/(.)\s\*/$1\*/) { 1683 while ($to =~ s/\*\s+\*/\*\*/) {
1682 } 1684 }
1683 # Modifiers should have spaces. 1685 # Modifiers should have spaces.
1684 $to =~ s/(\b$Modifier$)/$1 /; 1686 $to =~ s/(\b$Modifier$)/$1 /;
@@ -2014,7 +2016,11 @@ sub process {
2014 2016
2015 # Flatten any parentheses 2017 # Flatten any parentheses
2016 $value =~ s/\)\(/\) \(/g; 2018 $value =~ s/\)\(/\) \(/g;
2017 while ($value !~ /(?:$Ident|-?$Constant)\s*$Compare\s*(?:$Ident|-?$Constant)/ && $value =~ s/\([^\(\)]*\)/1/) { 2019 while ($value =~ s/\[[^\{\}]*\]/1/ ||
2020 $value !~ /(?:$Ident|-?$Constant)\s*
2021 $Compare\s*
2022 (?:$Ident|-?$Constant)/x &&
2023 $value =~ s/\([^\(\)]*\)/1/) {
2018 } 2024 }
2019 2025
2020 if ($value =~ /^(?:$Ident|-?$Constant)$/) { 2026 if ($value =~ /^(?:$Ident|-?$Constant)$/) {
@@ -2102,6 +2108,11 @@ sub process {
2102 ERROR("trailing statements should be on next line\n" . $herecurr); 2108 ERROR("trailing statements should be on next line\n" . $herecurr);
2103 } 2109 }
2104 } 2110 }
2111# if should not continue a brace
2112 if ($line =~ /}\s*if\b/) {
2113 ERROR("trailing statements should be on next line\n" .
2114 $herecurr);
2115 }
2105# case and default should not have general statements after them 2116# case and default should not have general statements after them
2106 if ($line =~ /^.\s*(?:case\s*.*|default\s*):/g && 2117 if ($line =~ /^.\s*(?:case\s*.*|default\s*):/g &&
2107 $line !~ /\G(?: 2118 $line !~ /\G(?:
@@ -2516,9 +2527,10 @@ sub process {
2516 WARN("please use device_initcall() instead of __initcall()\n" . $herecurr); 2527 WARN("please use device_initcall() instead of __initcall()\n" . $herecurr);
2517 } 2528 }
2518# check for struct file_operations, ensure they are const. 2529# check for struct file_operations, ensure they are const.
2519 if ($line =~ /\bstruct\s+file_operations\b/ && 2530 if ($line !~ /\bconst\b/ &&
2520 $line !~ /\bconst\b/) { 2531 $line =~ /\bstruct\s+(file_operations|seq_operations)\b/) {
2521 WARN("struct file_operations should normally be const\n" . $herecurr); 2532 WARN("struct $1 should normally be const\n" .
2533 $herecurr);
2522 } 2534 }
2523 2535
2524# use of NR_CPUS is usually wrong 2536# use of NR_CPUS is usually wrong