Re: [PATCH] dmaengine: pl330: fix irq race with terminate_all

From: Vinod
Date: Wed Jul 25 2018 - 08:30:21 EST


On 17-07-18, 11:48, John Keeping wrote:
> In pl330_update() when checking if a channel has been aborted, the
> channel's lock is not taken, only the overall pl330_dmac lock. But in
> pl330_terminate_all() the aborted flag (req_running==-1) is set under
> the channel lock and not the pl330_dmac lock.
>
> With threaded interrupts, this leads to a potential race:
>
> pl330_terminate_all pl330_update
> ------------------- ------------
> lock channel
> entry
> lock pl330
> _stop channel
> unlock pl330
> lock pl330
> check req_running != -1
> req_running = -1
> _start channel
>

Applied, thanks

--
~Vinod