mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-20 03:04:01 +08:00
spi: rockchip: potential NULL dereference on error
We were calling dma_release_channel(rs->dma_tx.ch) when "rs->dma_tx.ch"
is potentially NULL. There is actually a call to that in the unwind
code at the bottom of the function so we can just re-arrange this a bit
and remove the call. Also there is no need to set rs->dma_tx.ch to
NULL on this error path.
Fixes: e4c0e06f94
('spi: rockchip: fix probe deferral handling')
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
3d277b1779
commit
5de7ed0c98
@ -744,10 +744,8 @@ static int rockchip_spi_probe(struct platform_device *pdev)
|
||||
rs->dma_rx.ch = dma_request_chan(rs->dev, "rx");
|
||||
if (IS_ERR(rs->dma_rx.ch)) {
|
||||
if (PTR_ERR(rs->dma_rx.ch) == -EPROBE_DEFER) {
|
||||
dma_release_channel(rs->dma_tx.ch);
|
||||
rs->dma_tx.ch = NULL;
|
||||
ret = -EPROBE_DEFER;
|
||||
goto err_get_fifo_len;
|
||||
goto err_free_dma_tx;
|
||||
}
|
||||
dev_warn(rs->dev, "Failed to request RX DMA channel\n");
|
||||
rs->dma_rx.ch = NULL;
|
||||
@ -775,10 +773,11 @@ static int rockchip_spi_probe(struct platform_device *pdev)
|
||||
|
||||
err_register_master:
|
||||
pm_runtime_disable(&pdev->dev);
|
||||
if (rs->dma_tx.ch)
|
||||
dma_release_channel(rs->dma_tx.ch);
|
||||
if (rs->dma_rx.ch)
|
||||
dma_release_channel(rs->dma_rx.ch);
|
||||
err_free_dma_tx:
|
||||
if (rs->dma_tx.ch)
|
||||
dma_release_channel(rs->dma_tx.ch);
|
||||
err_get_fifo_len:
|
||||
clk_disable_unprepare(rs->spiclk);
|
||||
err_spiclk_enable:
|
||||
|
Loading…
Reference in New Issue
Block a user