checkpatch: introduce proper bindings license check
authorDmitry Rokosov <ddrokosov@sberdevices.ru>
Tue, 4 Apr 2023 19:17:15 +0000 (22:17 +0300)
committerAndrew Morton <akpm@linux-foundation.org>
Tue, 18 Apr 2023 23:39:35 +0000 (16:39 -0700)
All headers from 'include/dt-bindings/' must be verified by checkpatch
together with Documentation bindings, because all of them are part of the
whole DT bindings system.

The requirement is dual licensed and matching patterns:
* Schemas:
    /GPL-2\.0(?:-only)? OR BSD-2-Clause/
* Headers:
    /GPL-2\.0(?:-only)? OR \S+/

Above patterns suggested by Rob at:
https://lore.kernel.org/all/CAL_Jsq+-YJsBO+LuPJ=ZQ=eb-monrwzuCppvReH+af7hYZzNaQ@mail.gmail.com

The issue was found during patch review:
https://lore.kernel.org/all/20230313201259.19998-4-ddrokosov@sberdevices.ru/

Link: https://lkml.kernel.org/r/20230404191715.7319-1-ddrokosov@sberdevices.ru
Signed-off-by: Dmitry Rokosov <ddrokosov@sberdevices.ru>
Reviewed-by: Rob Herring <robh@kernel.org>
Cc: Andy Whitcroft <apw@canonical.com>
Cc: Dwaipayan Ray <dwaipayanray1@gmail.com>
Cc: Joe Perches <joe@perches.com>
Cc: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Cc: Lukas Bulwahn <lukas.bulwahn@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
scripts/checkpatch.pl

index 3e6f5a8614d3687cf470118a7701855cacdeb850..23bb211de4ce21bd186ab4c1abd2f118d2d60a24 100755 (executable)
@@ -3763,7 +3763,7 @@ sub process {
                                                     "'$spdx_license' is not supported in LICENSES/...\n" . $herecurr);
                                        }
                                        if ($realfile =~ m@^Documentation/devicetree/bindings/@ &&
-                                           not $spdx_license =~ /GPL-2\.0.*BSD-2-Clause/) {
+                                           $spdx_license !~ /GPL-2\.0(?:-only)? OR BSD-2-Clause/) {
                                                my $msg_level = \&WARN;
                                                $msg_level = \&CHK if ($file);
                                                if (&{$msg_level}("SPDX_LICENSE_TAG",
@@ -3773,6 +3773,11 @@ sub process {
                                                        $fixed[$fixlinenr] =~ s/SPDX-License-Identifier: .*/SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)/;
                                                }
                                        }
+                                       if ($realfile =~ m@^include/dt-bindings/@ &&
+                                           $spdx_license !~ /GPL-2\.0(?:-only)? OR \S+/) {
+                                               WARN("SPDX_LICENSE_TAG",
+                                                    "DT binding headers should be licensed (GPL-2.0-only OR .*)\n" . $herecurr);
+                                       }
                                }
                        }
                }