Thread (5 messages) 5 messages, 2 authors, 2020-01-30

Re: [PATCH] drivers/firmware/psci: Fix memory leak in alloc_init_cpu_groups()

From: Gavin Shan <hidden>
Date: 2020-01-30 04:00:27
Subsystem: power state coordination interface (psci), the rest · Maintainers: Mark Rutland, Lorenzo Pieralisi, Linus Torvalds

On 1/30/20 2:49 PM, Gavin Shan wrote:
quoted hunk ↗ jump to hunk
The CPU mask (@tmp) should be free'd on failing to allocating the element
of @cpu_groups[]. Otherwise, it leads to memory leakage because the CPU
mask variable is allocated with CONFIG_CPUMASK_OFFSTACK.

Signed-off-by: Gavin Shan <redacted>
---
  drivers/firmware/psci/psci_checker.c | 1 +
  1 file changed, 1 insertion(+)
diff --git a/drivers/firmware/psci/psci_checker.c b/drivers/firmware/psci/psci_checker.c
index 6a445397771c..d1d6d1135fed 100644
--- a/drivers/firmware/psci/psci_checker.c
+++ b/drivers/firmware/psci/psci_checker.c
@@ -167,6 +167,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;
  		}
I think @tmp has to be free'd either when failing to allocate @cpu_groups.
However, I'm holding to post v2 until feedback is received on v1.
diff --git a/drivers/firmware/psci/psci_checker.c b/drivers/firmware/psci/psci_checker.c
index d1d6d1135fed..03eb798ad3ed 100644
--- a/drivers/firmware/psci/psci_checker.c
+++ b/drivers/firmware/psci/psci_checker.c
@@ -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);
Thanks,
Gavin


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help