drivers/firmware/psci: Fix memory leakage in alloc_init_cpu_groups()
[ Upstream commit c377e67c62
]
The CPU mask (@tmp) should be released on failing to allocate
@cpu_groups or any of its elements. Otherwise, it leads to memory
leakage because the CPU mask variable is dynamically allocated
when CONFIG_CPUMASK_OFFSTACK is enabled.
Signed-off-by: Gavin Shan <gshan@redhat.com>
Reviewed-by: Sudeep Holla <sudeep.holla@arm.com>
Link: https://lore.kernel.org/r/20200630075227.199624-1-gshan@redhat.com
Signed-off-by: Will Deacon <will@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
d0e40e510a
commit
96002e7485
|
@ -157,8 +157,10 @@ static int alloc_init_cpu_groups(cpumask_var_t **pcpu_groups)
|
|||
|
||||
cpu_groups = kcalloc(nb_available_cpus, sizeof(cpu_groups),
|
||||
GFP_KERNEL);
|
||||
if (!cpu_groups)
|
||||
if (!cpu_groups) {
|
||||
free_cpumask_var(tmp);
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
cpumask_copy(tmp, cpu_online_mask);
|
||||
|
||||
|
@ -167,6 +169,7 @@ static int alloc_init_cpu_groups(cpumask_var_t **pcpu_groups)
|
|||
topology_core_cpumask(cpumask_any(tmp));
|
||||
|
||||
if (!alloc_cpumask_var(&cpu_groups[num_groups], GFP_KERNEL)) {
|
||||
free_cpumask_var(tmp);
|
||||
free_cpu_groups(num_groups, &cpu_groups);
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue