Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 320ce6f6 authored by Juha Yrjola's avatar Juha Yrjola Committed by Tony Lindgren
Browse files

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: default avatarJuha Yrjola <juha.yrjola@solidboot.com>
Signed-off-by: default avatarTony Lindgren <tony@atomide.com>

parent 06151158
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -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;
}