Check for error and NULL before attempting to release DMA channel. This, otherwise, was causing panic and crash in kernel when the dma_chan has an invalid value. The condition occurs during init_dma() when the dma_request_chan() function returns an error. Fixes: fcc8a89a1c83 ("i2c: tegra: Share same DMA channel for RX and TX") Signed-off-by: Akhil R <akhilrajeev@xxxxxxxxxx> --- drivers/i2c/busses/i2c-tegra.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/i2c/busses/i2c-tegra.c b/drivers/i2c/busses/i2c-tegra.c index bcbbf23aa530..636bf340e707 100644 --- a/drivers/i2c/busses/i2c-tegra.c +++ b/drivers/i2c/busses/i2c-tegra.c @@ -427,7 +427,7 @@ static void tegra_i2c_release_dma(struct tegra_i2c_dev *i2c_dev) i2c_dev->dma_buf = NULL; } - if (i2c_dev->dma_chan) { + if (!IS_ERR_OR_NULL(i2c_dev->dma_chan)) { dma_release_channel(i2c_dev->dma_chan); i2c_dev->dma_chan = NULL; } -- 2.17.1