lkml.org 
[lkml]   [2020]   [Jul]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.7 018/179] drivers/firmware/psci: Fix memory leakage in alloc_init_cpu_groups()
    Date
    From: Gavin Shan <gshan@redhat.com>

    [ Upstream commit c377e67c6271954969384f9be1b1b71de13eba30 ]

    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>
    ---
    drivers/firmware/psci/psci_checker.c | 5 ++++-
    1 file changed, 4 insertions(+), 1 deletion(-)

    diff --git a/drivers/firmware/psci/psci_checker.c b/drivers/firmware/psci/psci_checker.c
    index 873841af8d575..d9b1a2d71223e 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);

    @@ -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;
    }
    --
    2.25.1


    \
     
     \ /
      Last update: 2020-07-27 16:20    [W:4.036 / U:0.028 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site