Merge branch 'akpm' (patches from Andrew Morton)
Merge second patch-bomb from Andrew Morton: - a few hotfixes - drivers/dma updates - MAINTAINERS updates - Quite a lot of lib/ updates - checkpatch updates - binfmt updates - autofs4 - drivers/rtc/ - various small tweaks to less used filesystems - ipc/ updates - kernel/watchdog.c changes * emailed patches from Andrew Morton <akpm@linux-foundation.org>: (135 commits) mm: softdirty: enable write notifications on VMAs after VM_SOFTDIRTY cleared kernel/param: consolidate __{start,stop}___param[] in <linux/moduleparam.h> ia64: remove duplicate declarations of __per_cpu_start[] and __per_cpu_end[] frv: remove unused declarations of __start___ex_table and __stop___ex_table kvm: ensure hard lockup detection is disabled by default kernel/watchdog.c: control hard lockup detection default staging: rtl8192u: use %*pEn to escape buffer staging: rtl8192e: use %*pEn to escape buffer staging: wlan-ng: use %*pEhp to print SN lib80211: remove unused print_ssid() wireless: hostap: proc: print properly escaped SSID wireless: ipw2x00: print SSID via %*pE wireless: libertas: print esaped string via %*pE lib/vsprintf: add %*pE[achnops] format specifier lib / string_helpers: introduce string_escape_mem() lib / string_helpers: refactoring the test suite lib / string_helpers: move documentation to c-file include/linux: remove strict_strto* definitions arch/x86/mm/numa.c: fix boot failure when all nodes are hotpluggable fs: check bh blocknr earlier when searching lru ...
This commit is contained in:
@@ -9,7 +9,8 @@ use strict;
|
||||
use POSIX;
|
||||
|
||||
my $P = $0;
|
||||
$P =~ s@.*/@@g;
|
||||
$P =~ s@(.*)/@@g;
|
||||
my $D = $1;
|
||||
|
||||
my $V = '0.32';
|
||||
|
||||
@@ -43,6 +44,8 @@ my $configuration_file = ".checkpatch.conf";
|
||||
my $max_line_length = 80;
|
||||
my $ignore_perl_version = 0;
|
||||
my $minimum_perl_version = 5.10.0;
|
||||
my $min_conf_desc_length = 4;
|
||||
my $spelling_file = "$D/spelling.txt";
|
||||
|
||||
sub help {
|
||||
my ($exitcode) = @_;
|
||||
@@ -63,6 +66,7 @@ Options:
|
||||
--types TYPE(,TYPE2...) show only these comma separated message types
|
||||
--ignore TYPE(,TYPE2...) ignore various comma separated message types
|
||||
--max-line-length=n set the maximum line length, if exceeded, warn
|
||||
--min-conf-desc-length=n set the min description length, if shorter, warn
|
||||
--show-types show the message "types" in the output
|
||||
--root=PATH PATH to the kernel tree root
|
||||
--no-summary suppress the per-file summary
|
||||
@@ -131,6 +135,7 @@ GetOptions(
|
||||
'types=s' => \@use,
|
||||
'show-types!' => \$show_types,
|
||||
'max-line-length=i' => \$max_line_length,
|
||||
'min-conf-desc-length=i' => \$min_conf_desc_length,
|
||||
'root=s' => \$root,
|
||||
'summary!' => \$summary,
|
||||
'mailback!' => \$mailback,
|
||||
@@ -425,10 +430,35 @@ foreach my $entry (@mode_permission_funcs) {
|
||||
|
||||
our $allowed_asm_includes = qr{(?x:
|
||||
irq|
|
||||
memory
|
||||
memory|
|
||||
time|
|
||||
reboot
|
||||
)};
|
||||
# memory.h: ARM has a custom one
|
||||
|
||||
# Load common spelling mistakes and build regular expression list.
|
||||
my $misspellings;
|
||||
my @spelling_list;
|
||||
my %spelling_fix;
|
||||
open(my $spelling, '<', $spelling_file)
|
||||
or die "$P: Can't open $spelling_file for reading: $!\n";
|
||||
while (<$spelling>) {
|
||||
my $line = $_;
|
||||
|
||||
$line =~ s/\s*\n?$//g;
|
||||
$line =~ s/^\s*//g;
|
||||
|
||||
next if ($line =~ m/^\s*#/);
|
||||
next if ($line =~ m/^\s*$/);
|
||||
|
||||
my ($suspect, $fix) = split(/\|\|/, $line);
|
||||
|
||||
push(@spelling_list, $suspect);
|
||||
$spelling_fix{$suspect} = $fix;
|
||||
}
|
||||
close($spelling);
|
||||
$misspellings = join("|", @spelling_list);
|
||||
|
||||
sub build_types {
|
||||
my $mods = "(?x: \n" . join("|\n ", @modifierList) . "\n)";
|
||||
my $all = "(?x: \n" . join("|\n ", @typeList) . "\n)";
|
||||
@@ -2215,6 +2245,23 @@ sub process {
|
||||
"8-bit UTF-8 used in possible commit log\n" . $herecurr);
|
||||
}
|
||||
|
||||
# Check for various typo / spelling mistakes
|
||||
if ($in_commit_log || $line =~ /^\+/) {
|
||||
while ($rawline =~ /(?:^|[^a-z@])($misspellings)(?:$|[^a-z@])/gi) {
|
||||
my $typo = $1;
|
||||
my $typo_fix = $spelling_fix{lc($typo)};
|
||||
$typo_fix = ucfirst($typo_fix) if ($typo =~ /^[A-Z]/);
|
||||
$typo_fix = uc($typo_fix) if ($typo =~ /^[A-Z]+$/);
|
||||
my $msg_type = \&WARN;
|
||||
$msg_type = \&CHK if ($file);
|
||||
if (&{$msg_type}("TYPO_SPELLING",
|
||||
"'$typo' may be misspelled - perhaps '$typo_fix'?\n" . $herecurr) &&
|
||||
$fix) {
|
||||
$fixed[$fixlinenr] =~ s/(^|[^A-Za-z@])($typo)($|[^A-Za-z@])/$1$typo_fix$3/;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# ignore non-hunk lines and lines being removed
|
||||
next if (!$hunk_line || $line =~ /^-/);
|
||||
|
||||
@@ -2283,8 +2330,10 @@ sub process {
|
||||
}
|
||||
$length++;
|
||||
}
|
||||
WARN("CONFIG_DESCRIPTION",
|
||||
"please write a paragraph that describes the config symbol fully\n" . $herecurr) if ($is_start && $is_end && $length < 4);
|
||||
if ($is_start && $is_end && $length < $min_conf_desc_length) {
|
||||
WARN("CONFIG_DESCRIPTION",
|
||||
"please write a paragraph that describes the config symbol fully\n" . $herecurr);
|
||||
}
|
||||
#print "is_start<$is_start> is_end<$is_end> length<$length>\n";
|
||||
}
|
||||
|
||||
@@ -2341,7 +2390,7 @@ sub process {
|
||||
}
|
||||
|
||||
# check we are in a valid source file if not then ignore this hunk
|
||||
next if ($realfile !~ /\.(h|c|s|S|pl|sh)$/);
|
||||
next if ($realfile !~ /\.(h|c|s|S|pl|sh|dtsi|dts)$/);
|
||||
|
||||
#line length limit
|
||||
if ($line =~ /^\+/ && $prevrawline !~ /\/\*\*/ &&
|
||||
@@ -2402,7 +2451,7 @@ sub process {
|
||||
}
|
||||
|
||||
# check we are in a valid source file C or perl if not then ignore this hunk
|
||||
next if ($realfile !~ /\.(h|c|pl)$/);
|
||||
next if ($realfile !~ /\.(h|c|pl|dtsi|dts)$/);
|
||||
|
||||
# at the beginning of a line any tabs must come first and anything
|
||||
# more than 8 must use tabs.
|
||||
@@ -2424,7 +2473,7 @@ sub process {
|
||||
"please, no space before tabs\n" . $herevet) &&
|
||||
$fix) {
|
||||
while ($fixed[$fixlinenr] =~
|
||||
s/(^\+.*) {8,8}+\t/$1\t\t/) {}
|
||||
s/(^\+.*) {8,8}\t/$1\t\t/) {}
|
||||
while ($fixed[$fixlinenr] =~
|
||||
s/(^\+.*) +\t/$1\t/) {}
|
||||
}
|
||||
@@ -2592,10 +2641,14 @@ sub process {
|
||||
next if ($realfile !~ /\.(h|c)$/);
|
||||
|
||||
# check indentation of any line with a bare else
|
||||
# (but not if it is a multiple line "if (foo) return bar; else return baz;")
|
||||
# if the previous line is a break or return and is indented 1 tab more...
|
||||
if ($sline =~ /^\+([\t]+)(?:}[ \t]*)?else(?:[ \t]*{)?\s*$/) {
|
||||
my $tabs = length($1) + 1;
|
||||
if ($prevline =~ /^\+\t{$tabs,$tabs}(?:break|return)\b/) {
|
||||
if ($prevline =~ /^\+\t{$tabs,$tabs}break\b/ ||
|
||||
($prevline =~ /^\+\t{$tabs,$tabs}return\b/ &&
|
||||
defined $lines[$linenr] &&
|
||||
$lines[$linenr] !~ /^[ \+]\t{$tabs,$tabs}return/)) {
|
||||
WARN("UNNECESSARY_ELSE",
|
||||
"else is not generally useful after a break or return\n" . $hereprev);
|
||||
}
|
||||
@@ -3752,7 +3805,6 @@ sub process {
|
||||
if (ERROR("SPACING",
|
||||
"space prohibited before that close parenthesis ')'\n" . $herecurr) &&
|
||||
$fix) {
|
||||
print("fixlinenr: <$fixlinenr> fixed[fixlinenr]: <$fixed[$fixlinenr]>\n");
|
||||
$fixed[$fixlinenr] =~
|
||||
s/\s+\)/\)/;
|
||||
}
|
||||
@@ -4060,12 +4112,17 @@ sub process {
|
||||
my $cnt = $realcnt;
|
||||
my ($off, $dstat, $dcond, $rest);
|
||||
my $ctx = '';
|
||||
my $has_flow_statement = 0;
|
||||
my $has_arg_concat = 0;
|
||||
($dstat, $dcond, $ln, $cnt, $off) =
|
||||
ctx_statement_block($linenr, $realcnt, 0);
|
||||
$ctx = $dstat;
|
||||
#print "dstat<$dstat> dcond<$dcond> cnt<$cnt> off<$off>\n";
|
||||
#print "LINE<$lines[$ln-1]> len<" . length($lines[$ln-1]) . "\n";
|
||||
|
||||
$has_flow_statement = 1 if ($ctx =~ /\b(goto|return)\b/);
|
||||
$has_arg_concat = 1 if ($ctx =~ /\#\#/);
|
||||
|
||||
$dstat =~ s/^.\s*\#\s*define\s+$Ident(?:\([^\)]*\))?\s*//;
|
||||
$dstat =~ s/$;//g;
|
||||
$dstat =~ s/\\\n.//g;
|
||||
@@ -4126,10 +4183,23 @@ sub process {
|
||||
"Macros with multiple statements should be enclosed in a do - while loop\n" . "$herectx");
|
||||
} else {
|
||||
ERROR("COMPLEX_MACRO",
|
||||
"Macros with complex values should be enclosed in parenthesis\n" . "$herectx");
|
||||
"Macros with complex values should be enclosed in parentheses\n" . "$herectx");
|
||||
}
|
||||
}
|
||||
|
||||
# check for macros with flow control, but without ## concatenation
|
||||
# ## concatenation is commonly a macro that defines a function so ignore those
|
||||
if ($has_flow_statement && !$has_arg_concat) {
|
||||
my $herectx = $here . "\n";
|
||||
my $cnt = statement_rawlines($ctx);
|
||||
|
||||
for (my $n = 0; $n < $cnt; $n++) {
|
||||
$herectx .= raw_line($linenr, $n) . "\n";
|
||||
}
|
||||
WARN("MACRO_WITH_FLOW_CONTROL",
|
||||
"Macros with flow control statements should be avoided\n" . "$herectx");
|
||||
}
|
||||
|
||||
# check for line continuations outside of #defines, preprocessor #, and asm
|
||||
|
||||
} else {
|
||||
@@ -4338,6 +4408,12 @@ sub process {
|
||||
"Use of volatile is usually wrong: see Documentation/volatile-considered-harmful.txt\n" . $herecurr);
|
||||
}
|
||||
|
||||
# concatenated string without spaces between elements
|
||||
if ($line =~ /"X+"[A-Z_]+/ || $line =~ /[A-Z_]+"X+"/) {
|
||||
CHK("CONCATENATED_STRING",
|
||||
"Concatenated strings should use spaces between elements\n" . $herecurr);
|
||||
}
|
||||
|
||||
# warn about #if 0
|
||||
if ($line =~ /^.\s*\#\s*if\s+0\b/) {
|
||||
CHK("REDUNDANT_CODE",
|
||||
@@ -4371,6 +4447,17 @@ sub process {
|
||||
}
|
||||
}
|
||||
|
||||
# check for logging functions with KERN_<LEVEL>
|
||||
if ($line !~ /printk\s*\(/ &&
|
||||
$line =~ /\b$logFunctions\s*\(.*\b(KERN_[A-Z]+)\b/) {
|
||||
my $level = $1;
|
||||
if (WARN("UNNECESSARY_KERN_LEVEL",
|
||||
"Possible unnecessary $level\n" . $herecurr) &&
|
||||
$fix) {
|
||||
$fixed[$fixlinenr] =~ s/\s*$level\s*//;
|
||||
}
|
||||
}
|
||||
|
||||
# check for bad placement of section $InitAttribute (e.g.: __initdata)
|
||||
if ($line =~ /(\b$InitAttribute\b)/) {
|
||||
my $attr = $1;
|
||||
|
@@ -1,8 +1,8 @@
|
||||
#!/bin/sh
|
||||
|
||||
if [ $# -lt 1 ]
|
||||
if [ $# -lt 2 ]
|
||||
then
|
||||
echo "Usage: headers_install.sh OUTDIR SRCDIR [FILES...]
|
||||
echo "Usage: headers_install.sh OUTDIR SRCDIR [FILES...]"
|
||||
echo
|
||||
echo "Prepares kernel header files for use by user space, by removing"
|
||||
echo "all compiler.h definitions and #includes, removing any"
|
||||
|
@@ -103,7 +103,7 @@ do_func(Elf_Ehdr *ehdr, char const *const fname, table_sort_t custom_sort)
|
||||
Elf_Sym *sort_needed_sym;
|
||||
Elf_Shdr *sort_needed_sec;
|
||||
Elf_Rel *relocs = NULL;
|
||||
int relocs_size;
|
||||
int relocs_size = 0;
|
||||
uint32_t *sort_done_location;
|
||||
const char *secstrtab;
|
||||
const char *strtab;
|
||||
|
1042
scripts/spelling.txt
Normal file
1042
scripts/spelling.txt
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user