Use devm_spi_alloc_host() so that there's no need to call
spi_controller_put() in the error path.
Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
---
drivers/spi/spi-bcmbca-hsspi.c | 10 ++++------
1 file changed, 4 insertions(+), 6 deletions(-)
diff --git a/drivers/spi/spi-bcmbca-hsspi.c b/drivers/spi/spi-bcmbca-hsspi.c
index f465daa473d0..d936104a41ec 100644
--- a/drivers/spi/spi-bcmbca-hsspi.c
+++ b/drivers/spi/spi-bcmbca-hsspi.c
@@ -480,7 +480,7 @@ static int bcmbca_hsspi_probe(struct platform_device *pdev)
}
}
- host = spi_alloc_host(&pdev->dev, sizeof(*bs));
+ host = devm_spi_alloc_host(&pdev->dev, sizeof(*bs));
if (!host) {
ret = -ENOMEM;
goto out_disable_pll_clk;
@@ -536,17 +536,17 @@ static int bcmbca_hsspi_probe(struct platform_device *pdev)
ret = devm_request_irq(dev, irq, bcmbca_hsspi_interrupt, IRQF_SHARED,
pdev->name, bs);
if (ret)
- goto out_put_host;
+ goto out_disable_pll_clk;
}
ret = devm_pm_runtime_enable(&pdev->dev);
if (ret)
- goto out_put_host;
+ goto out_disable_pll_clk;
ret = sysfs_create_group(&pdev->dev.kobj, &bcmbca_hsspi_group);
if (ret) {
dev_err(&pdev->dev, "couldn't register sysfs group\n");
- goto out_put_host;
+ goto out_disable_pll_clk;
}
/* register and we are done */
@@ -560,8 +560,6 @@ static int bcmbca_hsspi_probe(struct platform_device *pdev)
out_sysgroup_disable:
sysfs_remove_group(&pdev->dev.kobj, &bcmbca_hsspi_group);
-out_put_host:
- spi_controller_put(host);
out_disable_pll_clk:
clk_disable_unprepare(pll_clk);
out_disable_clk:
--
2.34.1
Hi Jinjie,
> -----Original Message-----
> From: Jinjie Ruan <ruanjinjie@huawei.com>
> Sent: Monday, August 26, 2024 5:49 AM
> To: william.zhang@broadcom.com; kursad.oney@broadcom.com;
> jonas.gorski@gmail.com; bcm-kernel-feedback-list@broadcom.com;
> broonie@kernel.org; anand.gore@broadcom.com;
> florian.fainelli@broadcom.com; rafal@milecki.pl;
linux-spi@vger.kernel.org;
> linux-arm-kernel@lists.infradead.org; linux-kernel@vger.kernel.org
> Cc: ruanjinjie@huawei.com
> Subject: [PATCH -next 2/2] spi: bcmbca-hsspi: Use devm_spi_alloc_host()
>
> Use devm_spi_alloc_host() so that there's no need to call
> spi_controller_put() in the error path.
>
> Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
> ---
> drivers/spi/spi-bcmbca-hsspi.c | 10 ++++------
> 1 file changed, 4 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/spi/spi-bcmbca-hsspi.c
b/drivers/spi/spi-bcmbca-hsspi.c
> index f465daa473d0..d936104a41ec 100644
> --- a/drivers/spi/spi-bcmbca-hsspi.c
> +++ b/drivers/spi/spi-bcmbca-hsspi.c
> @@ -480,7 +480,7 @@ static int bcmbca_hsspi_probe(struct
> platform_device *pdev)
> }
> }
>
> - host = spi_alloc_host(&pdev->dev, sizeof(*bs));
> + host = devm_spi_alloc_host(&pdev->dev, sizeof(*bs));
> if (!host) {
> ret = -ENOMEM;
> goto out_disable_pll_clk;
> @@ -536,17 +536,17 @@ static int bcmbca_hsspi_probe(struct
> platform_device *pdev)
> ret = devm_request_irq(dev, irq, bcmbca_hsspi_interrupt,
> IRQF_SHARED,
> pdev->name, bs);
> if (ret)
> - goto out_put_host;
> + goto out_disable_pll_clk;
> }
>
> ret = devm_pm_runtime_enable(&pdev->dev);
> if (ret)
> - goto out_put_host;
> + goto out_disable_pll_clk;
>
> ret = sysfs_create_group(&pdev->dev.kobj, &bcmbca_hsspi_group);
> if (ret) {
> dev_err(&pdev->dev, "couldn't register sysfs group\n");
> - goto out_put_host;
> + goto out_disable_pll_clk;
> }
>
> /* register and we are done */
> @@ -560,8 +560,6 @@ static int bcmbca_hsspi_probe(struct
> platform_device *pdev)
>
> out_sysgroup_disable:
> sysfs_remove_group(&pdev->dev.kobj, &bcmbca_hsspi_group);
> -out_put_host:
> - spi_controller_put(host);
> out_disable_pll_clk:
> clk_disable_unprepare(pll_clk);
> out_disable_clk:
> --
> 2.34.1
Reviewed-by: William Zhang <william.zhang@broadcom.com>
© 2016 - 2025 Red Hat, Inc.