diff options
| author | Neeraj Upadhyay <neeraju@codeaurora.org> | 2017-04-26 13:06:19 +0530 |
|---|---|---|
| committer | Neeraj Upadhyay <neeraju@codeaurora.org> | 2017-04-26 13:18:01 +0530 |
| commit | cf3e50f158501b60da7afdfad68e0e7358485581 (patch) | |
| tree | bfce299e75bde15d4fd56623f247b24b895f0c58 /net/unix/af_unix.c | |
| parent | 048c70075fecb8f92d923fc5595efa00f2a00082 (diff) | |
tty: serial: msm: Move request_irq to the end of startup
Move the request_irq() call to the end of the msm_startup(),
so that we don't handle interrupts while msm_startup() is
running. This avoids potential races while initialization
is in progress. For example, consider below scenario
where rx handler reads the intermediate value of dma->chan,
set in msm_request_rx_dma(), and tries to do dma mapping,
which results in data abort.
uart_port_startup()
msm_startup()
request_irq()
...
msm_request_rx_dma()
...
dma->chan = dma_request_slave_channel_reason(dev, "rx");
<UART RX IRQ>
msm_uart_irq()
msm_handle_rx_dm()
msm_start_rx_dma()
dma->desc = dma_map_single()
<data abort>
Change-Id: I94113fe1ebe400f9bb0113922ebc5d257124e34a
Signed-off-by: Neeraj Upadhyay <neeraju@codeaurora.org>
Diffstat (limited to 'net/unix/af_unix.c')
0 files changed, 0 insertions, 0 deletions
