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-prev] [day] [month] [year] [list]
Message-ID: <20201208100304.GA5838@willie-the-truck>
Date:   Tue, 8 Dec 2020 10:03:04 +0000
From:   Will Deacon <will@...nel.org>
To:     Catalin Marinas <catalin.marinas@....com>
Cc:     Arnd Bergmann <arnd@...nel.org>,
        Mark Rutland <mark.rutland@....com>,
        Arnd Bergmann <arnd@...db.de>,
        Suzuki K Poulose <suzuki.poulose@....com>,
        Anshuman Khandual <anshuman.khandual@....com>,
        Ionela Voinescu <ionela.voinescu@....com>,
        Mark Brown <broonie@...nel.org>,
        Amit Daniel Kachhap <amit.kachhap@....com>,
        Kristina Martsenko <kristina.martsenko@....com>,
        linux-arm-kernel@...ts.infradead.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH] arm64: cpufeature: fix unused function warning

On Mon, Dec 07, 2020 at 06:19:31PM +0000, Catalin Marinas wrote:
> On Fri, Dec 04, 2020 at 09:59:10AM +0000, Will Deacon wrote:
> > On Thu, Dec 03, 2020 at 11:32:11PM +0100, Arnd Bergmann wrote:
> > > From: Arnd Bergmann <arnd@...db.de>
> > > 
> > > The __system_matches_cap() function is now only used in an #ifdef
> > > section:
> > > 
> > > arch/arm64/kernel/cpufeature.c:2649:13: error: unused function '__system_matches_cap' [-Werror,-Wunused-function]
> > > 
> > > Move it into that #ifdef section.
> > > 
> > > Fixes: 7cf283c7bd62 ("arm64: uaccess: remove redundant PAN toggling")
> > > Signed-off-by: Arnd Bergmann <arnd@...db.de>
> 
> I already queued a fix from Mark: 701f49065e68 ("arm64: mark
> __system_matches_cap as __maybe_unused").
> 
> > Acked-by: Will Deacon <will@...nel.org>
> > 
> > We can probably go further and remove the helper altogether as I don't
> > think it really helps has_generic_auth(), but this should fix the warning.
> 
> We could replace the ARM64_HAS_GENERIC_AUTH checks with a single helper
> function that tests for ARM64_HAS_GENERIC_AUTH_ARCH or
> ARM64_HAS_GENERIC_AUTH_IMP_DEF. Or you had a different idea?

I was just thinking something like below, although it's a bit annoying
that we can't use cpucap_multi_entry_cap_matches() here afaict.

Will

--->8

diff --git a/arch/arm64/kernel/cpufeature.c b/arch/arm64/kernel/cpufeature.c
index 39138f6d3ba2..32a138ce0a92 100644
--- a/arch/arm64/kernel/cpufeature.c
+++ b/arch/arm64/kernel/cpufeature.c
@@ -155,8 +155,6 @@ EXPORT_SYMBOL(cpu_hwcap_keys);
 
 static void cpu_enable_cnp(struct arm64_cpu_capabilities const *cap);
 
-static bool __system_matches_cap(unsigned int n);
-
 /*
  * NOTE: Any changes to the visibility of features should be kept in
  * sync with the documentation of the CPU feature register ABI.
@@ -1652,8 +1650,13 @@ static bool has_address_auth_metacap(const struct arm64_cpu_capabilities *entry,
 static bool has_generic_auth(const struct arm64_cpu_capabilities *entry,
 			     int __unused)
 {
-	return __system_matches_cap(ARM64_HAS_GENERIC_AUTH_ARCH) ||
-	       __system_matches_cap(ARM64_HAS_GENERIC_AUTH_IMP_DEF);
+	const struct arm64_cpu_capabilities *cap_arch, *cap_impdef;
+
+	cap_arch = cpu_hwcaps_ptrs[ARM64_HAS_GENERIC_AUTH_ARCH];
+	cap_impdef = cpu_hwcaps_ptrs[ARM64_HAS_GENERIC_AUTH_IMP_DEF];
+
+	return cap_arch->matches(cap_arch, SCOPE_SYSTEM) ||
+	       cap_impdef->matches(cap_impdef, SCOPE_SYSTEM);
 }
 #endif /* CONFIG_ARM64_PTR_AUTH */
 
@@ -2637,23 +2640,6 @@ bool this_cpu_has_cap(unsigned int n)
 	return false;
 }
 
-/*
- * This helper function is used in a narrow window when,
- * - The system wide safe registers are set with all the SMP CPUs and,
- * - The SYSTEM_FEATURE cpu_hwcaps may not have been set.
- * In all other cases cpus_have_{const_}cap() should be used.
- */
-static bool __maybe_unused __system_matches_cap(unsigned int n)
-{
-	if (n < ARM64_NCAPS) {
-		const struct arm64_cpu_capabilities *cap = cpu_hwcaps_ptrs[n];
-
-		if (cap)
-			return cap->matches(cap, SCOPE_SYSTEM);
-	}
-	return false;
-}
-
 void cpu_set_feature(unsigned int num)
 {
 	WARN_ON(num >= MAX_CPU_FEATURES);

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ