Re: [PATCH] drivers/dma/dma-jz4780: Fix race condition between probe and irq handler

From: Madhuparna Bhowmik
Date: Thu Aug 20 2020 - 23:16:25 EST


On Thu, Aug 20, 2020 at 08:46:43PM +0200, Paul Cercueil wrote:
>
>
> Le jeu. 20 août 2020 à 20:23, Lars-Peter Clausen <lars@xxxxxxxxxx> a écrit :
> > On 8/20/20 1:59 PM, Paul Cercueil wrote:
> > > Hi,
> > >
> > > Le dim. 16 août 2020 à 12:52, madhuparnabhowmik10@xxxxxxxxx a écrit
> > > :
> > > > From: Madhuparna Bhowmik <madhuparnabhowmik10@xxxxxxxxx>
> > > >
> > > > In probe IRQ is requested before zchan->id is initialized which
> > > > can be
> > > > read in the irq handler. Hence, shift request irq and enable
> > > > clock after
> > > > other initializations complete. Here, enable clock part is not
> > > > part of
> > > > the race, it is just shifted down after request_irq to keep the
> > > > error
> > > > path same as before.
> > > >
> > > > Found by Linux Driver Verification project (linuxtesting.org).
> > > >
> > > > Signed-off-by: Madhuparna Bhowmik <madhuparnabhowmik10@xxxxxxxxx>
> > >
> > > I don't think there is a race at all, the interrupt handler won't be
> > > called before the DMA is registered.
> > >
> > From a purely formal verification perspective there is a bug. The
> > interrupt could fire if i.e. the hardware is buggy or something. In
> > general it is a good idea to not request the IRQ until all the resources
> > that are used in the interrupt handler are properly set up. Even if you
> > know that in practice the interrupt will never fire this early.
> >
>
> Fair enough, I'm fine with that, but the patch should be reworked so that
> the clk_prepare_enable() call is not moved.
>

Sure, I will send the v2 of the patch with this change soon.

Thanks,
Madhuparna
> Cheers,
> -Paul
>
>