drivers: dma: pch_dma.c: Avoid data race between probe and irq handler
diff mbox series

Message ID 20200416062335.29223-1-madhuparnabhowmik10@gmail.com
State Accepted
Commit 2e45676a4d33af47259fa186ea039122ce263ba9
Headers show
Series
  • drivers: dma: pch_dma.c: Avoid data race between probe and irq handler
Related show

Commit Message

Madhuparna Bhowmik April 16, 2020, 6:23 a.m. UTC
From: Madhuparna Bhowmik <madhuparnabhowmik10@gmail.com>

pd->dma.dev is read in irq handler pd_irq().
However, it is set to pdev->dev after request_irq().
Therefore, set pd->dma.dev to pdev->dev before request_irq() to
avoid data race between pch_dma_probe() and pd_irq().

Found by Linux Driver Verification project (linuxtesting.org).

Signed-off-by: Madhuparna Bhowmik <madhuparnabhowmik10@gmail.com>
---
 drivers/dma/pch_dma.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Vinod Koul April 23, 2020, 6:19 a.m. UTC | #1
On 16-04-20, 11:53, madhuparnabhowmik10@gmail.com wrote:
> From: Madhuparna Bhowmik <madhuparnabhowmik10@gmail.com>
> 
> pd->dma.dev is read in irq handler pd_irq().
> However, it is set to pdev->dev after request_irq().
> Therefore, set pd->dma.dev to pdev->dev before request_irq() to
> avoid data race between pch_dma_probe() and pd_irq().

Please use the right subsystem tag for patch. You can find that using
git log on the respective subsystem, in this case it would have told you
that it is dmaengine.

I have fixed that up and applied it, thanks for the patch
Madhuparna Bhowmik April 23, 2020, 6:13 p.m. UTC | #2
On Thu, Apr 23, 2020 at 11:49:35AM +0530, Vinod Koul wrote:
> On 16-04-20, 11:53, madhuparnabhowmik10@gmail.com wrote:
> > From: Madhuparna Bhowmik <madhuparnabhowmik10@gmail.com>
> > 
> > pd->dma.dev is read in irq handler pd_irq().
> > However, it is set to pdev->dev after request_irq().
> > Therefore, set pd->dma.dev to pdev->dev before request_irq() to
> > avoid data race between pch_dma_probe() and pd_irq().
> 
> Please use the right subsystem tag for patch. You can find that using
> git log on the respective subsystem, in this case it would have told you
> that it is dmaengine.
>
Sure, I will take care of this.

> I have fixed that up and applied it, thanks for the patch
>
Thank you,
Madhuparna
> -- 
> ~Vinod

Patch
diff mbox series

diff --git a/drivers/dma/pch_dma.c b/drivers/dma/pch_dma.c
index 581e7a290d98..a3b0b4c56a19 100644
--- a/drivers/dma/pch_dma.c
+++ b/drivers/dma/pch_dma.c
@@ -865,6 +865,7 @@  static int pch_dma_probe(struct pci_dev *pdev,
 	}
 
 	pci_set_master(pdev);
+	pd->dma.dev = &pdev->dev;
 
 	err = request_irq(pdev->irq, pd_irq, IRQF_SHARED, DRV_NAME, pd);
 	if (err) {
@@ -880,7 +881,6 @@  static int pch_dma_probe(struct pci_dev *pdev,
 		goto err_free_irq;
 	}
 
-	pd->dma.dev = &pdev->dev;
 
 	INIT_LIST_HEAD(&pd->dma.channels);