Message ID | 20230717151240.68899-1-akhilrajeev@nvidia.com |
---|---|
State | New |
Headers | show |
Series | i2c: tegra: Fix the check during DMA channel release | expand |
On Mon, Jul 17, 2023 at 08:42:40PM +0530, Akhil R wrote: > 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@nvidia.com> > --- > drivers/i2c/busses/i2c-tegra.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) There's already another patch on the list that should address this: https://patchwork.ozlabs.org/project/linux-tegra/patch/20230707132619.2998382-1-thierry.reding@gmail.com/ Can you please test and provide feedback on that one? Thanks, Thierry
> Hi Thierry and Akhil, > > On Mon, Jul 17, 2023 at 05:24:15PM +0200, Thierry Reding wrote: > > On Mon, Jul 17, 2023 at 08:42:40PM +0530, Akhil R wrote: > > > 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@nvidia.com> > > > --- > > > drivers/i2c/busses/i2c-tegra.c | 2 +- > > > 1 file changed, 1 insertion(+), 1 deletion(-) > > I guess this patch is not needed anymore. Correct. This can be discarded. The below patch from Thierry is for the same fix. https://lore.kernel.org/linux-i2c/20230707132619.2998382-1-thierry.reding@gmail.com/ Regards, Akhil
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; }
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@nvidia.com> --- drivers/i2c/busses/i2c-tegra.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)