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 for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <ba2bdc06-a63b-478b-b29f-15d093125d83@linux.intel.com>
Date: Wed, 11 Sep 2024 11:32:53 -0400
From: "Liang, Kan" <kan.liang@...ux.intel.com>
To: Stephen Rothwell <sfr@...b.auug.org.au>,
 Thomas Gleixner <tglx@...utronix.de>, Ingo Molnar <mingo@...hat.com>,
 "H. Peter Anvin" <hpa@...or.com>, Peter Zijlstra <peterz@...radead.org>
Cc: Linux Kernel Mailing List <linux-kernel@...r.kernel.org>,
 Linux Next Mailing List <linux-next@...r.kernel.org>
Subject: Re: linux-next: build warning after merge of the tip tree

Hi Stephen,

On 2024-09-11 1:38 a.m., Stephen Rothwell wrote:
> Hi all,
> 
> After merging the tip tree, today's linux-next build (arm
> multi_v7_defconfig) produced this warning:
> 
> kernel/events/core.c: In function 'perf_event_setup_cpumask':
> kernel/events/core.c:14012:13: warning: the comparison will always evaluate as 'true' for the address of 'thread_sibling' will never be NULL [-Waddress]
> 14012 |         if (!topology_sibling_cpumask(cpu)) {

The perf_event_init_cpu() may be invoked at the early boot stage, while
the topology_*_cpumask hasn't been initialized yet. The check is to
specially handle the case.

X86 uses a per-cpu cpumask pointer, which could be NULL at the early
boot stage. However, it looks like ARM uses a global variable, which
never be NULL. If so, I think we should check whether it's empty.

The below patch should fix it (Only test on X86).

diff --git a/kernel/events/core.c b/kernel/events/core.c
index 2766090de84e..fc0c17e57c86 100644
--- a/kernel/events/core.c
+++ b/kernel/events/core.c
@@ -14000,7 +14000,8 @@ static void perf_event_setup_cpumask(unsigned
int cpu)
 	 * The perf_online_<domain>_masks includes the first CPU of each domain.
 	 * Always uncondifionally set the boot CPU for the
perf_online_<domain>_masks.
 	 */
-	if (!topology_sibling_cpumask(cpu)) {
+	if (cpu == get_boot_cpu_id() &&
+	    (!topology_sibling_cpumask(cpu) ||
cpumask_empty(topology_sibling_cpumask(cpu)))) {
 		for (scope = PERF_PMU_SCOPE_NONE + 1; scope < PERF_PMU_MAX_SCOPE;
scope++) {
 			pmu_cpumask = perf_scope_cpumask(scope);
 			if (WARN_ON_ONCE(!pmu_cpumask))


Should I send the above as a separate patch to fix it?

Thanks,
Kan

>       |             ^
> In file included from include/linux/topology.h:30,
>                  from include/linux/gfp.h:8,
>                  from include/linux/xarray.h:16,
>                  from include/linux/list_lru.h:14,
>                  from include/linux/fs.h:13,
>                  from kernel/events/core.c:11:
> include/linux/arch_topology.h:78:19: note: 'thread_sibling' declared here
>    78 |         cpumask_t thread_sibling;
>       |                   ^~~~~~~~~~~~~~
> 
> Introduced by commit
> 
>   4ba4f1afb6a9 ("perf: Generic hotplug support for a PMU with a scope")
> 

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ