Messages in this thread Patch in this message | | | Date | Fri, 14 Jul 2023 11:43:28 +0800 | From | liubin001@208suo ... | Subject | Fwd: [PATCH] irqchip:Use the "put_device" function to release the memory after calling the of_find_device_by_node function. |
| |
Write the put_device function before return
Signed-off-by: Liu Bin <liubin001@208suo.com> --- drivers/irqchip/irq-renesas-rzg2l.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/drivers/irqchip/irq-renesas-rzg2l.c b/drivers/irqchip/irq-renesas-rzg2l.c index 4bbfa2b0a4df..a9d75135ba24 100644 --- a/drivers/irqchip/irq-renesas-rzg2l.c +++ b/drivers/irqchip/irq-renesas-rzg2l.c @@ -325,35 +325,42 @@ static int rzg2l_irqc_init(struct device_node *node, struct device_node *parent)
pdev = of_find_device_by_node(node); if (!pdev) + put_device(pdev); return -ENODEV;
parent_domain = irq_find_host(parent); if (!parent_domain) { dev_err(&pdev->dev, "cannot find parent domain\n"); + put_device(pdev); return -ENODEV; }
priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL); if (!priv) + put_device(pdev); return -ENOMEM;
priv->base = devm_of_iomap(&pdev->dev, pdev->dev.of_node, 0, NULL); if (IS_ERR(priv->base)) + put_device(pdev); return PTR_ERR(priv->base);
ret = rzg2l_irqc_parse_interrupts(priv, node); if (ret) { dev_err(&pdev->dev, "cannot parse interrupts: %d\n", ret); + put_device(pdev); return ret; }
resetn = devm_reset_control_get_exclusive(&pdev->dev, NULL); if (IS_ERR(resetn)) + put_device(pdev); return PTR_ERR(resetn);
ret = reset_control_deassert(resetn); if (ret) { dev_err(&pdev->dev, "failed to deassert resetn pin, %d\n", ret); + put_device(pdev); return ret; }
@@ -374,7 +381,7 @@ static int rzg2l_irqc_init(struct device_node *node, struct device_node *parent) ret = -ENOMEM; goto pm_put; } - + put_device(pdev); return 0;
pm_put: @@ -382,6 +389,7 @@ static int rzg2l_irqc_init(struct device_node *node, struct device_node *parent) pm_disable: pm_runtime_disable(&pdev->dev); reset_control_assert(resetn); + put_device(pdev); return ret; }
| |