summaryrefslogtreecommitdiff
path: root/kernel/workqueue.c
diff options
context:
space:
mode:
authorNeeraj Upadhyay <neeraju@codeaurora.org>2017-04-26 10:37:15 +0530
committerNeeraj Upadhyay <neeraju@codeaurora.org>2017-05-02 16:41:48 +0530
commitbeaa060bcc86f1bad00d6d3bb16a918bd8e57d15 (patch)
tree8a5d62b3f45e85b271f45c2ce764be37f27435dd /kernel/workqueue.c
parent048c70075fecb8f92d923fc5595efa00f2a00082 (diff)
tty: serial: msm: fix potential race b/w startup and irq handling
There is a potential race for tx/rx dma requests between msm_startup() and irq handling, for cases where dmas are not available. This results in irq path trying to do dma mapping, resulting in data abort. 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: Icf5d48f2718c3c6a855ffd3d10988a93f8281d78 Signed-off-by: Neeraj Upadhyay <neeraju@codeaurora.org>
Diffstat (limited to 'kernel/workqueue.c')
0 files changed, 0 insertions, 0 deletions