[PATCH v2 5/7] scripts/checkpatch: use new hook for file permissions check

Daniel P. Berrangé posted 7 patches 6 months, 1 week ago
[PATCH v2 5/7] scripts/checkpatch: use new hook for file permissions check
Posted by Daniel P. Berrangé 6 months, 1 week ago
From: Daniel P. Berrangé <berrange@redhat.com>

The file permissions check is the kind of check intended to be performed
in the new start of file hook.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
---
 scripts/checkpatch.pl | 19 +++++++++++--------
 1 file changed, 11 insertions(+), 8 deletions(-)

diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index 6a7b543ddf..4a18daa384 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -1447,6 +1447,17 @@ sub process_file_list {
 # Called at the start of processing a diff hunk for a file
 sub process_start_of_file {
 	my $fileinfo = shift;
+
+	# Check for incorrect file permissions
+	if ($fileinfo->{action} eq "new" && ($fileinfo->{mode} & 0111)) {
+		my $permhere = $fileinfo->{linestart} . "FILE: " .
+			$fileinfo->{filenew} . "\n";
+		if ($fileinfo->{filenew} =~
+		    /(\bMakefile(?:\.objs)?|\.(c|cc|cpp|h|mak|s|S))$/) {
+			ERROR("do not set execute permissions for source " .
+			      "files\n" . $permhere);
+		}
+	}
 }
 
 # Called at the end of processing a diff hunk for a file
@@ -1718,14 +1729,6 @@ sub process {
 
 		$cnt_lines++ if ($realcnt != 0);
 
-# Check for incorrect file permissions
-		if ($line =~ /^new (file )?mode.*[7531]\d{0,2}$/) {
-			my $permhere = $here . "FILE: $realfile\n";
-			if ($realfile =~ /(\bMakefile(?:\.objs)?|\.c|\.cc|\.cpp|\.h|\.mak|\.[sS])$/) {
-				ERROR("do not set execute permissions for source files\n" . $permhere);
-			}
-		}
-
 # Only allow Python 3 interpreter
 		if ($realline == 1 &&
 			$line =~ /^\+#!\ *\/usr\/bin\/(?:env )?python$/) {
-- 
2.49.0


Re: [PATCH v2 5/7] scripts/checkpatch: use new hook for file permissions check
Posted by Cédric Le Goater 6 months ago
On 5/12/25 20:24, Daniel P. Berrangé wrote:
> From: Daniel P. Berrangé <berrange@redhat.com>
> 
> The file permissions check is the kind of check intended to be performed
> in the new start of file hook.
> 
> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>


Reviewed-by: Cédric Le Goater <clg@redhat.com>

Thanks,

C.


> ---
>   scripts/checkpatch.pl | 19 +++++++++++--------
>   1 file changed, 11 insertions(+), 8 deletions(-)
> 
> diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
> index 6a7b543ddf..4a18daa384 100755
> --- a/scripts/checkpatch.pl
> +++ b/scripts/checkpatch.pl
> @@ -1447,6 +1447,17 @@ sub process_file_list {
>   # Called at the start of processing a diff hunk for a file
>   sub process_start_of_file {
>   	my $fileinfo = shift;
> +
> +	# Check for incorrect file permissions
> +	if ($fileinfo->{action} eq "new" && ($fileinfo->{mode} & 0111)) {
> +		my $permhere = $fileinfo->{linestart} . "FILE: " .
> +			$fileinfo->{filenew} . "\n";
> +		if ($fileinfo->{filenew} =~
> +		    /(\bMakefile(?:\.objs)?|\.(c|cc|cpp|h|mak|s|S))$/) {
> +			ERROR("do not set execute permissions for source " .
> +			      "files\n" . $permhere);
> +		}
> +	}
>   }
>   
>   # Called at the end of processing a diff hunk for a file
> @@ -1718,14 +1729,6 @@ sub process {
>   
>   		$cnt_lines++ if ($realcnt != 0);
>   
> -# Check for incorrect file permissions
> -		if ($line =~ /^new (file )?mode.*[7531]\d{0,2}$/) {
> -			my $permhere = $here . "FILE: $realfile\n";
> -			if ($realfile =~ /(\bMakefile(?:\.objs)?|\.c|\.cc|\.cpp|\.h|\.mak|\.[sS])$/) {
> -				ERROR("do not set execute permissions for source files\n" . $permhere);
> -			}
> -		}
> -
>   # Only allow Python 3 interpreter
>   		if ($realline == 1 &&
>   			$line =~ /^\+#!\ *\/usr\/bin\/(?:env )?python$/) {