spi: sn-f-ospi: Fix resource leak in f_ospi_probe()

In f_ospi_probe(), when num_cs validation fails, it returns without
calling spi_controller_put() on the SPI controller, which causes a
resource leak.

Use devm_spi_alloc_host() instead of spi_alloc_host() to ensure the
SPI controller is properly freed when probe fails.

Fixes: 1b74dd64c8 ("spi: Add Socionext F_OSPI SPI flash controller driver")
Signed-off-by: Felix Gu <ustc.gu@gmail.com>
Link: https://patch.msgid.link/20260319-sn-f-v1-1-33a6738d2da8@gmail.com
Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
Felix Gu 2026-03-19 00:12:34 +08:00 committed by Mark Brown
parent c369299895
commit ef3d549e1d
No known key found for this signature in database
GPG Key ID: 24D68B725D5487D0

View File

@ -612,7 +612,7 @@ static int f_ospi_probe(struct platform_device *pdev)
u32 num_cs = OSPI_NUM_CS;
int ret;
ctlr = spi_alloc_host(dev, sizeof(*ospi));
ctlr = devm_spi_alloc_host(dev, sizeof(*ospi));
if (!ctlr)
return -ENOMEM;
@ -635,16 +635,12 @@ static int f_ospi_probe(struct platform_device *pdev)
platform_set_drvdata(pdev, ospi);
ospi->base = devm_platform_ioremap_resource(pdev, 0);
if (IS_ERR(ospi->base)) {
ret = PTR_ERR(ospi->base);
goto err_put_ctlr;
}
if (IS_ERR(ospi->base))
return PTR_ERR(ospi->base);
ospi->clk = devm_clk_get_enabled(dev, NULL);
if (IS_ERR(ospi->clk)) {
ret = PTR_ERR(ospi->clk);
goto err_put_ctlr;
}
if (IS_ERR(ospi->clk))
return PTR_ERR(ospi->clk);
mutex_init(&ospi->mlock);
@ -661,9 +657,6 @@ static int f_ospi_probe(struct platform_device *pdev)
err_destroy_mutex:
mutex_destroy(&ospi->mlock);
err_put_ctlr:
spi_controller_put(ctlr);
return ret;
}