Messages in this thread | | | Date | Wed, 25 Jul 2018 18:00:10 +0530 | From | Vinod <> | Subject | Re: [PATCH] dmaengine: pl330: fix irq race with terminate_all |
| |
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
| |