diff options
| author | John Keeping <[email protected]> | 2018-07-17 11:48:16 +0100 | 
|---|---|---|
| committer | Vinod Koul <[email protected]> | 2018-07-25 17:59:57 +0530 | 
| commit | e49756544a21f5625b379b3871d27d8500764670 (patch) | |
| tree | ee855be5edc379bd8b8e13db4104b7746434c660 /drivers/media/platform/vimc/vimc-scaler.c | |
| parent | 2f903bab92dea8dec8c93e4fa3c7c5295ef0a0fe (diff) | |
dmaengine: pl330: fix irq race with terminate_all
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
Signed-off-by: John Keeping <[email protected]>
Signed-off-by: Vinod Koul <[email protected]>
Diffstat (limited to 'drivers/media/platform/vimc/vimc-scaler.c')
0 files changed, 0 insertions, 0 deletions