android_kernel_oneplus_msm8998/drivers/net/can
Sergei Miroshnichenko 7677956e40 can: dev: fix deadlock reported after bus-off
commit 9abefcb1aaa58b9d5aa40a8bb12c87d02415e4c8 upstream.

A timer was used to restart after the bus-off state, leading to a
relatively large can_restart() executed in an interrupt context,
which in turn sets up pinctrl. When this happens during system boot,
there is a high probability of grabbing the pinctrl_list_mutex,
which is locked already by the probe() of other device, making the
kernel suspect a deadlock condition [1].

To resolve this issue, the restart_timer is replaced by a delayed
work.

[1] https://github.com/victronenergy/venus/issues/24

Signed-off-by: Sergei Miroshnichenko <sergeimir@emcraft.com>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2016-10-07 15:23:40 +02:00
..
c_can can: c_can: Update D_CAN TX and RX functions to 32 bit - fix Altera Cyclone access 2016-08-10 11:49:28 +02:00
cc770 can: fix assignment of error location in CAN error messages 2015-11-23 09:37:34 +01:00
m_can can: fix handling of unmodifiable configuration options 2016-06-01 12:15:50 -07:00
mscan
sja1000 can: remove obsolete assignment for CAN protocol error type 2015-11-23 09:37:38 +01:00
softing
spi spi: Drop owner assignment from spi_drivers 2015-10-28 10:30:17 +09:00
usb can: gs_usb: fixed disconnect bug by removing erroneous use of kfree() 2016-03-16 08:42:59 -07:00
at91_can.c can: at91_can: RX queue could get stuck at high bus load 2016-08-10 11:49:28 +02:00
bfin_can.c can: remove obsolete assignment for CAN protocol error type 2015-11-23 09:37:38 +01:00
dev.c can: dev: fix deadlock reported after bus-off 2016-10-07 15:23:40 +02:00
flexcan.c can: flexcan: fix resume function 2016-09-30 10:18:38 +02:00
grcan.c can: grcan: don't touch skb after netif_rx() 2015-07-15 09:04:27 +02:00
janz-ican3.c can: remove obsolete assignment for CAN protocol error type 2015-11-23 09:37:38 +01:00
Kconfig can: Allwinner A10/A20 CAN Controller support - Kernel module 2015-09-17 22:39:08 +02:00
led.c
Makefile can: Allwinner A10/A20 CAN Controller support - Kernel module 2015-09-17 22:39:08 +02:00
pch_can.c can: fix assignment of error location in CAN error messages 2015-11-23 09:37:34 +01:00
rcar_can.c can: remove obsolete assignment for CAN protocol error type 2015-11-23 09:37:38 +01:00
slcan.c can: slcan: don't touch skb after netif_rx_ni() 2015-07-15 09:04:27 +02:00
sun4i_can.c can: remove obsolete assignment for CAN protocol error type 2015-11-23 09:37:38 +01:00
ti_hecc.c can: remove obsolete assignment for CAN protocol error type 2015-11-23 09:37:38 +01:00
vcan.c can: replace timestamp as unique skb attribute 2015-07-12 21:13:22 +02:00
xilinx_can.c can: remove obsolete assignment for CAN protocol error type 2015-11-23 09:37:38 +01:00