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