checkpatch: add an invalid patch separator test

Some versions of tools that apply patches incorrectly allow lines that
start with 3 dashes and have additional content on the same line.

Checkpatch will now emit an ERROR on these lines and optionally convert
those lines from dashes to equals with --fix.

Link: https://lkml.kernel.org/r/6ec1ed08328340db42655287afd5fa4067316b11.camel@perches.com
Signed-off-by: Joe Perches <joe@perches.com>
Suggested-by: Ian Rogers <irogers@google.com>
Cc: Andy Whitcroft <apw@canonical.com>
Cc: Dwaipayan Ray <dwaipayanray1@gmail.com>
Cc: Kuan-Wei Chiu <visitorckw@gmail.com>
Cc: Lukas Bulwahn <lukas.bulwahn@gmail.com>
Cc: Namhyung kim <namhyung@kernel.org>
Cc: Stehen Rothwell <sfr@canb.auug.org.au>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
Joe Perches
2026-01-16 09:42:52 -08:00
committed by Andrew Morton
parent 2eec08ff09
commit 931d5c36c7
2 changed files with 15 additions and 0 deletions

View File

@@ -601,6 +601,11 @@ Commit message
See: https://www.kernel.org/doc/html/latest/process/submitting-patches.html#describe-your-changes See: https://www.kernel.org/doc/html/latest/process/submitting-patches.html#describe-your-changes
**BAD_COMMIT_SEPARATOR**
The commit separator is a single line with 3 dashes.
The regex match is '^---$'
Lines that start with 3 dashes and have more content on the same line
may confuse tools that apply patches.
Comparison style Comparison style
---------------- ----------------

View File

@@ -3031,6 +3031,16 @@ sub process {
} }
} }
# Check for invalid patch separator
if ($in_commit_log &&
$line =~ /^---.+/) {
if (ERROR("BAD_COMMIT_SEPARATOR",
"Invalid commit separator - some tools may have problems applying this\n" . $herecurr) &&
$fix) {
$fixed[$fixlinenr] =~ s/-/=/g;
}
}
# Check for patch separator # Check for patch separator
if ($line =~ /^---$/) { if ($line =~ /^---$/) {
$has_patch_separator = 1; $has_patch_separator = 1;