linux-tegra.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2] i2c: tegra: Fix failure during probe deferral cleanup
@ 2023-07-07 13:26 Thierry Reding
  2023-07-20 15:42 ` Akhil R
                   ` (3 more replies)
  0 siblings, 4 replies; 9+ messages in thread
From: Thierry Reding @ 2023-07-07 13:26 UTC (permalink / raw)
  To: Andi Shyti; +Cc: Wolfram Sang, Jon Hunter, linux-i2c, linux-tegra

From: Thierry Reding <treding@nvidia.com>

If the driver fails to obtain a DMA channel, it will initiate cleanup
and try to release the DMA channel that couldn't be retrieved. This will
cause a crash because the cleanup will try to dereference an ERR_PTR()-
encoded error code.

However, there's nothing to clean up at this point yet, so we can avoid
this by simply resetting the DMA channel to NULL instead of storing the
error code.

Fixes: fcc8a89a1c83 ("i2c: tegra: Share same DMA channel for RX and TX")
Signed-off-by: Thierry Reding <treding@nvidia.com>
---
Changes in v2:
- simplify patch by setting dma_chan = NULL on channel request failure

 drivers/i2c/busses/i2c-tegra.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/i2c/busses/i2c-tegra.c b/drivers/i2c/busses/i2c-tegra.c
index f155e9028f94..2a13f11edfd1 100644
--- a/drivers/i2c/busses/i2c-tegra.c
+++ b/drivers/i2c/busses/i2c-tegra.c
@@ -460,6 +460,7 @@ static int tegra_i2c_init_dma(struct tegra_i2c_dev *i2c_dev)
 	i2c_dev->dma_chan = dma_request_chan(i2c_dev->dev, "tx");
 	if (IS_ERR(i2c_dev->dma_chan)) {
 		err = PTR_ERR(i2c_dev->dma_chan);
+		i2c_dev->dma_chan = NULL;
 		goto err_out;
 	}
 
-- 
2.41.0


^ permalink raw reply related	[flat|nested] 9+ messages in thread
* Re: [PATCH v2] i2c: tegra: Fix failure during probe deferral cleanup
@ 2023-07-17 17:15 Akhil R
  2023-07-17 17:25 ` Shanker Donthineni
  0 siblings, 1 reply; 9+ messages in thread
From: Akhil R @ 2023-07-17 17:15 UTC (permalink / raw)
  To: thierry.reding@gmail.com
  Cc: andi.shyti@kernel.org, Jonathan Hunter, linux-i2c@vger.kernel.org,
	linux-tegra@vger.kernel.org, Wolfram Sang, Shanker Donthineni

>If the driver fails to obtain a DMA channel, it will initiate cleanup
>and try to release the DMA channel that couldn't be retrieved. This will
>cause a crash because the cleanup will try to dereference an ERR_PTR()-
>encoded error code.
>
>However, there's nothing to clean up at this point yet, so we can avoid
>this by simply resetting the DMA channel to NULL instead of storing the
>error code.
>
>Fixes: fcc8a89a1c83 ("i2c: tegra: Share same DMA channel for RX and TX")
>Signed-off-by: Thierry Reding mailto:treding@nvidia.com

This fixed the crash issue seen when there is no dmas property in the device tree.

Tested-by: Akhil R <akhilrajeev@nvidia.com>

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2023-08-14 13:35 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-07-07 13:26 [PATCH v2] i2c: tegra: Fix failure during probe deferral cleanup Thierry Reding
2023-07-20 15:42 ` Akhil R
2023-07-25 16:25 ` Thierry Reding
2023-07-25 21:34 ` Andi Shyti
2023-07-27 15:05   ` Thierry Reding
2023-07-27 19:57     ` Andi Shyti
2023-08-14 13:34 ` Wolfram Sang
  -- strict thread matches above, loose matches on Subject: below --
2023-07-17 17:15 Akhil R
2023-07-17 17:25 ` Shanker Donthineni

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).