Re: [PATCH v5 2/2] checkpatch: Add option to not force /* */ for SPDX

From: Simon Glass

Date: Sun Apr 19 2026 - 19:51:24 EST


Hi Petr,

On Sat, 18 Apr 2026 at 05:04, Petr Vorel <pvorel@xxxxxxx> wrote:
>
> Add option --spdx-cxx-comments to not force C comments (/* */) for SPDX,
> but allow also C++ comments (//).
>
> As documented in aa19a176df95d6, this is required for some old
> toolchains still have older assembler tools which cannot handle C++
> style comments. This allows avoid forcing this for for projects which

one 'for'
This avoids forcing...

> vendored checkpatch.pl (e.g. LTP or u-boot).
>
> Signed-off-by: Petr Vorel <pvorel@xxxxxxx>
> ---
> Changes in v5 (all by sashiko agent):
> https://sashiko.dev/#/patchset/20260415143636.272605-1-pvorel%40suse.cz
> * Actually don't force // on --spdx-cxx-comments, still allow /* */ (sigh).
> * Document --spdx-cxx-comments in Documentation/dev-tools/checkpatch.rst.
>
> Link to v4:
> https://lore.kernel.org/lkml/20260415143636.272605-2-pvorel@xxxxxxx/
>
> Link to v3:
> https://lore.kernel.org/lkml/20260408120603.54351-2-pvorel@xxxxxxx/
>
> Documentation/dev-tools/checkpatch.rst | 7 +++++++
> scripts/checkpatch.pl | 23 ++++++++++++++++++-----
> 2 files changed, 25 insertions(+), 5 deletions(-)
>
> diff --git a/Documentation/dev-tools/checkpatch.rst b/Documentation/dev-tools/checkpatch.rst
> index dccede68698ca..ca48334b728a5 100644
> --- a/Documentation/dev-tools/checkpatch.rst
> +++ b/Documentation/dev-tools/checkpatch.rst
> @@ -184,6 +184,13 @@ Available options:
> Override checking of perl version. Runtime errors may be encountered after
> enabling this flag if the perl version does not meet the minimum specified.
>
> + - --spdx-cxx-comments
> +
> + Don't force C comments ``\* \*/`` for SPDX license (required by old
> + toolchains), allow also C++ comments ``//``.
> +
> + NOTE: it should *not* be used for Linux mainline.
> +
> - --codespell
>
> Use the codespell dictionary for checking spelling errors.
> diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
> index 8f7a42da12869..8095b9b1c168a 100755
> --- a/scripts/checkpatch.pl
> +++ b/scripts/checkpatch.pl
> @@ -61,6 +61,7 @@ my $def_configuration_dirs = ".:$ENV{HOME}:.scripts";
> my $env_config_dir = 'CHECKPATCH_CONFIG_DIR';
> my $max_line_length = 100;
> my $ignore_perl_version = 0;
> +my $spdx_cxx_comments = 0;
> my $minimum_perl_version = 5.10.0;
> my $min_conf_desc_length = 4;
> my $spelling_file = "$D/spelling.txt";
> @@ -137,6 +138,10 @@ Options:
> file. It's your fault if there's no backup or git
> --ignore-perl-version override checking of perl version. expect
> runtime errors.
> + --spdx-cxx-comments don't force C comments (/* */) for SPDX license
> + (required by old toolchains), allow also C++
> + comments (//).
> + NOTE: it should *not* be used for Linux mainline.
> --codespell Use the codespell dictionary for spelling/typos
> (default:$codespellfile)
> --codespellfile Use this codespell dictionary
> @@ -346,6 +351,7 @@ GetOptions(
> 'fix!' => \$fix,
> 'fix-inplace!' => \$fix_inplace,
> 'ignore-perl-version!' => \$ignore_perl_version,
> + 'spdx-cxx-comments!' => \$spdx_cxx_comments,
> 'debug=s' => \%debug,
> 'test-only=s' => \$tst_only,
> 'codespell!' => \$codespell,
> @@ -3814,26 +3820,33 @@ sub process {
> $checklicenseline = 2;
> } elsif ($rawline =~ /^\+/) {
> my $comment = "";
> - if ($realfile =~ /\.(h|s|S)$/) {
> - $comment = '/*';
> - } elsif ($realfile =~ /\.(c|rs|dts|dtsi)$/) {
> + if ($realfile =~ /\.(c|rs|dts|dtsi)$/) {
> $comment = '//';
> } elsif (($checklicenseline == 2) || $realfile =~ /\.(sh|pl|py|awk|tc|yaml)$/) {
> $comment = '#';
> } elsif ($realfile =~ /\.rst$/) {
> $comment = '..';
> }
> + my $pattern = qr{$comment};

nit: if $comment is '..' then this pattern matches any two characters
so for example this line would pass:

+ XY SPDX-License-Identifier: ...

You could do something like: my $pattern = qr{\Q$comment\E};

> + if ($realfile =~ /\.(h|s|S)$/) {
> + $comment = '/*';
> + $pattern = qr{/\*};
> + if ($spdx_cxx_comments) {
> + $comment = '// or /*';
> + $pattern = qr{//|/\*};
> + }
> + }
>
> # check SPDX comment style for .[chsS] files
> if ($realfile =~ /\.[chsS]$/ &&
> $rawline =~ /SPDX-License-Identifier:/ &&
> - $rawline !~ m@^\+\s*\Q$comment\E\s*@) {
> + $rawline !~ m@^\+\s*$pattern\s*@) {
> WARN("SPDX_LICENSE_TAG",
> "Improper SPDX comment style for '$realfile', please use '$comment' instead\n" . $herecurr);
> }
>
> if ($comment !~ /^$/ &&
> - $rawline !~ m@^\+\Q$comment\E SPDX-License-Identifier: @) {
> + $rawline !~ m@^\+$pattern SPDX-License-Identifier: @) {
> WARN("SPDX_LICENSE_TAG",
> "Missing or malformed SPDX-License-Identifier tag in line $checklicenseline\n" . $herecurr);
> } elsif ($rawline =~ /(SPDX-License-Identifier: .*)/) {
> --
> 2.53.0
>

Reviewed-by: Simon Glass <sjg@xxxxxxxxxxxx>

Regards,
Simon