Geert Uytterhoeven dd1f2250da serial: sh-sci: Fix locking in sci_submit_rx()
Some callers of sci_submit_rx() hold the port spinlock, others don't.
During fallback to PIO, the driver needs to obtain the port spinlock.
If the lock was already held, spinlock recursion is detected, causing a
deadlock: BUG: spinlock recursion on CPU#0.

Fix this by adding a flag parameter to sci_submit_rx() for the caller to
indicate the port spinlock is already held, so spinlock recursion can be
avoided.

Move the spin_lock_irqsave() up, so all DMA disable steps are protected,
which is safe as the recently introduced dmaengine_terminate_async() can
be called in atomic context.

Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Reviewed-by: Simon Horman <horms+renesas@verge.net.au>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2018-12-17 15:04:11 +01:00
..
2018-11-10 13:32:14 -06:00
2018-10-13 00:50:53 -04:00
2018-10-13 00:50:31 -04:00
2018-10-13 00:50:32 -04:00
2017-11-28 15:32:33 +01:00
2018-10-13 00:50:32 -04:00
2017-11-08 13:08:12 +01:00
2018-10-13 00:50:51 -04:00
2018-10-11 19:50:00 +02:00
2018-12-10 10:17:45 +01:00