[v2] checkpatch: add missing bindings license check

Message ID 20230320100027.27788-1-ddrokosov@sberdevices.ru
State New
Headers
Series [v2] checkpatch: add missing bindings license check |

Commit Message

Dmitry Rokosov March 20, 2023, 10 a.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 pattern:
    /GPL-2\.0(?:-only|-or-later|\+)? (?:OR|or) BSD-2-Clause/

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 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/
---
 scripts/checkpatch.pl | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)
  

Comments

Joe Perches March 20, 2023, 5:12 p.m. UTC | #1
On Mon, 2023-03-20 at 13:00 +0300, Dmitry Rokosov 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 pattern:
>     /GPL-2\.0(?:-only|-or-later|\+)? (?:OR|or) BSD-2-Clause/
> 
> 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 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/
> ---
>  scripts/checkpatch.pl | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)

OK but:

> diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
[]
> @@ -3709,8 +3709,9 @@ sub process {
>  						WARN("SPDX_LICENSE_TAG",
>  						     "'$spdx_license' is not supported in LICENSES/...\n" . $herecurr);
>  					}
> -					if ($realfile =~ m@^Documentation/devicetree/bindings/@ &&
> -					    not $spdx_license =~ /GPL-2\.0.*BSD-2-Clause/) {
> +					if (($realfile =~ m@^Documentation/devicetree/bindings/@ ||
> +					     $realfile =~ m@^include/dt-bindings/@) &&
> +					    not $spdx_license =~ /GPL-2\.0(?:-only|-or-later|\+)? (?:OR|or) BSD-2-Clause/) {

I believe this is the only checkpatch use of
	not <foo> =~ <bar>
instead of
	<foo> !~ <bar>

I prefer !~
  
Dmitry Rokosov March 20, 2023, 5:28 p.m. UTC | #2
On Mon, Mar 20, 2023 at 10:12:27AM -0700, Joe Perches wrote:
> On Mon, 2023-03-20 at 13:00 +0300, Dmitry Rokosov 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 pattern:
> >     /GPL-2\.0(?:-only|-or-later|\+)? (?:OR|or) BSD-2-Clause/
> > 
> > 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 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/
> > ---
> >  scripts/checkpatch.pl | 5 +++--
> >  1 file changed, 3 insertions(+), 2 deletions(-)
> 
> OK but:
> 
> > diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
> []
> > @@ -3709,8 +3709,9 @@ sub process {
> >  						WARN("SPDX_LICENSE_TAG",
> >  						     "'$spdx_license' is not supported in LICENSES/...\n" . $herecurr);
> >  					}
> > -					if ($realfile =~ m@^Documentation/devicetree/bindings/@ &&
> > -					    not $spdx_license =~ /GPL-2\.0.*BSD-2-Clause/) {
> > +					if (($realfile =~ m@^Documentation/devicetree/bindings/@ ||
> > +					     $realfile =~ m@^include/dt-bindings/@) &&
> > +					    not $spdx_license =~ /GPL-2\.0(?:-only|-or-later|\+)? (?:OR|or) BSD-2-Clause/) {
> 
> I believe this is the only checkpatch use of
> 	not <foo> =~ <bar>
> instead of
> 	<foo> !~ <bar>
> 
> I prefer !~
> 

You are totally right. Only this place uses such strange comparing. Let
me fix it and prepare new version quickly :)
  

Patch

diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index 78cc595b98ce..de669d29f60c 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -3709,8 +3709,9 @@  sub process {
 						WARN("SPDX_LICENSE_TAG",
 						     "'$spdx_license' is not supported in LICENSES/...\n" . $herecurr);
 					}
-					if ($realfile =~ m@^Documentation/devicetree/bindings/@ &&
-					    not $spdx_license =~ /GPL-2\.0.*BSD-2-Clause/) {
+					if (($realfile =~ m@^Documentation/devicetree/bindings/@ ||
+					     $realfile =~ m@^include/dt-bindings/@) &&
+					    not $spdx_license =~ /GPL-2\.0(?:-only|-or-later|\+)? (?:OR|or) BSD-2-Clause/) {
 						my $msg_level = \&WARN;
 						$msg_level = \&CHK if ($file);
 						if (&{$msg_level}("SPDX_LICENSE_TAG",