mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2024-12-28 16:53:49 +00:00
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
This commit is contained in:
parent
a7fb69ffd7
commit
6f28c4a852
@ -439,13 +439,8 @@ static int cpuidle_coupled_clear_pokes(int cpu)
|
||||
|
||||
static bool cpuidle_coupled_any_pokes_pending(struct cpuidle_coupled *coupled)
|
||||
{
|
||||
cpumask_t cpus;
|
||||
int ret;
|
||||
|
||||
cpumask_and(&cpus, cpu_online_mask, &coupled->coupled_cpus);
|
||||
ret = cpumask_and(&cpus, &cpuidle_coupled_poke_pending, &cpus);
|
||||
|
||||
return ret;
|
||||
return cpumask_first_and_and(cpu_online_mask, &coupled->coupled_cpus,
|
||||
&cpuidle_coupled_poke_pending) < nr_cpu_ids;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -626,9 +621,7 @@ int cpuidle_enter_state_coupled(struct cpuidle_device *dev,
|
||||
|
||||
static void cpuidle_coupled_update_online_cpus(struct cpuidle_coupled *coupled)
|
||||
{
|
||||
cpumask_t cpus;
|
||||
cpumask_and(&cpus, cpu_online_mask, &coupled->coupled_cpus);
|
||||
coupled->online_count = cpumask_weight(&cpus);
|
||||
coupled->online_count = cpumask_weight_and(cpu_online_mask, &coupled->coupled_cpus);
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
Reference in New Issue
Block a user