Re: [PATCH v1 3/7] dmaengine: tegra-apb: Prevent race conditions on channel's freeing

From: Michał Mirosław
Date: Mon Dec 30 2019 - 15:51:07 EST


On Mon, Dec 30, 2019 at 09:45:55PM +0100, Michał Mirosław wrote:
> On Sat, Dec 28, 2019 at 11:46:36PM +0300, Dmitry Osipenko wrote:
> > It's unsafe to check the channel's "busy" state without taking a lock,
> > it is also unsafe to assume that tasklet isn't in-fly.
>
> 'in-flight'. Also, the patch seems to have two independent bug-fixes
> in it. Second one doesn't look right, at least not without an explanation.
>
> First:
>
> > - if (tdc->busy)
> > - tegra_dma_terminate_all(dc);
> > + tegra_dma_terminate_all(dc);
>
> Second:
>
> > + tasklet_kill(&tdc->tasklet);

BTW, maybe you can convert the code to threaded interrupt handler and
just get rid of the tasklet instead of fixing it?

Best Regards,
Michał Mirosław