Skip to content
This repository was archived by the owner on Nov 8, 2023. It is now read-only.

Commit 924c0af

Browse files
NXP-CarlosSonggregkh
authored andcommitted
spi: spi-fsl-lpspi: remove redundant spi_controller_put call
[ Upstream commit bff892a ] devm_spi_alloc_controller will allocate an SPI controller and automatically release a reference on it when dev is unbound from its driver. It doesn't need to call spi_controller_put explicitly to put the reference when lpspi driver failed initialization. Fixes: 2ae0ab0 ("spi: lpspi: Avoid potential use-after-free in probe()") Signed-off-by: Carlos Song <[email protected]> Reviewed-by: Alexander Sverdlin <[email protected]> Link: https://msgid.link/r/[email protected] Signed-off-by: Mark Brown <[email protected]> Signed-off-by: Sasha Levin <[email protected]>
1 parent 18f3fdb commit 924c0af

File tree

1 file changed

+6
-8
lines changed

1 file changed

+6
-8
lines changed

drivers/spi/spi-fsl-lpspi.c

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -881,39 +881,39 @@ static int fsl_lpspi_probe(struct platform_device *pdev)
881881
fsl_lpspi->base = devm_platform_get_and_ioremap_resource(pdev, 0, &res);
882882
if (IS_ERR(fsl_lpspi->base)) {
883883
ret = PTR_ERR(fsl_lpspi->base);
884-
goto out_controller_put;
884+
return ret;
885885
}
886886
fsl_lpspi->base_phys = res->start;
887887

888888
irq = platform_get_irq(pdev, 0);
889889
if (irq < 0) {
890890
ret = irq;
891-
goto out_controller_put;
891+
return ret;
892892
}
893893

894894
ret = devm_request_irq(&pdev->dev, irq, fsl_lpspi_isr, 0,
895895
dev_name(&pdev->dev), fsl_lpspi);
896896
if (ret) {
897897
dev_err(&pdev->dev, "can't get irq%d: %d\n", irq, ret);
898-
goto out_controller_put;
898+
return ret;
899899
}
900900

901901
fsl_lpspi->clk_per = devm_clk_get(&pdev->dev, "per");
902902
if (IS_ERR(fsl_lpspi->clk_per)) {
903903
ret = PTR_ERR(fsl_lpspi->clk_per);
904-
goto out_controller_put;
904+
return ret;
905905
}
906906

907907
fsl_lpspi->clk_ipg = devm_clk_get(&pdev->dev, "ipg");
908908
if (IS_ERR(fsl_lpspi->clk_ipg)) {
909909
ret = PTR_ERR(fsl_lpspi->clk_ipg);
910-
goto out_controller_put;
910+
return ret;
911911
}
912912

913913
/* enable the clock */
914914
ret = fsl_lpspi_init_rpm(fsl_lpspi);
915915
if (ret)
916-
goto out_controller_put;
916+
return ret;
917917

918918
ret = pm_runtime_get_sync(fsl_lpspi->dev);
919919
if (ret < 0) {
@@ -974,8 +974,6 @@ static int fsl_lpspi_probe(struct platform_device *pdev)
974974
pm_runtime_dont_use_autosuspend(fsl_lpspi->dev);
975975
pm_runtime_put_sync(fsl_lpspi->dev);
976976
pm_runtime_disable(fsl_lpspi->dev);
977-
out_controller_put:
978-
spi_controller_put(controller);
979977

980978
return ret;
981979
}

0 commit comments

Comments
 (0)