]> git.itanic.dy.fi Git - linux-stable/commitdiff
perf: RISC-V: Add of_node_put() when breaking out of for_each_of_cpu_node()
authorLiang He <windhl@126.com>
Fri, 15 Jul 2022 13:03:30 +0000 (21:03 +0800)
committerWill Deacon <will@kernel.org>
Tue, 19 Jul 2022 17:40:31 +0000 (18:40 +0100)
In pmu_sbi_setup_irqs(), we should call of_node_put() for the 'cpu'
when breaking out of for_each_of_cput_node() as its refcount will
be automatically increased and decreased during the iteration.

Fixes: 4905ec2fb7e6 ("RISC-V: Add sscofpmf extension support")
Signed-off-by: Liang He <windhl@126.com>
Reviewed-by: Atish Patra <atishp@rivosinc.com>
Reviewed-by: Andrew Jones <ajones@ventanamicro.com>
Link: https://lore.kernel.org/r/20220715130330.443363-1-windhl@126.com
Signed-off-by: Will Deacon <will@kernel.org>
drivers/perf/riscv_pmu_sbi.c

index 06fefcccf379a4aec9f48c7a9062bd400669bd48..79a3de515ece6ba2f3c6218906d5c31f44e9ea82 100644 (file)
@@ -686,12 +686,15 @@ static int pmu_sbi_setup_irqs(struct riscv_pmu *pmu, struct platform_device *pde
                child = of_get_compatible_child(cpu, "riscv,cpu-intc");
                if (!child) {
                        pr_err("Failed to find INTC node\n");
+                       of_node_put(cpu);
                        return -ENODEV;
                }
                domain = irq_find_host(child);
                of_node_put(child);
-               if (domain)
+               if (domain) {
+                       of_node_put(cpu);
                        break;
+               }
        }
        if (!domain) {
                pr_err("Failed to find INTC IRQ root domain\n");