<p>Martin Roth has uploaded this change for <strong>review</strong>.</p><p><a href="https://review.coreboot.org/21581">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">util/lint: update checkpatch & spelling.txt to upstream versions<br><br>- Update checkpatch.pl to version 0547fa58<br>(checkpatch: add 6 missing types to --list-types)<br>- Update spelling.txt to version d9f91f8<br>(scripts/spelling.txt: add a bunch more spelling mistakes)<br>- Fix an additional unescaped left brace in a regex - causes warnings<br>in new versions of perl.<br><br>Change-Id: Ic443099e90a46280f18d58799afc72d00dc83793<br>Signed-off-by: Martin Roth <gaumless@gmail.com><br>---<br>M util/lint/checkpatch.pl<br>M util/lint/spelling.txt<br>2 files changed, 311 insertions(+), 116 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://review.coreboot.org:29418/coreboot refs/changes/81/21581/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">diff --git a/util/lint/checkpatch.pl b/util/lint/checkpatch.pl<br>index adcb0fa..e9a0cc4 100755<br>--- a/util/lint/checkpatch.pl<br>+++ b/util/lint/checkpatch.pl<br>@@ -1,4 +1,4 @@<br>-#!/usr/bin/perl -w<br>+#!/usr/bin/env perl<br> # (c) 2001, Dave Jones. (the file handling bit)<br> # (c) 2005, Joel Schopp <jschopp@austin.ibm.com> (the ugly bit)<br> # (c) 2007,2008, Andy Whitcroft <apw@uk.ibm.com> (new conditions, test suite)<br>@@ -6,6 +6,7 @@<br> # Licensed under the terms of the GNU GPL License version 2<br> <br> use strict;<br>+use warnings;<br> use POSIX;<br> use File::Basename;<br> use Cwd 'abs_path';<br>@@ -56,7 +57,8 @@<br> my $codespell = 0;<br> my $codespellfile = "/usr/share/codespell/dictionary.txt";<br> my $conststructsfile = "$D/const_structs.checkpatch";<br>-my $color = 1;<br>+my $typedefsfile = "";<br>+my $color = "auto";<br> my $allow_c99_comments = 1;<br> <br> # For coreboot jenkins<br>@@ -122,7 +124,9 @@<br>   --codespell                Use the codespell dictionary for spelling/typos<br>                              (default:/usr/share/codespell/dictionary.txt)<br>   --codespellfile            Use this codespell dictionary<br>-  --color                    Use colors when output is STDOUT (default: on)<br>+  --typedefsfile             Read additional types from this file<br>+  --color[=WHEN]             Use colors 'always', 'never', or only when output<br>+                             is a terminal ('auto'). Default is 'auto'.<br>   -h, --help, --version      display this help and exit<br> <br> When FILE is - read standard input.<br>@@ -150,7 +154,8 @@<br>      close($script);<br> <br>    my @types = ();<br>-      for ($text =~ /\b(?:(?:CHK|WARN|ERROR)\s*\(\s*"([^"]+)")/g) {<br>+ # Also catch when type or level is passed through a variable<br>+ for ($text =~ /(?:(?:\bCHK|\bWARN|\bERROR|&\{\$msg_level})\s*\(|\$msg_type\s*=)\s*"([^"]+)"/g) {<br>           push (@types, $_);<br>    }<br>     @types = sort(uniq(@types));<br>@@ -188,6 +193,14 @@<br>    unshift(@ARGV, @conf_args) if @conf_args;<br> }<br> <br>+# Perl's Getopt::Long allows options to take optional arguments after a space.<br>+# Prevent --color by itself from consuming other arguments<br>+foreach (@ARGV) {<br>+       if ($_ eq "--color" || $_ eq "-color") {<br>+         $_ = "--color=$color";<br>+     }<br>+}<br>+<br> GetOptions(<br>        'q|quiet+'      => \$quiet,<br>        'tree!'         => \$tree,<br>@@ -218,7 +231,10 @@<br>   'test-only=s'   => \$tst_only,<br>     'codespell!'    => \$codespell,<br>    'codespellfile=s'       => \$codespellfile,<br>-       'color!'        => \$color,<br>+       'typedefsfile=s'        => \$typedefsfile,<br>+        'color=s'       => \$color,<br>+       'no-color'      => \$color,  #keep old behaviors of -nocolor<br>+      'nocolor'       => \$color,  #keep old behaviors of -nocolor<br>       'h|help'        => \$help,<br>         'version'       => \$help<br> ) or help(1);<br>@@ -242,6 +258,18 @@<br> #if no filenames are given, push '-' to read patch from stdin<br> if ($#ARGV < 0) {<br>     push(@ARGV, '-');<br>+}<br>+<br>+if ($color =~ /^[01]$/) {<br>+ $color = !$color;<br>+} elsif ($color =~ /^always$/i) {<br>+        $color = 1;<br>+} elsif ($color =~ /^never$/i) {<br>+       $color = 0;<br>+} elsif ($color =~ /^auto$/i) {<br>+        $color = (-t STDOUT);<br>+} else {<br>+     die "Invalid color mode: $color\n";<br> }<br> <br> sub hash_save_array_words {<br>@@ -639,28 +667,43 @@<br> <br> $misspellings = join("|", sort keys %spelling_fix) if keys %spelling_fix;<br> <br>-my $const_structs = "";<br>-if (open(my $conststructs, '<', $conststructsfile)) {<br>- while (<$conststructs>) {<br>-              my $line = $_;<br>+sub read_words {<br>+    my ($wordsRef, $file) = @_;<br> <br>-               $line =~ s/\s*\n?$//g;<br>-               $line =~ s/^\s*//g;<br>+  if (open(my $words, '<', $file)) {<br>+                while (<$words>) {<br>+                     my $line = $_;<br> <br>-            next if ($line =~ m/^\s*#/);<br>-         next if ($line =~ m/^\s*$/);<br>-         if ($line =~ /\s/) {<br>-                 print("$conststructsfile: '$line' invalid - ignored\n");<br>-                   next;<br>+                        $line =~ s/\s*\n?$//g;<br>+                       $line =~ s/^\s*//g;<br>+<br>+                       next if ($line =~ m/^\s*#/);<br>+                 next if ($line =~ m/^\s*$/);<br>+                 if ($line =~ /\s/) {<br>+                         print("$file: '$line' invalid - ignored\n");<br>+                               next;<br>+                        }<br>+<br>+                 $$wordsRef .= '|' if ($$wordsRef ne "");<br>+                   $$wordsRef .= $line;<br>          }<br>-<br>-         $const_structs .= '|' if ($const_structs ne "");<br>-           $const_structs .= $line;<br>+             close($file);<br>+                return 1;<br>     }<br>-    close($conststructsfile);<br>-} else {<br>- warn "No structs that should be const will be found - file '$conststructsfile': $!\n";<br>+<br>+  return 0;<br> }<br>+<br>+my $const_structs = "";<br>+read_words(\$const_structs, $conststructsfile)<br>+    or warn "No structs that should be const will be found - file '$conststructsfile': $!\n";<br>+<br>+my $typeOtherTypedefs = "";<br>+if (length($typedefsfile)) {<br>+    read_words(\$typeOtherTypedefs, $typedefsfile)<br>+           or warn "No additional types will be considered - file '$typedefsfile': $!\n";<br>+}<br>+$typeTypedefs .= '|' . $typeOtherTypedefs if ($typeOtherTypedefs ne "");<br> <br> sub build_types {<br>  my $mods = "(?x:  \n" . join("|\n  ", (@modifierList, @modifierListFile)) . "\n)";<br>@@ -724,7 +767,7 @@<br> <br> our $declaration_macros = qr{(?x:<br>  (?:$Storage\s+)?(?:[A-Z_][A-Z0-9]*_){0,2}(?:DEFINE|DECLARE)(?:_[A-Z0-9]+){1,6}\s*\(|<br>- (?:$Storage\s+)?LIST_HEAD\s*\(|<br>+      (?:$Storage\s+)?[HLP]?LIST_HEAD\s*\(|<br>         (?:$Storage\s+)?${Type}\s+uninitialized_var\s*\(<br> )};<br> <br>@@ -858,6 +901,7 @@<br> #                  echo "commit $(cut -c 1-12,41-)"<br> #              done<br>  } elsif ($lines[0] =~ /^fatal: ambiguous argument '$commit': unknown revision or path not in the working tree\./) {<br>+          $id = undef;<br>  } else {<br>              $id = substr($lines[0], 0, 12);<br>               $desc = substr($lines[0], 41);<br>@@ -905,9 +949,8 @@<br> }<br> <br> my $vname;<br>-for my $f (@ARGV) {<br>+for my $filename (@ARGV) {<br>    my $FILE;<br>-    my ($filename) = ($f =~ /^(.*)$/);<br>    if ($git) {<br>           open($FILE, '-|', "git format-patch -M --stdout -1 $filename") ||<br>                   die "$P: $filename: git format-patch failed - $!\n";<br>@@ -1880,7 +1923,7 @@<br>                 return 0;<br>     }<br>     my $output = '';<br>-     if (-t STDOUT && $color) {<br>+   if ($color) {<br>                 if ($level eq 'ERROR') {<br>                      $output .= RED;<br>               } elsif ($level eq 'WARNING') {<br>@@ -1891,10 +1934,10 @@<br>      }<br>     $output .= $prefix . $level . ':';<br>    if ($show_types) {<br>-           $output .= BLUE if (-t STDOUT && $color);<br>+            $output .= BLUE if ($color);<br>          $output .= "$type:";<br>        }<br>-    $output .= RESET if (-t STDOUT && $color);<br>+   $output .= RESET if ($color);<br>         $output .= ' ' . $msg . "\n";<br> <br>    if ($showfile) {<br>@@ -2212,8 +2255,7 @@<br>                       }<br>                     #next;<br>                }<br>-            if ($rawline=~/^\@\@ -\d+(?:,\d+)? \+(\d+)(,(\d+))? \@\@(.*)/) {<br>-                     my $context = $4;<br>+            if ($rawline =~ /^\@\@ -\d+(?:,\d+)? \+(\d+)(,(\d+))? \@\@/) {<br>                        $realline=$1-1;<br>                       if (defined $2) {<br>                             $realcnt=$3+1;<br>@@ -2221,12 +2263,6 @@<br>                                $realcnt=1+1;<br>                         }<br>                     $in_comment = 0;<br>-<br>-                  if ($context =~ /\b(\w+)\s*\(/) {<br>-                            $context_function = $1;<br>-                      } else {<br>-                             undef $context_function;<br>-                     }<br> <br>                  # Guestimate if this is a continuing comment.  Run<br>                    # the context looking for a comment "edge".  If this<br>@@ -2298,7 +2334,8 @@<br> <br> #extract the line range in the file after the patch is applied<br>             if (!$in_commit_log &&<br>-                   $line =~ /^\@\@ -\d+(?:,\d+)? \+(\d+)(,(\d+))? \@\@/) {<br>+              $line =~ /^\@\@ -\d+(?:,\d+)? \+(\d+)(,(\d+))? \@\@(.*)/) {<br>+                      my $context = $4;<br>                     $is_patch = 1;<br>                        $first_line = $linenr + 1;<br>                    $realline=$1-1;<br>@@ -2314,6 +2351,11 @@<br>                       %suppress_whiletrailers = ();<br>                         %suppress_export = ();<br>                        $suppress_statement = 0;<br>+                     if ($context =~ /\b(\w+)\s*\(/) {<br>+                            $context_function = $1;<br>+                      } else {<br>+                             undef $context_function;<br>+                     }<br>                     next;<br> <br> # track the line number as we move through the hunk, note that<br>@@ -2567,6 +2609,7 @@<br> # Check for git id commit length and improperly formed commit descriptions<br>                 if ($in_commit_log && !$commit_log_possible_stack_dump &&<br>                 $line !~ /^\s*(?:Link|Patchwork|http|https|BugLink):/i &&<br>+                    $line !~ /^This reverts commit [0-9a-f]{7,40}/ &&<br>                     ($line =~ /\bcommit\s+[0-9a-f]{5,}\b/i ||<br>                      ($line =~ /(?:\s|^)[0-9a-f]{12,40}(?:[\s"'\(\[]|$)/i &&<br>                       $line !~ /[\<\[][0-9a-f]{12,40}[\>\]]/i &&<br>@@ -2615,7 +2658,8 @@<br>                         ($id, $description) = git_commit_info($orig_commit,<br>                                                         $id, $orig_desc);<br> <br>-                   if ($short || $long || $space || $case || ($orig_desc ne $description) || !$hasparens) {<br>+                     if (defined($id) &&<br>+                     ($short || $long || $space || $case || ($orig_desc ne $description) || !$hasparens)) {<br>                             ERROR("GIT_COMMIT_ID",<br>                                    "Please use git commit description style 'commit <12+ chars of sha1> (\"<title line>\")' - ie: '${init_char}ommit $id (\"$description\")'\n" . $herecurr);<br>                    }<br>@@ -2656,8 +2700,8 @@<br> # Check if it's the start of a commit log<br> # (not a header line and we haven't seen the patch filename)<br>           if ($in_header_lines && $realfile =~ /^$/ &&<br>-             !($rawline =~ /^\s+\S/ ||<br>-                      $rawline =~ /^(commit\b|from\b|[\w-]+:).*$/i)) {<br>+                   !($rawline =~ /^\s+(?:\S|$)/ ||<br>+                $rawline =~ /^(?:commit\b|from\b|[\w-]+:)/i)) {<br>                         $in_header_lines = 0;<br>                         $in_commit_log = 1;<br>                   $has_commit_log = 1;<br>@@ -2699,10 +2743,10 @@<br>                                 my $typo_fix = $spelling_fix{lc($typo)};<br>                              $typo_fix = ucfirst($typo_fix) if ($typo =~ /^[A-Z]/);<br>                                $typo_fix = uc($typo_fix) if ($typo =~ /^[A-Z]+$/);<br>-                          my $msg_type = \&WARN;<br>-                           $msg_type = \&CHK if ($file);<br>-                            if (&{$msg_type}("TYPO_SPELLING",<br>-                                               "'$typo' may be misspelled - perhaps '$typo_fix'?\n" . $herecurr) &&<br>+                              my $msg_level = \&WARN;<br>+                          $msg_level = \&CHK if ($file);<br>+                           if (&{$msg_level}("TYPO_SPELLING",<br>+                                               "'$typo' may be misspelled - perhaps '$typo_fix'?\n" . $herecurr) &&<br>                                  $fix) {<br>                                   $fixed[$fixlinenr] =~ s/(^|[^A-Za-z@])($typo)($|[^A-Za-z@])/$1$typo_fix$3/;<br>                           }<br>@@ -2737,10 +2781,10 @@<br>                $rawline =~ /\b59\s+Temple\s+Pl/i ||<br>                  $rawline =~ /\b51\s+Franklin\s+St/i) {<br>                    my $herevet = "$here\n" . cat_vet($rawline) . "\n";<br>-                      my $msg_type = \&ERROR;<br>-                  $msg_type = \&CHK if ($file);<br>-                    &{$msg_type}("FSF_MAILING_ADDRESS",<br>-                                 "Do not include the paragraph about writing to the Free Software Foundation's mailing address from the sample GPL notice. The FSF has changed addresses in the past, and may do so again. Linux already includes a copy of the GPL.\n" . $herevet)<br>+                        my $msg_level = \&ERROR;<br>+                 $msg_level = \&CHK if ($file);<br>+                   &{$msg_level}("FSF_MAILING_ADDRESS",<br>+                                 "Do not include the paragraph about writing to the Free Software Foundation's mailing address from the sample GPL notice. The FSF has changed addresses in the past, and may do so again. Linux already includes a copy of the GPL.\n" . $herevet)<br>                }<br> <br> # check for Kconfig help text having a real description<br>@@ -2785,11 +2829,15 @@<br>                       #print "is_start<$is_start> is_end<$is_end> length<$length>\n";<br>           }<br> <br>-# discourage the addition of CONFIG_EXPERIMENTAL in Kconfig.<br>-          if ($realfile =~ /Kconfig/ &&<br>-                    $line =~ /.\s*depends on\s+.*\bEXPERIMENTAL\b/) {<br>-                        WARN("CONFIG_EXPERIMENTAL",<br>-                             "Use of CONFIG_EXPERIMENTAL is deprecated. For alternatives, see https://lkml.org/lkml/2012/10/23/580\n");<br>+# check for MAINTAINERS entries that don't have the right form<br>+               if ($realfile =~ /^MAINTAINERS$/ &&<br>+              $rawline =~ /^\+[A-Z]:/ &&<br>+                   $rawline !~ /^\+[A-Z]:\t\S/) {<br>+                   if (WARN("MAINTAINERS_STYLE",<br>+                               "MAINTAINERS entries use one tab after TYPE:\n" . $herecurr) &&<br>+                       $fix) {<br>+                          $fixed[$fixlinenr] =~ s/^(\+[A-Z]):\s*/$1:\t/;<br>+                       }<br>             }<br> <br> # discourage the use of boolean for type definition attributes of Kconfig options<br>@@ -2855,7 +2903,7 @@<br> #     #defines that are a single string<br> #<br> # There are 3 different line length message types:<br>-# LONG_LINE_COMMENT        a comment starts before but extends beyond $max_linelength<br>+# LONG_LINE_COMMENT        a comment starts before but extends beyond $max_line_length<br> # LONG_LINE_STRING        a string starts before but extends beyond $max_line_length<br> # LONG_LINE                all other lines longer than $max_line_length<br> #<br>@@ -2973,7 +3021,7 @@<br> <br> # check multi-line statement indentation matches previous line<br>           if ($^V && $^V ge 5.10.0 &&<br>-              $prevline =~ /^\+([ \t]*)((?:$c90_Keywords(?:\s+if)\s*)|(?:$Declare\s*)?(?:$Ident|\(\s*\*\s*$Ident\s*\))\s*|$Ident\s*=\s*$Ident\s*)\(.*(\&\&|\|\||,)\s*$/) {<br>+                 $prevline =~ /^\+([ \t]*)((?:$c90_Keywords(?:\s+if)\s*)|(?:$Declare\s*)?(?:$Ident|\(\s*\*\s*$Ident\s*\))\s*|(?:\*\s*)*$Lval\s*=\s*$Ident\s*)\(.*(\&\&|\|\||,)\s*$/) {<br>                     $prevline =~ /^\+(\t*)(.*)$/;<br>                         my $oldindent = $1;<br>                   my $rest = $2;<br>@@ -3161,6 +3209,17 @@<br> # check we are in a valid C source file if not then ignore this hunk<br>                 next if ($realfile !~ /\.(h|c)$/);<br> <br>+# check if this appears to be the start function declaration, save the name<br>+          if ($sline =~ /^\+\{\s*$/ &&<br>+             $prevline =~ /^\+(?:(?:(?:$Storage|$Inline)\s*)*\s*$Type\s*)?($Ident)\(/) {<br>+                      $context_function = $1;<br>+              }<br>+<br>+# check if this appears to be the end of function declaration<br>+         if ($sline =~ /^\+\}\s*$/) {<br>+                 undef $context_function;<br>+             }<br>+<br> # check indentation of any line with a bare else<br> # (but not if it is a multiple line "if (foo) return bar; else return baz;")<br> # if the previous line is a break or return and is indented 1 tab more...<br>@@ -3183,12 +3242,6 @@<br>                          WARN("UNNECESSARY_BREAK",<br>                                "break is not useful after a goto or return\n" . $hereprev);<br>                   }<br>-            }<br>-<br>-# discourage the addition of CONFIG_EXPERIMENTAL in #if(def).<br>-         if ($line =~ /^\+\s*\#\s*if.*\bCONFIG_EXPERIMENTAL\b/) {<br>-                     WARN("CONFIG_EXPERIMENTAL",<br>-                             "Use of CONFIG_EXPERIMENTAL is deprecated. For alternatives, see https://lkml.org/lkml/2012/10/23/580\n");<br>             }<br> <br> # check for RCS/CVS revision markers<br>@@ -3219,7 +3272,7 @@<br>            my ($stat, $cond, $line_nr_next, $remain_next, $off_next,<br>                 $realline_next);<br> #print "LINE<$line>\n";<br>-               if ($linenr >= $suppress_statement &&<br>+             if ($linenr > $suppress_statement &&<br>                   $realcnt && $sline =~ /.\s*\S/) {<br>                         ($stat, $cond, $line_nr_next, $remain_next, $off_next) =<br>                              ctx_statement_block($linenr, $realcnt, 0);<br>@@ -3366,7 +3419,7 @@<br>             }<br> <br> # Check relative indent for conditionals and blocks.<br>-          if ($line =~ /\b(?:(?:if|while|for|(?:[a-z_]+|)for_each[a-z_]+)\s*\(|do\b)/ && $line !~ /^.\s*#/ && $line !~ /\}\s*while\s*/) {<br>+              if ($line =~ /\b(?:(?:if|while|for|(?:[a-z_]+|)for_each[a-z_]+)\s*\(|(?:do|else)\b)/ && $line !~ /^.\s*#/ && $line !~ /\}\s*while\s*/) {<br>                      ($stat, $cond, $line_nr_next, $remain_next, $off_next) =<br>                              ctx_statement_block($linenr, $realcnt, 0)<br>                                     if (!defined $stat);<br>@@ -3458,6 +3511,8 @@<br>                   if ($check && $s ne '' &&<br>                         (($sindent % 8) != 0 ||<br>                        ($sindent < $indent) ||<br>+                           ($sindent == $indent &&<br>+                       ($s !~ /^\s*(?:\}|\{|else\b)/)) ||<br>                           ($sindent > $indent + 8))) {<br>                          WARN("SUSPECT_CODE_INDENT",<br>                                      "suspect code indent for conditional statements ($indent, $sindent)\n" . $herecurr . "$stat_real\n");<br>@@ -3551,7 +3606,7 @@<br>                                 $fixedline =~ s/\s*=\s*$/ = {/;<br>                               fix_insert_line($fixlinenr, $fixedline);<br>                              $fixedline = $line;<br>-                          $fixedline =~ s/^(.\s*){\s*/$1/;<br>+                             $fixedline =~ s/^(.\s*)\{\s*/$1/;<br>                             fix_insert_line($fixlinenr, $fixedline);<br>                      }<br>             }<br>@@ -3783,10 +3838,10 @@<br> <br> # avoid BUG() or BUG_ON()<br>             if ($line =~ /\b(?:BUG|BUG_ON)\b/) {<br>-                 my $msg_type = \&WARN;<br>-                   $msg_type = \&CHK if ($file);<br>-                    &{$msg_type}("AVOID_BUG",<br>-                                   "Avoid crashing the kernel - try using WARN_ON & recovery code rather than BUG() or BUG_ON()\n" . $herecurr);<br>+                     my $msg_level = \&WARN;<br>+                  $msg_level = \&CHK if ($file);<br>+                   &{$msg_level}("AVOID_BUG",<br>+                                   "Avoid crashing the kernel - try using WARN_ON & recovery code rather than BUG() or BUG_ON()\n" . $herecurr);<br>             }<br> <br> # avoid LINUX_VERSION_CODE<br>@@ -3894,7 +3949,7 @@<br>                              my $fixedline = rtrim($prevrawline) . " {";<br>                                 fix_insert_line($fixlinenr, $fixedline);<br>                              $fixedline = $rawline;<br>-                               $fixedline =~ s/^(.\s*){\s*/$1\t/;<br>+                           $fixedline =~ s/^(.\s*)\{\s*/$1\t/;<br>                           if ($fixedline !~ /^\+\s*$/) {<br>                                        fix_insert_line($fixlinenr, $fixedline);<br>                              }<br>@@ -4315,11 +4370,11 @@<br> <br>                                         # messages are ERROR, but ?: are CHK<br>                                  if ($ok == 0) {<br>-                                              my $msg_type = \&ERROR;<br>-                                          $msg_type = \&CHK if (($op eq '?:' || $op eq '?' || $op eq ':') && $ctx =~ /VxV/);<br>+                                               my $msg_level = \&ERROR;<br>+                                         $msg_level = \&CHK if (($op eq '?:' || $op eq '?' || $op eq ':') && $ctx =~ /VxV/);<br> <br>-                                           if (&{$msg_type}("SPACING",<br>-                                                             "spaces required around that '$op' $at\n" . $hereptr)) {<br>+                                          if (&{$msg_level}("SPACING",<br>+                                                             "spaces required around that '$op' $at\n" . $hereptr)) {<br>                                                  $good = rtrim($fix_elements[$n]) . " " . trim($fix_elements[$n + 1]) . " ";<br>                                                       if (defined $fix_elements[$n + 2]) {<br>                                                          $fix_elements[$n + 2] =~ s/^\s+//;<br>@@ -4384,7 +4439,8 @@<br>                     if (ERROR("SPACING",<br>                                  "space required before the open brace '{'\n" . $herecurr) &&<br>                          $fix) {<br>-                          $fixed[$fixlinenr] =~ s/^(\+.*(?:do|\))){/$1 {/;<br>+                             #coreboot - Open braces must be escaped in regex<br>+                             $fixed[$fixlinenr] =~ s/^(\+.*(?:do|\)))\{/$1 \{/;<br>                    }<br>             }<br> <br>@@ -4469,6 +4525,30 @@<br>                          my $var2 = deparenthesize($var);<br>                              $var2 =~ s/\s//g;<br>                             $fixed[$fixlinenr] =~ s/\Q$var\E/$var2/;<br>+                     }<br>+            }<br>+<br>+# check for unnecessary parentheses around comparisons in if uses<br>+             if ($^V && $^V ge 5.10.0 && defined($stat) &&<br>+                    $stat =~ /(^.\s*if\s*($balanced_parens))/) {<br>+                     my $if_stat = $1;<br>+                    my $test = substr($2, 1, -1);<br>+                        my $herectx;<br>+                 while ($test =~ /(?:^|[^\w\&\!\~])+\s*\(\s*([\&\!\~]?\s*$Lval\s*(?:$Compare\s*$FuncArg)?)\s*\)/g) {<br>+                          my $match = $1;<br>+                              # avoid parentheses around potential macro args<br>+                              next if ($match =~ /^\s*\w+\s*$/);<br>+                           if (!defined($herectx)) {<br>+                                    $herectx = $here . "\n";<br>+                                   my $cnt = statement_rawlines($if_stat);<br>+                                      for (my $n = 0; $n < $cnt; $n++) {<br>+                                                my $rl = raw_line($linenr, $n);<br>+                                              $herectx .=  $rl . "\n";<br>+                                           last if $rl =~ /^[ \+].*\{/;<br>+                                 }<br>+                            }<br>+                            CHK("UNNECESSARY_PARENTHESES",<br>+                                 "Unnecessary parentheses around '$match'\n" . $herectx);<br>                        }<br>             }<br> <br>@@ -4882,8 +4962,10 @@<br>                      $dstat !~ /^\(\{/ &&                                                # ({...<br>                           $ctx !~ /^.\s*#\s*define\s+TRACE_(?:SYSTEM|INCLUDE_FILE|INCLUDE_PATH)\b/)<br>                         {<br>-<br>-                         if ($dstat =~ /;/) {<br>+                         if ($dstat =~ /^\s*if\b/) {<br>+                                  ERROR("MULTISTATEMENT_MACRO_USE_DO_WHILE",<br>+                                       "Macros starting with if should be enclosed by a do - while loop to avoid possible if/else logic defects\n" . "$herectx");<br>+                         } elsif ($dstat =~ /;/) {<br>                                     ERROR("MULTISTATEMENT_MACRO_USE_DO_WHILE",<br>                                        "Macros with multiple statements should be enclosed in a do - while loop\n" . "$herectx");<br>                          } else {<br>@@ -4914,17 +4996,17 @@<br>                     foreach my $arg (@def_args) {<br>                                 next if ($arg =~ /\.\.\./);<br>                           next if ($arg =~ /^type$/i);<br>-                         my $tmp = $define_stmt;<br>-                              $tmp =~ s/\b(typeof|__typeof__|__builtin\w+|typecheck\s*\(\s*$Type\s*,|\#+)\s*\(*\s*$arg\s*\)*\b//g;<br>-                         $tmp =~ s/\#+\s*$arg\b//g;<br>-                           $tmp =~ s/\b$arg\s*\#\#//g;<br>-                          my $use_cnt = $tmp =~ s/\b$arg\b//g;<br>+                         my $tmp_stmt = $define_stmt;<br>+                         $tmp_stmt =~ s/\b(typeof|__typeof__|__builtin\w+|typecheck\s*\(\s*$Type\s*,|\#+)\s*\(*\s*$arg\s*\)*\b//g;<br>+                            $tmp_stmt =~ s/\#+\s*$arg\b//g;<br>+                              $tmp_stmt =~ s/\b$arg\s*\#\#//g;<br>+                             my $use_cnt = $tmp_stmt =~ s/\b$arg\b//g;<br>                             if ($use_cnt > 1) {<br>                                        CHK("MACRO_ARG_REUSE",<br>                                          "Macro argument reuse '$arg' - possible side-effects?\n" . "$herectx");<br>                                   }<br> # check if any macro arguments may have other precedence issues<br>-                              if ($define_stmt =~ m/($Operators)?\s*\b$arg\b\s*($Operators)?/m &&<br>+                          if ($tmp_stmt =~ m/($Operators)?\s*\b$arg\b\s*($Operators)?/m &&<br>                                  ((defined($1) && $1 ne ',') ||<br>                                 (defined($2) && $2 ne ','))) {<br>                                   CHK("MACRO_ARG_PRECEDENCE",<br>@@ -5205,14 +5287,16 @@<br>                             "break quoted strings at a space character\n" . $hereprev);<br>            }<br> <br>-#check for an embedded function name in a string when the function is known<br>-# as part of a diff.  This does not work for -f --file checking as it<br>-#depends on patch context providing the function name<br>+# check for an embedded function name in a string when the function is known<br>+# This does not work very well for -f --file checking as it depends on patch<br>+# context providing the function name or a single line form for in-file<br>+# function declarations<br>          if ($line =~ /^\+.*$String/ &&<br>                    defined($context_function) &&<br>-                get_quoted_string($line, $rawline) =~ /\b$context_function\b/) {<br>+             get_quoted_string($line, $rawline) =~ /\b$context_function\b/ &&<br>+             length(get_quoted_string($line, $rawline)) != (length($context_function) + 2)) {<br>                  WARN("EMBEDDED_FUNCTION_NAME",<br>-                          "Prefer using \"%s\", __func__ to embedded function names\n" . $herecurr);<br>+                       "Prefer using '\"%s...\", __func__' to using '$context_function', this function's name, in a string\n" . $herecurr);<br>             }<br> <br> # check for spaces before a quoted newline<br>@@ -5319,7 +5403,7 @@<br>                      my ($s, $c) = ctx_statement_block($linenr - 3, $realcnt, 0);<br> #                        print("line: <$line>\nprevline: <$prevline>\ns: <$s>\nc: <$c>\n\n\n");<br> <br>-                  if ($c =~ /(?:^|\n)[ \+]\s*(?:$Type\s*)?\Q$testval\E\s*=\s*(?:\([^\)]*\)\s*)?\s*(?:devm_)?(?:[kv][czm]alloc(?:_node|_array)?\b|kstrdup|(?:dev_)?alloc_skb)/) {<br>+                       if ($s =~ /(?:^|\n)[ \+]\s*(?:$Type\s*)?\Q$testval\E\s*=\s*(?:\([^\)]*\)\s*)?\s*(?:devm_)?(?:[kv][czm]alloc(?:_node|_array)?\b|kstrdup|kmemdup|(?:dev_)?alloc_skb)/) {<br>                                WARN("OOM_MESSAGE",<br>                                      "Possible unnecessary 'out of memory' message\n" . $hereprev);<br>                         }<br>@@ -5542,34 +5626,24 @@<br>                    }<br>             }<br> <br>-# Check for expedited grace periods that interrupt non-idle non-nohz<br>-# online CPUs.  These expedited can therefore degrade real-time response<br>-# if used carelessly, and should be avoided where not absolutely<br>-# needed.  It is always OK to use synchronize_rcu_expedited() and<br>-# synchronize_sched_expedited() at boot time (before real-time applications<br>-# start) and in error situations where real-time response is compromised in<br>-# any case.  Note that synchronize_srcu_expedited() does -not- interrupt<br>-# other CPUs, so don't warn on uses of synchronize_srcu_expedited().<br>-# Of course, nothing comes for free, and srcu_read_lock() and<br>-# srcu_read_unlock() do contain full memory barriers in payment for<br>-# synchronize_srcu_expedited() non-interruption properties.<br>-          if ($line =~ /\b(synchronize_rcu_expedited|synchronize_sched_expedited)\(/) {<br>-                        WARN("EXPEDITED_RCU_GRACE_PERIOD",<br>-                      "expedited RCU grace periods should be avoided where they can degrade real-time response\n" . $herecurr);<br>-<br>-          }<br>-<br> # check of hardware specific defines<br>           if ($line =~ m@^.\s*\#\s*if.*\b(__i386__|__powerpc64__|__sun__|__s390x__)\b@ && $realfile !~ m@include/asm-@) {<br>                       CHK("ARCH_DEFINES",<br>                             "architecture specific defines should be avoided\n" .  $herecurr);<br>              }<br> <br>-# Check that the storage class is at the beginning of a declaration<br>-# coreboot: skip complaint about our '#define asmlinkage' lines<br>-         if ($line =~ /\b$Storage\b/ && $line !~ /^.\s*$Storage\b/ && $line !~ /^.\s*#\s*define\s+$Storage\b/) {<br>+# check that the storage class is not after a type<br>+         if ($line =~ /\b($Type)\s+($Storage)\b/) {<br>                    WARN("STORAGE_CLASS",<br>-                           "storage class should be at the beginning of the declaration\n" . $herecurr)<br>+                       "storage class '$2' should be located before type '$1'\n" . $herecurr);<br>+               }<br>+# Check that the storage class is at the beginning of a declaration<br>+              if ($line =~ /\b$Storage\b/ &&<br>+                   $line !~ /^.\s*$Storage/ &&<br>+                  $line =~ /^.\s*(.+?)\$Storage\s/ &&<br>+                  $1 !~ /[\,\)]\s*$/) {<br>+                    WARN("STORAGE_CLASS",<br>+                           "storage class should be at the beginning of the declaration\n" . $herecurr);<br>          }<br> <br> # check the location of the inline attribute, that it is between<br>@@ -5705,6 +5779,32 @@<br>                                   $fix) {<br>                                   $fixed[$fixlinenr] =~ s/\bseq_printf\b/seq_puts/;<br>                             }<br>+                    }<br>+            }<br>+<br>+         # check for vsprintf extension %p<foo> misuses<br>+         if ($^V && $^V ge 5.10.0 &&<br>+              defined $stat &&<br>+             $stat =~ /^\+(?![^\{]*\{\s*).*\b(\w+)\s*\(.*$String\s*,/s &&<br>+                 $1 !~ /^_*volatile_*$/) {<br>+                        my $bad_extension = "";<br>+                    my $lc = $stat =~ tr@\n@@;<br>+                   $lc = $lc + $linenr;<br>+                 for (my $count = $linenr; $count <= $lc; $count++) {<br>+                              my $fmt = get_quoted_string($lines[$count - 1], raw_line($count, 0));<br>+                                $fmt =~ s/%%//g;<br>+                             if ($fmt =~ /(\%[\*\d\.]*p(?![\WFfSsBKRraEhMmIiUDdgVCbGNO]).)/) {<br>+                                    $bad_extension = $1;<br>+                                 last;<br>+                                }<br>+                    }<br>+                    if ($bad_extension ne "") {<br>+                                my $stat_real = raw_line($linenr, 0);<br>+                                for (my $count = $linenr + 1; $count <= $lc; $count++) {<br>+                                  $stat_real = $stat_real . "\n" . raw_line($count, 0);<br>+                              }<br>+                            WARN("VSPRINTF_POINTER_EXTENSION",<br>+                              "Invalid vsprintf pointer extension '$bad_extension'\n" . "$here\n$stat_real\n");<br>                    }<br>             }<br> <br>@@ -5886,7 +5986,8 @@<br>                        "externs should be avoided in .c files\n" .  $herecurr);<br>               }<br> <br>-         if ($realfile =~ /\.[ch]$/ && defined $stat &&<br>+# check for function declarations that have arguments without identifier names<br>+              if (defined $stat &&<br>              $stat =~ /^.\s*(?:extern\s+)?$Type\s*$Ident\s*\(\s*([^{]+)\s*\)\s*;/s &&<br>              $1 ne "void") {<br>                         my $args = trim($1);<br>@@ -5896,6 +5997,29 @@<br>                                  WARN("FUNCTION_ARGUMENTS",<br>                                       "function definition argument '$arg' should also have an identifier name\n" . $herecurr);<br>                              }<br>+                    }<br>+            }<br>+<br>+# check for function definitions<br>+              if ($^V && $^V ge 5.10.0 &&<br>+              defined $stat &&<br>+             $stat =~ /^.\s*(?:$Storage\s+)?$Type\s*($Ident)\s*$balanced_parens\s*{/s) {<br>+                      $context_function = $1;<br>+<br>+# check for multiline function definition with misplaced open brace<br>+                     my $ok = 0;<br>+                  my $cnt = statement_rawlines($stat);<br>+                 my $herectx = $here . "\n";<br>+                        for (my $n = 0; $n < $cnt; $n++) {<br>+                                my $rl = raw_line($linenr, $n);<br>+                              $herectx .=  $rl . "\n";<br>+                           $ok = 1 if ($rl =~ /^[ \+]\{/);<br>+                              $ok = 1 if ($rl =~ /\{/ && $n == 0);<br>+                         last if $rl =~ /^[ \+].*\{/;<br>+                 }<br>+                    if (!$ok) {<br>+                          ERROR("OPEN_BRACE",<br>+                                      "open brace '{' following function definitions go on the next line\n" . $herectx);<br>                    }<br>             }<br> <br>@@ -5925,7 +6049,8 @@<br> <br> # check for k[mz]alloc with multiplies that could be kmalloc_array/kcalloc<br>           if ($^V && $^V ge 5.10.0 &&<br>-              $line =~ /\b($Lval)\s*\=\s*(?:$balanced_parens)?\s*(k[mz]alloc)\s*\(\s*($FuncArg)\s*\*\s*($FuncArg)\s*,/) {<br>+                  defined $stat &&<br>+             $stat =~ /^\+\s*($Lval)\s*\=\s*(?:$balanced_parens)?\s*(k[mz]alloc)\s*\(\s*($FuncArg)\s*\*\s*($FuncArg)\s*,/) {<br>                   my $oldfunc = $3;<br>                     my $a1 = $4;<br>                  my $a2 = $10;<br>@@ -5939,11 +6064,17 @@<br>                        }<br>                     if ($r1 !~ /^sizeof\b/ && $r2 =~ /^sizeof\s*\S/ &&<br>                        !($r1 =~ /^$Constant$/ || $r1 =~ /^[A-Z_][A-Z0-9_]*$/)) {<br>+                                my $ctx = '';<br>+                                my $herectx = $here . "\n";<br>+                                my $cnt = statement_rawlines($stat);<br>+                         for (my $n = 0; $n < $cnt; $n++) {<br>+                                        $herectx .= raw_line($linenr, $n) . "\n";<br>+                          }<br>                             if (WARN("ALLOC_WITH_MULTIPLY",<br>-                                     "Prefer $newfunc over $oldfunc with multiply\n" . $herecurr) &&<br>+                                    "Prefer $newfunc over $oldfunc with multiply\n" . $herectx) &&<br>+                                $cnt == 1 &&<br>                                  $fix) {<br>                                   $fixed[$fixlinenr] =~ s/\b($Lval)\s*\=\s*(?:$balanced_parens)?\s*(k[mz]alloc)\s*\(\s*($FuncArg)\s*\*\s*($FuncArg)/$1 . ' = ' . "$newfunc(" . trim($r1) . ', ' . trim($r2)/e;<br>-<br>                             }<br>                     }<br>             }<br>@@ -6098,11 +6229,11 @@<br>            }<br> <br> # check for various structs that are normally const (ops, kgdb, device_tree)<br>+# and avoid what seem like struct definitions 'struct foo {'<br>            if ($line !~ /\bconst\b/ &&<br>-              $line =~ /\bstruct\s+($const_structs)\b/) {<br>+                  $line =~ /\bstruct\s+($const_structs)\b(?!\s*\{)/) {<br>                      WARN("CONST_STRUCT",<br>-                            "struct $1 should normally be const\n" .<br>-                              $herecurr);<br>+                       "struct $1 should normally be const\n" . $herecurr);<br>           }<br> <br> # use of NR_CPUS is usually wrong<br>diff --git a/util/lint/spelling.txt b/util/lint/spelling.txt<br>index 0545f5a..400ef35 100644<br>--- a/util/lint/spelling.txt<br>+++ b/util/lint/spelling.txt<br>@@ -46,12 +46,15 @@<br> ackowledged||acknowledged<br> acording||according<br> activete||activate<br>+actived||activated<br>+actualy||actually<br> acumulating||accumulating<br> acumulator||accumulator<br> adapater||adapter<br> addional||additional<br> additionaly||additionally<br> addres||address<br>+adddress||address<br> addreses||addresses<br> addresss||address<br> aditional||additional<br>@@ -76,6 +79,8 @@<br> aligment||alignment<br> alignement||alignment<br> allign||align<br>+alligned||aligned<br>+allocatote||allocate<br> allocatrd||allocated<br> allocte||allocate<br> allpication||application<br>@@ -126,6 +131,7 @@<br> artifical||artificial<br> artillary||artillery<br> asign||assign<br>+asser||assert<br> assertation||assertion<br> assiged||assigned<br> assigment||assignment<br>@@ -141,9 +147,11 @@<br> asynchnous||asynchronous<br> atomatically||automatically<br> atomicly||atomically<br>+atempt||attempt<br> attachement||attachment<br> attched||attached<br> attemps||attempts<br>+attemping||attempting<br> attruibutes||attributes<br> authentification||authentication<br> automaticaly||automatically<br>@@ -174,6 +182,7 @@<br> baloon||balloon<br> baloons||balloons<br> bandwith||bandwidth<br>+banlance||balance<br> batery||battery<br> beacuse||because<br> becasue||because<br>@@ -199,9 +208,11 @@<br> calucate||calculate<br> calulate||calculate<br> cancelation||cancellation<br>+cancle||cancel<br> capabilites||capabilities<br> capabitilies||capabilities<br> capatibilities||capabilities<br>+capapbilities||capabilities<br> carefuly||carefully<br> cariage||carriage<br> catagory||category<br>@@ -210,6 +221,7 @@<br> challanges||challenges<br> chanell||channel<br> changable||changeable<br>+chanined||chained<br> channle||channel<br> channnel||channel<br> charachter||character<br>@@ -235,6 +247,7 @@<br> clared||cleared<br> closeing||closing<br> clustred||clustered<br>+coexistance||coexistence<br> collapsable||collapsible<br> colorfull||colorful<br> comand||command<br>@@ -263,6 +276,7 @@<br> completly||completely<br> complient||compliant<br> componnents||components<br>+compoment||component<br> compres||compress<br> compresion||compression<br> comression||compression<br>@@ -270,6 +284,7 @@<br> conbination||combination<br> conditionaly||conditionally<br> conected||connected<br>+connecetd||connected<br> configuartion||configuration<br> configuratoin||configuration<br> configuraton||configuration<br>@@ -291,11 +306,14 @@<br> continously||continuously<br> continueing||continuing<br> contraints||constraints<br>+contol||control<br>+contoller||controller<br> controled||controlled<br> controler||controller<br> controll||control<br> contruction||construction<br> contry||country<br>+conuntry||country<br> convertion||conversion<br> convertor||converter<br> convienient||convenient<br>@@ -305,16 +323,19 @@<br> correponds||corresponds<br> correspoding||corresponding<br> cotrol||control<br>+cound||could<br> couter||counter<br> coutner||counter<br> cryptocraphic||cryptographic<br> cunter||counter<br> curently||currently<br>+cylic||cyclic<br> dafault||default<br> deafult||default<br> deamon||daemon<br> decompres||decompress<br> decription||description<br>+dectected||detected<br> defailt||default<br> defferred||deferred<br> definate||definite<br>@@ -332,6 +353,8 @@<br> delares||declares<br> delaring||declaring<br> delemiter||delimiter<br>+demodualtor||demodulator<br>+demension||dimension<br> dependancies||dependencies<br> dependancy||dependency<br> dependant||dependent<br>@@ -346,11 +369,13 @@<br> desctiptor||descriptor<br> desriptor||descriptor<br> desriptors||descriptors<br>+destionation||destination<br> destory||destroy<br> destoryed||destroyed<br> destorys||destroys<br> destroied||destroyed<br> detabase||database<br>+deteced||detected<br> develope||develop<br> developement||development<br> developped||developed<br>@@ -365,6 +390,8 @@<br> didnt||didn't<br> diferent||different<br> differrence||difference<br>+diffrent||different<br>+diffrentiate||differentiate<br> difinition||definition<br> diplay||display<br> direectly||directly<br>@@ -398,6 +425,7 @@<br> efficently||efficiently<br> ehther||ether<br> eigth||eight<br>+elementry||elementary<br> eletronic||electronic<br> embeded||embedded<br> enabledi||enabled<br>@@ -405,9 +433,11 @@<br> encorporating||incorporating<br> encrupted||encrypted<br> encrypiton||encryption<br>+encryptio||encryption<br> endianess||endianness<br> enhaced||enhanced<br> enlightnment||enlightenment<br>+entrys||entries<br> enocded||encoded<br> enterily||entirely<br> enviroiment||environment<br>@@ -425,6 +455,7 @@<br> excecutable||executable<br> exceded||exceeded<br> excellant||excellent<br>+exeed||exceed<br> existance||existence<br> existant||existent<br> exixt||exist<br>@@ -443,6 +474,7 @@<br> extensability||extensibility<br> extention||extension<br> extracter||extractor<br>+falied||failed<br> faild||failed<br> faill||fail<br> failied||failed<br>@@ -452,6 +484,7 @@<br> faireness||fairness<br> falied||failed<br> faliure||failure<br>+fallbck||fallback<br> familar||familiar<br> fatser||faster<br> feauture||feature<br>@@ -492,6 +525,7 @@<br> futrue||future<br> gaurenteed||guaranteed<br> generiously||generously<br>+genereate||generate<br> genric||generic<br> globel||global<br> grabing||grabbing<br>@@ -513,8 +547,10 @@<br> hierarchie||hierarchy<br> howver||however<br> hsould||should<br>+hypervior||hypervisor<br> hypter||hyper<br> identidier||identifier<br>+iligal||illegal<br> illigal||illegal<br> imblance||imbalance<br> immeadiately||immediately<br>@@ -546,6 +582,7 @@<br> independantly||independently<br> independed||independent<br> indiate||indicate<br>+indicat||indicate<br> inexpect||inexpected<br> infomation||information<br> informatiom||information<br>@@ -590,6 +627,9 @@<br> interupted||interrupted<br> interupt||interrupt<br> intial||initial<br>+intialisation||initialisation<br>+intialised||initialised<br>+intialise||initialise<br> intialization||initialization<br> intialized||initialized<br> intialize||initialize<br>@@ -600,6 +640,7 @@<br> invaid||invalid<br> invalde||invalid<br> invalide||invalid<br>+invalud||invalid<br> invididual||individual<br> invokation||invocation<br> invokations||invocations<br>@@ -660,18 +701,26 @@<br> messgaes||messages<br> messsage||message<br> messsages||messages<br>+micropone||microphone<br> microprocesspr||microprocessor<br> milliseonds||milliseconds<br> minium||minimum<br>+minimam||minimum<br> minumum||minimum<br>+misalinged||misaligned<br> miscelleneous||miscellaneous<br> misformed||malformed<br> mispelled||misspelled<br> mispelt||misspelt<br>+mising||missing<br>+missmanaged||mismanaged<br>+missmatch||mismatch<br> miximum||maximum<br> mmnemonic||mnemonic<br> mnay||many<br> modulues||modules<br>+momery||memory<br>+memomry||memory<br> monochorome||monochrome<br> monochromo||monochrome<br> monocrome||monochrome<br>@@ -772,6 +821,7 @@<br> peroid||period<br> persistance||persistence<br> persistant||persistent<br>+plalform||platform<br> platfrom||platform<br> plattform||platform<br> pleaes||please<br>@@ -784,6 +834,7 @@<br> positon||position<br> possibilites||possibilities<br> powerfull||powerful<br>+preapre||prepare<br> preceeded||preceded<br> preceeding||preceding<br> preceed||precede<br>@@ -842,6 +893,7 @@<br> psychadelic||psychedelic<br> pwoer||power<br> quering||querying<br>+randomally||randomly<br> raoming||roaming<br> reasearcher||researcher<br> reasearchers||researchers<br>@@ -869,8 +921,10 @@<br> refrence||reference<br> registerd||registered<br> registeresd||registered<br>+registerred||registered<br> registes||registers<br> registraration||registration<br>+regsiter||register<br> regster||register<br> regualar||regular<br> reguator||regulator<br>@@ -888,6 +942,7 @@<br> reponse||response<br> representaion||representation<br> reqeust||request<br>+requestied||requested<br> requiere||require<br> requirment||requirement<br> requred||required<br>@@ -895,6 +950,7 @@<br> requst||request<br> reseting||resetting<br> resizeable||resizable<br>+resouce||resource<br> resouces||resources<br> resoures||resources<br> responce||response<br>@@ -910,6 +966,7 @@<br> reuest||request<br> reuqest||request<br> reutnred||returned<br>+revsion||revision<br> rmeoved||removed<br> rmeove||remove<br> rmeoves||removes<br>@@ -981,6 +1038,7 @@<br> spinock||spinlock<br> splitted||split<br> spreaded||spread<br>+spurrious||spurious<br> sructure||structure<br> stablilization||stabilization<br> staically||statically<br>@@ -1013,6 +1071,7 @@<br> suplied||supplied<br> suported||supported<br> suport||support<br>+supportet||supported<br> suppored||supported<br> supportin||supporting<br> suppoted||supported<br>@@ -1056,6 +1115,7 @@<br> thses||these<br> tiggered||triggered<br> tipically||typically<br>+timout||timeout<br> tmis||this<br> torerable||tolerable<br> tramsmitted||transmitted<br>@@ -1068,6 +1128,7 @@<br> transision||transition<br> transmittd||transmitted<br> transormed||transformed<br>+trasfer||transfer<br> trasmission||transmission<br> treshold||threshold<br> trigerring||triggering<br>@@ -1081,6 +1142,7 @@<br> underun||underrun<br> unecessary||unnecessary<br> unexecpted||unexpected<br>+unexepected||unexpected<br> unexpcted||unexpected<br> unexpectd||unexpected<br> unexpeted||unexpected<br>@@ -1096,6 +1158,7 @@<br> unneedingly||unnecessarily<br> unnsupported||unsupported<br> unmached||unmatched<br>+unregester||unregister<br> unresgister||unregister<br> unrgesiter||unregister<br> unsinged||unsigned<br>@@ -1134,6 +1197,7 @@<br> virtiual||virtual<br> visiters||visitors<br> vitual||virtual<br>+wakeus||wakeups<br> wating||waiting<br> wether||whether<br> whataver||whatever<br></pre><p>To view, visit <a href="https://review.coreboot.org/21581">change 21581</a>. To unsubscribe, visit <a href="https://review.coreboot.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://review.coreboot.org/21581"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: coreboot </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: Ic443099e90a46280f18d58799afc72d00dc83793 </div>
<div style="display:none"> Gerrit-Change-Number: 21581 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Martin Roth <martinroth@google.com> </div>