aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/checkpatch.pl
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/checkpatch.pl')
-rwxr-xr-xscripts/checkpatch.pl43
1 files changed, 33 insertions, 10 deletions
diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index 955183ada37a..8fda3b3f7be8 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -240,9 +240,8 @@ our $NonptrType;
240our $Type; 240our $Type;
241our $Declare; 241our $Declare;
242 242
243our $UTF8 = qr { 243our $NON_ASCII_UTF8 = qr{
244 [\x09\x0A\x0D\x20-\x7E] # ASCII 244 [\xC2-\xDF][\x80-\xBF] # non-overlong 2-byte
245 | [\xC2-\xDF][\x80-\xBF] # non-overlong 2-byte
246 | \xE0[\xA0-\xBF][\x80-\xBF] # excluding overlongs 245 | \xE0[\xA0-\xBF][\x80-\xBF] # excluding overlongs
247 | [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} # straight 3-byte 246 | [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} # straight 3-byte
248 | \xED[\x80-\x9F][\x80-\xBF] # excluding surrogates 247 | \xED[\x80-\x9F][\x80-\xBF] # excluding surrogates
@@ -251,6 +250,11 @@ our $UTF8 = qr {
251 | \xF4[\x80-\x8F][\x80-\xBF]{2} # plane 16 250 | \xF4[\x80-\x8F][\x80-\xBF]{2} # plane 16
252}x; 251}x;
253 252
253our $UTF8 = qr{
254 [\x09\x0A\x0D\x20-\x7E] # ASCII
255 | $NON_ASCII_UTF8
256}x;
257
254our $typeTypedefs = qr{(?x: 258our $typeTypedefs = qr{(?x:
255 (?:__)?(?:u|s|be|le)(?:8|16|32|64)| 259 (?:__)?(?:u|s|be|le)(?:8|16|32|64)|
256 atomic_t 260 atomic_t
@@ -1330,6 +1334,9 @@ sub process {
1330 my $signoff = 0; 1334 my $signoff = 0;
1331 my $is_patch = 0; 1335 my $is_patch = 0;
1332 1336
1337 my $in_header_lines = 1;
1338 my $in_commit_log = 0; #Scanning lines before patch
1339
1333 our @report = (); 1340 our @report = ();
1334 our $cnt_lines = 0; 1341 our $cnt_lines = 0;
1335 our $cnt_error = 0; 1342 our $cnt_error = 0;
@@ -1497,7 +1504,6 @@ sub process {
1497 if ($line =~ /^diff --git.*?(\S+)$/) { 1504 if ($line =~ /^diff --git.*?(\S+)$/) {
1498 $realfile = $1; 1505 $realfile = $1;
1499 $realfile =~ s@^([^/]*)/@@; 1506 $realfile =~ s@^([^/]*)/@@;
1500
1501 } elsif ($line =~ /^\+\+\+\s+(\S+)/) { 1507 } elsif ($line =~ /^\+\+\+\s+(\S+)/) {
1502 $realfile = $1; 1508 $realfile = $1;
1503 $realfile =~ s@^([^/]*)/@@; 1509 $realfile =~ s@^([^/]*)/@@;
@@ -1536,6 +1542,7 @@ sub process {
1536# Check the patch for a signoff: 1542# Check the patch for a signoff:
1537 if ($line =~ /^\s*signed-off-by:/i) { 1543 if ($line =~ /^\s*signed-off-by:/i) {
1538 $signoff++; 1544 $signoff++;
1545 $in_commit_log = 0;
1539 } 1546 }
1540 1547
1541# Check signature styles 1548# Check signature styles
@@ -1613,6 +1620,21 @@ sub process {
1613 "Invalid UTF-8, patch and commit message should be encoded in UTF-8\n" . $hereptr); 1620 "Invalid UTF-8, patch and commit message should be encoded in UTF-8\n" . $hereptr);
1614 } 1621 }
1615 1622
1623# Check if it's the start of a commit log
1624# (not a header line and we haven't seen the patch filename)
1625 if ($in_header_lines && $realfile =~ /^$/ &&
1626 $rawline !~ /^(commit\b|from\b|\w+:).+$/i) {
1627 $in_header_lines = 0;
1628 $in_commit_log = 1;
1629 }
1630
1631# Still not yet in a patch, check for any UTF-8
1632 if ($in_commit_log && $realfile =~ /^$/ &&
1633 $rawline =~ /$NON_ASCII_UTF8/) {
1634 CHK("UTF8_BEFORE_PATCH",
1635 "8-bit UTF-8 used in possible commit log\n" . $herecurr);
1636 }
1637
1616# ignore non-hunk lines and lines being removed 1638# ignore non-hunk lines and lines being removed
1617 next if (!$hunk_line || $line =~ /^-/); 1639 next if (!$hunk_line || $line =~ /^-/);
1618 1640
@@ -2588,7 +2610,8 @@ sub process {
2588 } else { 2610 } else {
2589 $cast = $cast2; 2611 $cast = $cast2;
2590 } 2612 }
2591 WARN("$call() should probably be ${call}_t($cast, $arg1, $arg2)\n" . $herecurr); 2613 WARN("MINMAX",
2614 "$call() should probably be ${call}_t($cast, $arg1, $arg2)\n" . $herecurr);
2592 } 2615 }
2593 } 2616 }
2594 2617
@@ -2945,11 +2968,11 @@ sub process {
2945 } 2968 }
2946 } 2969 }
2947 if ($level == 0 && $block =~ /^\s*\{/ && !$allowed) { 2970 if ($level == 0 && $block =~ /^\s*\{/ && !$allowed) {
2948 my $herectx = $here . "\n";; 2971 my $herectx = $here . "\n";
2949 my $cnt = statement_rawlines($block); 2972 my $cnt = statement_rawlines($block);
2950 2973
2951 for (my $n = 0; $n < $cnt; $n++) { 2974 for (my $n = 0; $n < $cnt; $n++) {
2952 $herectx .= raw_line($linenr, $n) . "\n";; 2975 $herectx .= raw_line($linenr, $n) . "\n";
2953 } 2976 }
2954 2977
2955 WARN("BRACES", 2978 WARN("BRACES",
@@ -3164,10 +3187,10 @@ sub process {
3164 "consider using a completion\n" . $herecurr); 3187 "consider using a completion\n" . $herecurr);
3165 3188
3166 } 3189 }
3167# recommend kstrto* over simple_strto* 3190# recommend kstrto* over simple_strto* and strict_strto*
3168 if ($line =~ /\bsimple_(strto.*?)\s*\(/) { 3191 if ($line =~ /\b((simple|strict)_(strto(l|ll|ul|ull)))\s*\(/) {
3169 WARN("CONSIDER_KSTRTO", 3192 WARN("CONSIDER_KSTRTO",
3170 "consider using kstrto* in preference to simple_$1\n" . $herecurr); 3193 "$1 is obsolete, use k$3 instead\n" . $herecurr);
3171 } 3194 }
3172# check for __initcall(), use device_initcall() explicitly please 3195# check for __initcall(), use device_initcall() explicitly please
3173 if ($line =~ /^.\s*__initcall\s*\(/) { 3196 if ($line =~ /^.\s*__initcall\s*\(/) {