linux/drivers/net/can
Sergei Miroshnichenko ca0e1ef2b9 can: dev: fix deadlock reported after bus-off
commit 9abefcb1aa 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: Ben Hutchings <ben@decadent.org.uk>
History 2016-11-20 01:17:34 +00:00
..
c_can can: c_can: Update D_CAN TX and RX functions to 32 bit - fix Altera Cyclone access 2016-08-22 22:38:17 +01:00
cc770 can: Unify MTU settings for CAN interfaces 2014-03-17 09:20:16 +01:00
mscan can: mscan: Fix Kconfig dependencies 2014-05-19 09:38:21 +02:00
sja1000 can: sja1000: clear interrupts on start 2016-01-05 11:22:20 +00:00
softing can: softing: remove unused sysfs attributes 2014-04-25 00:09:03 +02:00
spi can: mcp251x: fix resume when device is down 2015-08-11 09:57:33 +01:00
usb can: gs_usb: fixed disconnect bug by removing erroneous use of kfree() 2016-03-24 10:01:08 +00:00
at91_can.c can: at91_can: RX queue could get stuck at high bus load 2016-08-22 22:38:17 +01:00
bfin_can.c can: Unify MTU settings for CAN interfaces 2014-03-17 09:20:16 +01:00
dev.c can: dev: fix deadlock reported after bus-off 2016-11-20 01:17:34 +00:00
flexcan.c can: flexcan: fix resume function 2016-11-20 01:17:32 +00:00
grcan.c can: Unify MTU settings for CAN interfaces 2014-03-17 09:20:16 +01:00
janz-ican3.c can: Unify MTU settings for CAN interfaces 2014-03-17 09:20:16 +01:00
Kconfig can: xilinx CAN controller support 2014-05-26 09:36:31 +02:00
led.c can: only rename enabled led triggers when changing the netdev name 2014-05-27 15:05:41 +02:00
Makefile can: xilinx CAN controller support 2014-05-26 09:36:31 +02:00
pch_can.c can: Unify MTU settings for CAN interfaces 2014-03-17 09:20:16 +01:00
rcar_can.c can: rcar_can: print signed IRQ # 2015-08-10 17:10:20 +01:00
slcan.c slcan: Port write_wakeup deadlock fix from slip 2014-06-16 21:29:13 -07:00
ti_hecc.c can: Unify MTU settings for CAN interfaces 2014-03-17 09:20:16 +01:00
vcan.c can: add destructor for self generated skbs 2014-01-30 16:25:49 -08:00
xilinx_can.c net: can: xilinx_can: fix extended frame handling 2015-05-28 09:59:59 +01:00