Skip to content

Commit

Permalink
spi: imx: Fix failure path leak on GPIO request error
Browse files Browse the repository at this point in the history
If the code that requests any chip select GPIOs fails, the cleanup of
spi_bitbang_start() by calling spi_bitbang_stop() is not done.  Add this
to the failure path.

Note that spi_bitbang_start() has to be called before requesting GPIOs
because the GPIO data in the spi master is populated when the master is
registed, and that doesn't happen until spi_bitbang_start() is called.

CC: Shawn Guo <shawnguo@kernel.org>
CC: Sascha Hauer <kernel@pengutronix.de>
CC: Fabio Estevam <fabio.estevam@nxp.com>
CC: Mark Brown <broonie@kernel.org>
CC: Oleksij Rempel <o.rempel@pengutronix.de>
Signed-off-by: Trent Piepho <tpiepho@impinj.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
  • Loading branch information
Trent Piepho authored and Mark Brown committed Nov 10, 2017
1 parent 881a0b9 commit 4e21791
Showing 1 changed file with 3 additions and 1 deletion.
4 changes: 3 additions & 1 deletion drivers/spi/spi-imx.c
Original file line number Diff line number Diff line change
Expand Up @@ -1633,7 +1633,7 @@ static int spi_imx_probe(struct platform_device *pdev)
if (ret) {
dev_err(&pdev->dev, "Can't get CS GPIO %i\n",
master->cs_gpios[i]);
goto out_clk_put;
goto out_spi_bitbang;
}
}
}
Expand All @@ -1650,6 +1650,8 @@ static int spi_imx_probe(struct platform_device *pdev)
clk_disable(spi_imx->clk_per);
return ret;

out_spi_bitbang:
spi_bitbang_stop(&spi_imx->bitbang);
out_clk_put:
clk_disable_unprepare(spi_imx->clk_ipg);
out_put_per:
Expand Down

0 comments on commit 4e21791

Please sign in to comment.