Skip to content
This repository was archived by the owner on Nov 8, 2023. It is now read-only.

Commit 6f28c4a

Browse files
Dawei LiKAGA-KOKO
authored andcommitted
cpuidle: Avoid explicit cpumask allocation on stack
In general it's preferable to avoid placing cpumasks on the stack, as for large values of NR_CPUS these can consume significant amounts of stack space and make stack overflows more likely. Use cpumask_first_and_and() and cpumask_weight_and() to avoid the need for a temporary cpumask on the stack. Signed-off-by: Dawei Li <dawei.li@shingroup.cn> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Link: https://lore.kernel.org/r/20240416085454.3547175-8-dawei.li@shingroup.cn
1 parent a7fb69f commit 6f28c4a

File tree

1 file changed

+3
-10
lines changed

1 file changed

+3
-10
lines changed

drivers/cpuidle/coupled.c

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -439,13 +439,8 @@ static int cpuidle_coupled_clear_pokes(int cpu)
439439

440440
static bool cpuidle_coupled_any_pokes_pending(struct cpuidle_coupled *coupled)
441441
{
442-
cpumask_t cpus;
443-
int ret;
444-
445-
cpumask_and(&cpus, cpu_online_mask, &coupled->coupled_cpus);
446-
ret = cpumask_and(&cpus, &cpuidle_coupled_poke_pending, &cpus);
447-
448-
return ret;
442+
return cpumask_first_and_and(cpu_online_mask, &coupled->coupled_cpus,
443+
&cpuidle_coupled_poke_pending) < nr_cpu_ids;
449444
}
450445

451446
/**
@@ -626,9 +621,7 @@ int cpuidle_enter_state_coupled(struct cpuidle_device *dev,
626621

627622
static void cpuidle_coupled_update_online_cpus(struct cpuidle_coupled *coupled)
628623
{
629-
cpumask_t cpus;
630-
cpumask_and(&cpus, cpu_online_mask, &coupled->coupled_cpus);
631-
coupled->online_count = cpumask_weight(&cpus);
624+
coupled->online_count = cpumask_weight_and(cpu_online_mask, &coupled->coupled_cpus);
632625
}
633626

634627
/**

0 commit comments

Comments
 (0)