dect
/
linux-2.6
Archived
13
0
Fork 0

ARM: OMAP: Fix race in OMAP2/3 DMA IRQ handling

CSR must be cleared before invoking the callback.

If the callback function starts a new, fast DMA transfer on the same
channel, the completion status might lost if CSR is cleared after
the callback invocation.

Signed-off-by: Juha Yrjola <juha.yrjola@solidboot.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
This commit is contained in:
Juha Yrjola 2009-01-29 08:57:12 -08:00 committed by Tony Lindgren
parent 06151158f2
commit 320ce6f6fb
1 changed files with 2 additions and 2 deletions

View File

@ -1888,11 +1888,11 @@ static int omap2_dma_handle_ch(int ch)
status = dma_read(CSR(ch));
}
dma_write(status, CSR(ch));
if (likely(dma_chan[ch].callback != NULL))
dma_chan[ch].callback(ch, status, dma_chan[ch].data);
dma_write(status, CSR(ch));
return 0;
}