[v5] checkpatch: introduce proper bindings license check

Message ID 20230404191715.7319-1-ddrokosov@sberdevices.ru
State New
Headers
Series [v5] checkpatch: introduce proper bindings license check |

Commit Message

Dmitry Rokosov April 4, 2023, 7:17 p.m. UTC
  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/

Signed-off-by: Dmitry Rokosov <ddrokosov@sberdevices.ru>
---
Changes v5 since v4 at [4]:
    - only capital OR is acceptable for SPDX per Rob's suggestion

Changes v4 since v3 at [3]:
    - introduce separate pattern for dt-bindings headers following Rob's
      suggestion

Changes v3 since v2 at [2]:
    - replace 'not =~' expression with '!~' to be aligned with other
      checkpatch lines

Changes v2 since v1 at [1]:
    - include/dt-bindings check is aligned to open parens
    - introduce more strict pattern for bindings license:
      /GPL-2\.0(?:-only|-or-later|\+)? (?:OR|or) BSD-2-Clause/

Links:
    [1] https://lore.kernel.org/all/20230317201621.15518-1-ddrokosov@sberdevices.ru/
    [2] https://lore.kernel.org/all/20230320100027.27788-1-ddrokosov@sberdevices.ru/
    [3] https://lore.kernel.org/all/20230320203350.13696-1-ddrokosov@sberdevices.ru/
    [4] https://lore.kernel.org/all/20230331121017.14324-1-ddrokosov@sberdevices.ru/
---
 scripts/checkpatch.pl | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)
  

Comments

Rob Herring April 11, 2023, 2:29 p.m. UTC | #1
On Tue, Apr 4, 2023 at 2:17 PM Dmitry Rokosov <ddrokosov@sberdevices.ru> wrote:
>
> 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/
>
> Signed-off-by: Dmitry Rokosov <ddrokosov@sberdevices.ru>
> ---
> Changes v5 since v4 at [4]:
>     - only capital OR is acceptable for SPDX per Rob's suggestion
>
> Changes v4 since v3 at [3]:
>     - introduce separate pattern for dt-bindings headers following Rob's
>       suggestion
>
> Changes v3 since v2 at [2]:
>     - replace 'not =~' expression with '!~' to be aligned with other
>       checkpatch lines
>
> Changes v2 since v1 at [1]:
>     - include/dt-bindings check is aligned to open parens
>     - introduce more strict pattern for bindings license:
>       /GPL-2\.0(?:-only|-or-later|\+)? (?:OR|or) BSD-2-Clause/
>
> Links:
>     [1] https://lore.kernel.org/all/20230317201621.15518-1-ddrokosov@sberdevices.ru/
>     [2] https://lore.kernel.org/all/20230320100027.27788-1-ddrokosov@sberdevices.ru/
>     [3] https://lore.kernel.org/all/20230320203350.13696-1-ddrokosov@sberdevices.ru/
>     [4] https://lore.kernel.org/all/20230331121017.14324-1-ddrokosov@sberdevices.ru/
> ---
>  scripts/checkpatch.pl | 7 ++++++-
>  1 file changed, 6 insertions(+), 1 deletion(-)

Reviewed-by: Rob Herring <robh@kernel.org>
  
Dmitry Rokosov April 14, 2023, 11:39 a.m. UTC | #2
Hello Joe,

On Tue, Apr 11, 2023 at 09:29:36AM -0500, Rob Herring wrote:
> On Tue, Apr 4, 2023 at 2:17 PM Dmitry Rokosov <ddrokosov@sberdevices.ru> wrote:
> >
> > 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/
> >
> > Signed-off-by: Dmitry Rokosov <ddrokosov@sberdevices.ru>
> > ---
> > Changes v5 since v4 at [4]:
> >     - only capital OR is acceptable for SPDX per Rob's suggestion
> >
> > Changes v4 since v3 at [3]:
> >     - introduce separate pattern for dt-bindings headers following Rob's
> >       suggestion
> >
> > Changes v3 since v2 at [2]:
> >     - replace 'not =~' expression with '!~' to be aligned with other
> >       checkpatch lines
> >
> > Changes v2 since v1 at [1]:
> >     - include/dt-bindings check is aligned to open parens
> >     - introduce more strict pattern for bindings license:
> >       /GPL-2\.0(?:-only|-or-later|\+)? (?:OR|or) BSD-2-Clause/
> >
> > Links:
> >     [1] https://lore.kernel.org/all/20230317201621.15518-1-ddrokosov@sberdevices.ru/
> >     [2] https://lore.kernel.org/all/20230320100027.27788-1-ddrokosov@sberdevices.ru/
> >     [3] https://lore.kernel.org/all/20230320203350.13696-1-ddrokosov@sberdevices.ru/
> >     [4] https://lore.kernel.org/all/20230331121017.14324-1-ddrokosov@sberdevices.ru/
> > ---
> >  scripts/checkpatch.pl | 7 ++++++-
> >  1 file changed, 6 insertions(+), 1 deletion(-)
> 
> Reviewed-by: Rob Herring <robh@kernel.org>

Are you okay with this patch version? Rob is good with that, so please
advise what the next step is.
  
Joe Perches April 14, 2023, 3:02 p.m. UTC | #3
On Fri, 2023-04-14 at 14:39 +0300, Dmitry Rokosov wrote:
> Hello Joe,
> 
> On Tue, Apr 11, 2023 at 09:29:36AM -0500, Rob Herring wrote:
> > On Tue, Apr 4, 2023 at 2:17 PM Dmitry Rokosov <ddrokosov@sberdevices.ru> wrote:
> > > 
> > > 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/
> > > 
> > > Signed-off-by: Dmitry Rokosov <ddrokosov@sberdevices.ru>
> > > ---
> > > Changes v5 since v4 at [4]:
> > >     - only capital OR is acceptable for SPDX per Rob's suggestion
[]
> > Reviewed-by: Rob Herring <robh@kernel.org>
> 
> Are you okay with this patch version? Rob is good with that, so please
> advise what the next step is.

Yes, I'm fine with it.  Andrew Morton can apply it at his leisure.
  
Dmitry Rokosov April 14, 2023, 3:06 p.m. UTC | #4
On Fri, Apr 14, 2023 at 08:02:53AM -0700, Joe Perches wrote:
> On Fri, 2023-04-14 at 14:39 +0300, Dmitry Rokosov wrote:
> > Hello Joe,
> > 
> > On Tue, Apr 11, 2023 at 09:29:36AM -0500, Rob Herring wrote:
> > > On Tue, Apr 4, 2023 at 2:17 PM Dmitry Rokosov <ddrokosov@sberdevices.ru> wrote:
> > > > 
> > > > 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/
> > > > 
> > > > Signed-off-by: Dmitry Rokosov <ddrokosov@sberdevices.ru>
> > > > ---
> > > > Changes v5 since v4 at [4]:
> > > >     - only capital OR is acceptable for SPDX per Rob's suggestion
> []
> > > Reviewed-by: Rob Herring <robh@kernel.org>
> > 
> > Are you okay with this patch version? Rob is good with that, so please
> > advise what the next step is.
> 
> Yes, I'm fine with it.  Andrew Morton can apply it at his leisure.
> 

Sure, I look forward to receiving Andrew's comments in due course.

Thanks a lot for quick feedback!
  

Patch

diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index 78cc595b98ce..7d9b63fffa9d 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -3710,7 +3710,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",
@@ -3720,6 +3720,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);
+					}
 				}
 			}
 		}