mirror of
https://github.com/torvalds/linux.git
synced 2026-05-25 07:33:19 +02:00
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:
parent
c369299895
commit
ef3d549e1d
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user