aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/checkpatch.pl
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/checkpatch.pl')
-rwxr-xr-xscripts/checkpatch.pl31
1 files changed, 31 insertions, 0 deletions
diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index a4d74344d805..bd88f11b0953 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -1382,6 +1382,21 @@ sub process {
1382 ERROR("trailing whitespace\n" . $herevet); 1382 ERROR("trailing whitespace\n" . $herevet);
1383 } 1383 }
1384 1384
1385# check for Kconfig help text having a real description
1386 if ($realfile =~ /Kconfig/ &&
1387 $line =~ /\+?\s*(---)?help(---)?$/) {
1388 my $length = 0;
1389 for (my $l = $linenr; defined($lines[$l]); $l++) {
1390 my $f = $lines[$l];
1391 $f =~ s/#.*//;
1392 $f =~ s/^\s+//;
1393 next if ($f =~ /^$/);
1394 last if ($f =~ /^\s*config\s/);
1395 $length++;
1396 }
1397 WARN("please write a paragraph that describes the config symbol fully\n" . $herecurr) if ($length < 4);
1398 }
1399
1385# check we are in a valid source file if not then ignore this hunk 1400# check we are in a valid source file if not then ignore this hunk
1386 next if ($realfile !~ /\.(h|c|s|S|pl|sh)$/); 1401 next if ($realfile !~ /\.(h|c|s|S|pl|sh)$/);
1387 1402
@@ -2586,6 +2601,11 @@ sub process {
2586 CHK("architecture specific defines should be avoided\n" . $herecurr); 2601 CHK("architecture specific defines should be avoided\n" . $herecurr);
2587 } 2602 }
2588 2603
2604# Check that the storage class is at the beginning of a declaration
2605 if ($line =~ /\b$Storage\b/ && $line !~ /^.\s*$Storage\b/) {
2606 WARN("storage class should be at the beginning of the declaration\n" . $herecurr)
2607 }
2608
2589# check the location of the inline attribute, that it is between 2609# check the location of the inline attribute, that it is between
2590# storage class and type. 2610# storage class and type.
2591 if ($line =~ /\b$Type\s+$Inline\b/ || 2611 if ($line =~ /\b$Type\s+$Inline\b/ ||
@@ -2656,6 +2676,7 @@ sub process {
2656# check for semaphores used as mutexes 2676# check for semaphores used as mutexes
2657 if ($line =~ /^.\s*init_MUTEX_LOCKED\s*\(/) { 2677 if ($line =~ /^.\s*init_MUTEX_LOCKED\s*\(/) {
2658 WARN("consider using a completion\n" . $herecurr); 2678 WARN("consider using a completion\n" . $herecurr);
2679
2659 } 2680 }
2660# recommend strict_strto* over simple_strto* 2681# recommend strict_strto* over simple_strto*
2661 if ($line =~ /\bsimple_(strto.*?)\s*\(/) { 2682 if ($line =~ /\bsimple_(strto.*?)\s*\(/) {
@@ -2740,6 +2761,16 @@ sub process {
2740 WARN("use of in_atomic() is incorrect outside core kernel code\n" . $herecurr); 2761 WARN("use of in_atomic() is incorrect outside core kernel code\n" . $herecurr);
2741 } 2762 }
2742 } 2763 }
2764
2765# check for lockdep_set_novalidate_class
2766 if ($line =~ /^.\s*lockdep_set_novalidate_class\s*\(/ ||
2767 $line =~ /__lockdep_no_validate__\s*\)/ ) {
2768 if ($realfile !~ m@^kernel/lockdep@ &&
2769 $realfile !~ m@^include/linux/lockdep@ &&
2770 $realfile !~ m@^drivers/base/core@) {
2771 ERROR("lockdep_no_validate class is reserved for device->mutex.\n" . $herecurr);
2772 }
2773 }
2743 } 2774 }
2744 2775
2745 # If we have no input at all, then there is nothing to report on 2776 # If we have no input at all, then there is nothing to report on