linux/drivers/net/can
Stefan Agner 8a5d1e374b can: mcp251x: fix resume when device is down
commit 25b401c181 upstream.

If a valid power regulator or a dummy regulator is used (which
happens to be the case when no regulator is specified), restart_work
is queued no matter whether the device was running or not at suspend
time. Since work queues get initialized in the ndo_open callback,
resuming leads to a NULL pointer exception.

Reverse exactly the steps executed at suspend time:
- Enable the power regulator in any case
- Enable the transceiver regulator if the device was running, even in
  case we have a power regulator
- Queue restart_work only in case the device was running

Fixes: bf66f3736a ("can: mcp251x: Move to threaded interrupts instead of workqueues.")
Signed-off-by: Stefan Agner <stefan@agner.ch>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
History 2015-08-10 12:21:51 -07:00
..
c_can can: c_can: Fix default pinmux glitch at init 2015-08-10 12:21:51 -07:00
cc770 can: constify of_device_id array 2015-03-17 15:00:23 -04:00
m_can can: m_cam: m_can_fifo_write(): remove return from void function 2015-03-22 23:50:11 +01:00
mscan can: constify of_device_id array 2015-03-17 15:00:23 -04:00
sja1000 can: constify of_device_id array 2015-03-17 15:00:23 -04:00
softing can: move can_stats.bus_off++ from can_bus_off into can_change_state 2015-01-20 13:56:53 +01:00
spi can: mcp251x: fix resume when device is down 2015-08-10 12:21:51 -07:00
usb net:treewide: Fix typo in drivers/net 2015-04-27 13:40:53 -04:00
at91_can.c can: at91_can: use endian agnostic IO accessors 2015-03-22 23:50:12 +01:00
bfin_can.c bfin_can: Merge header file from arch dependent location 2015-03-04 09:52:49 +01:00
dev.c can: replace timestamp as unique skb attribute 2015-08-10 12:21:51 -07:00
flexcan.c can: flexcan: Deferred on Regulator return EPROBE_DEFER 2015-03-22 19:20:10 +01:00
grcan.c can: constify of_device_id array 2015-03-17 15:00:23 -04:00
janz-ican3.c can: janz-ican3: fix type mismatch in assignment 2015-02-04 14:06:43 +01:00
Kconfig can: CAN_GRCAN should depend on HAS_DMA 2015-04-23 14:09:58 -04:00
led.c can: add combined rx/tx LED trigger support 2015-03-22 23:50:11 +01:00
Makefile can: Enable -D__CHECK_ENDIAN__ for sparse by default 2014-12-07 21:22:06 +01:00
pch_can.c can: move can_stats.bus_off++ from can_bus_off into can_change_state 2015-01-20 13:56:53 +01:00
rcar_can.c can: rcar_can: print signed IRQ # 2015-08-10 12:21:51 -07:00
slcan.c can: replace timestamp as unique skb attribute 2015-08-10 12:21:51 -07:00
ti_hecc.c can: move can_stats.bus_off++ from can_bus_off into can_change_state 2015-01-20 13:56:53 +01:00
vcan.c can: replace timestamp as unique skb attribute 2015-08-10 12:21:51 -07:00
xilinx_can.c net: can: xilinx_can: fix extended frame handling 2015-05-01 10:11:46 +02:00