mirror of https://github.com/torvalds/linux.git
spi: amlogic-spisg: Fix memory leak in aml_spisg_probe()
In aml_spisg_probe(), ctlr is allocated by
spi_alloc_target()/spi_alloc_host(), but fails to call
spi_controller_put() in several error paths. This leads
to a memory leak whenever the driver fails to probe after
the initial allocation.
Convert to use devm_spi_alloc_host()/devm_spi_alloc_target()
to fix the memory leak.
Fixes: cef9991e04 ("spi: Add Amlogic SPISG driver")
Signed-off-by: Felix Gu <ustc.gu@gmail.com>
Link: https://patch.msgid.link/20260308-spisg-v1-1-2cace5cafc24@gmail.com
Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
a00da54d06
commit
b8db955299
|
|
@ -729,9 +729,9 @@ static int aml_spisg_probe(struct platform_device *pdev)
|
|||
};
|
||||
|
||||
if (of_property_read_bool(dev->of_node, "spi-slave"))
|
||||
ctlr = spi_alloc_target(dev, sizeof(*spisg));
|
||||
ctlr = devm_spi_alloc_target(dev, sizeof(*spisg));
|
||||
else
|
||||
ctlr = spi_alloc_host(dev, sizeof(*spisg));
|
||||
ctlr = devm_spi_alloc_host(dev, sizeof(*spisg));
|
||||
if (!ctlr)
|
||||
return -ENOMEM;
|
||||
|
||||
|
|
@ -750,10 +750,8 @@ static int aml_spisg_probe(struct platform_device *pdev)
|
|||
return dev_err_probe(dev, PTR_ERR(spisg->map), "regmap init failed\n");
|
||||
|
||||
irq = platform_get_irq(pdev, 0);
|
||||
if (irq < 0) {
|
||||
ret = irq;
|
||||
goto out_controller;
|
||||
}
|
||||
if (irq < 0)
|
||||
return irq;
|
||||
|
||||
ret = device_reset_optional(dev);
|
||||
if (ret)
|
||||
|
|
@ -817,8 +815,6 @@ static int aml_spisg_probe(struct platform_device *pdev)
|
|||
if (spisg->core)
|
||||
clk_disable_unprepare(spisg->core);
|
||||
clk_disable_unprepare(spisg->pclk);
|
||||
out_controller:
|
||||
spi_controller_put(ctlr);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue