E.g., running checkpatch on commit 9ac060a708e0 ("leaking_addresses:
Completely remove --version flag") reports this error:

ERROR: Missing Signed-off-by: line(s)

Provide a fix by adding a Signed-off-by line corresponding to the author
of the patch before the patch separator line.

Also, avoid this fix with the Non-standard signature warning, as the
missing sign off is most likely because of typo.

E.g. for commit 8cde5d5f7361 ("bus: ti-sysc: Detect omap4 type timers
for quirk") we get missing sign off as well as bad sign off warnings for:

Siganed-off-by: Tony Lindgren <t...@atomide.com>

Here it is probably best to fix the typo with BAD_SIGN_OFF warning and
avoid adding an additional signoff.

Suggested-by: Joe Perches <j...@perches.com>
Signed-off-by: Aditya Srivastava <yashsri...@gmail.com>
---
applies over next-20201120 and my last changes 
at:https://lore.kernel.org/linux-kernel-mentees/db1195235752685fc85fb52ecb1b1af3f35b5394.ca...@perches.com/T/#u

Changes in v2:
  Add space after 'if'
  Add check for $patch_separator_linenr to be greater than 0

Changes in v3:
  Give MISSING_SIGN_OFF warning irrespective of the value of 
$non_standard_signature, add check with fix option instead
  Modify commit message accordingly

 scripts/checkpatch.pl | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index 4a026926139f..3abf34bb9b00 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -2462,6 +2462,8 @@ sub process {
 
        my $last_blank_line = 0;
        my $last_coalesced_string_linenr = -1;
+       my $patch_separator_linenr = 0;
+       my $non_standard_signature = 0;
 
        our @report = ();
        our $cnt_lines = 0;
@@ -2813,6 +2815,10 @@ sub process {
                if ($line =~ /^---$/) {
                        $has_patch_separator = 1;
                        $in_commit_log = 0;
+                       # to add missing signed-off-by line before diff(s)
+                       if ($patch_separator_linenr == 0) {
+                               $patch_separator_linenr = $linenr;
+                       }
                }
 
 # Check if MAINTAINERS is being updated.  If so, there's probably no need to
@@ -2842,6 +2848,7 @@ sub process {
                                                $fixed[$fixlinenr] =~ 
s/$sign_off/$suggested_signature/;
                                        }
                                }
+                               $non_standard_signature = 1;
                        }
                        if (defined $space_before && $space_before ne "") {
                                if (WARN("BAD_SIGN_OFF",
@@ -7188,8 +7195,11 @@ sub process {
        }
        if ($is_patch && $has_commit_log && $chk_signoff) {
                if ($signoff == 0) {
-                       ERROR("MISSING_SIGN_OFF",
-                             "Missing Signed-off-by: line(s)\n");
+                       if (ERROR("MISSING_SIGN_OFF",
+                                 "Missing Signed-off-by: line(s)\n") &&
+                           $fix && !$non_standard_signature && 
$patch_separator_linenr > 0) {
+                               fix_insert_line($patch_separator_linenr - 1, 
"Signed-off-by: $author");
+                       }
                } elsif ($authorsignoff != 1) {
                        # authorsignoff values:
                        # 0 -> missing sign off
-- 
2.17.1

Reply via email to