From b4bea2d7a96cfe3a567dc5d642bed1a6c8b80711 Mon Sep 17 00:00:00 2001
From: Gregory Bean <gbean@codeaurora.org>
Date: Thu, 3 Mar 2011 13:46:41 -0800
Subject: [PATCH] Don't complain about MIME headers.

When patches contain extended character sets, patches will contain
MIME headers after the subject line, which should not be confused
for a too-long summary line.

Signed-off-by: Gregory Bean <gbean@codeaurora.org>
Change-Id: If17d17cc7513eb644d75f486b9cdea3a09ba0dbe
(cherry picked from commit 8e6b9d3790595198a34320f1c3f4504cd258fed1)
---
 scripts/checkpatch.pl | 19 +++++++++++++------
 1 file changed, 13 insertions(+), 6 deletions(-)

diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index 459de0d92bf8..166552fd29e8 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -1628,13 +1628,20 @@ sub process {
 					     " characters\n" . $herecurr);
 				}
 			} elsif ($shorttext == CHECK_NEXT_SHORTTEXT) {
-				$shorttext = IN_SHORTTEXT;
+# The Subject line doesn't have to be the last header in the patch.
+# Avoid moving to the IN_SHORTTEXT state until clear of all headers.
+# Per RFC5322, continuation lines must be folded, so any left-justified
+# text which looks like a header is definitely a header.
+				if ($line!~/^[\x21-\x39\x3b-\x7e]+:/) {
+					$shorttext = IN_SHORTTEXT;
 # Check for Subject line followed by a blank line.
-				if (length($line) != 0) {
-					WARN("non-blank line after summary " .
-					     "line\n" . $sublinenr . $here .
-					     "\n" . $subjectline . "\n" .
-					     $line . "\n");
+					if (length($line) != 0) {
+						WARN("non-blank line after " .
+						     "summary line\n" .
+						     $sublinenr . $here .
+						     "\n" . $subjectline .
+						     "\n" . $line . "\n");
+					}
 				}
 			} elsif ($line=~/^Subject: \[[^\]]*\] (.*)/) {
 				$shorttext = CHECK_NEXT_SHORTTEXT;