lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20200622215834.2858106-1-jacob.e.keller@intel.com>
Date:   Mon, 22 Jun 2020 14:58:34 -0700
From:   Jacob Keller <jacob.e.keller@...el.com>
To:     linux-kernel@...r.kernel.org
Cc:     Jacob Keller <jacob.e.keller@...el.com>,
        Joe Perches <joe@...ches.com>
Subject: [PATCH] checkpatch: use $root/.git when seeding camel case

When seeding the camel case file, checkpatch.pl uses the $root directory
in order to find the acceptable list of allowed camel case words.

However, if the current directory is a git repository, checkpatch.pl
attempts to seed using the local git directory.

This is problematic if checkpatch.pl is passed a --root and is being run
from within another git repository. Rather than seeding from the
provided root tree, checkpatch.pl will seed using the local files. If
the current git repository isn't a kernel tree, this can lead to
unexpected warnings about camel case issues.

Always honor the $root parameter when seeding camelcase files by using
"$root/.git" and changing directory to the $root before invoking git.

Signed-off-by: Jacob Keller <jacob.e.keller@...el.com>
Cc: Joe Perches <joe@...ches.com>
---
This is a resend of an old patch that appears to have never been picked up.
It was originally reviewed at the following locations a few years ago:

https://patchwork.ozlabs.org/project/intel-wired-lan/patch/20160505231108.1934-1-jacob.e.keller@intel.com/
https://lore.kernel.org/netdev/20190315010334.5707-1-jacob.e.keller@intel.com/

The motivation is that we use checkpatch.pl on code in a separate git
repository that will eventually be submitted upstream. As part of this, we
provide the --root argument to specify the target kernel tree. The camelcase
then gets seeded incorrectly and --strict begins warning about a lot of
cases that aren't errors.

The current workaround is that we cd to the kernel tree and run checkpatch
from there.. but this breaks if we want to use a .checkpatch.conf file as it
won't get picked up from the original directory.

This patch simply fixes the camelcase seeding to honor the git tree at the
$root if one is provided.

I opted to stick with "cd $root &&" instead of "git -C", since there are no other usages
of "git -C" in the checkpatch.pl currently, despite "git -C" being from git
1.8.5,  and being ~7 years old.

 scripts/checkpatch.pl | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index 4c820607540b..c5646e456325 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -919,8 +919,8 @@ sub seed_camelcase_includes {
 
 	$camelcase_seeded = 1;
 
-	if (-e ".git") {
-		my $git_last_include_commit = `${git_command} log --no-merges --pretty=format:"%h%n" -1 -- include`;
+	if (-e "$root/.git") {
+		my $git_last_include_commit = `cd $root && ${git_command} log --no-merges --pretty=format:"%h%n" -1 -- include`;
 		chomp $git_last_include_commit;
 		$camelcase_cache = ".checkpatch-camelcase.git.$git_last_include_commit";
 	} else {
@@ -947,9 +947,10 @@ sub seed_camelcase_includes {
 		return;
 	}
 
-	if (-e ".git") {
-		$files = `${git_command} ls-files "include/*.h"`;
+	if (-e "$root/.git") {
+		$files = `cd $root && ${git_command} ls-files "include/*.h"`;
 		@include_files = split('\n', $files);
+		@include_files = map("$root/$_", @include_files);
 	}
 
 	foreach my $file (@include_files) {
-- 
2.25.2

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ