linux/drivers/net/can
Marc Kleine-Budde e35d46adc4 can: c_can: don't call pm_runtime_get_sync() from interrupt context
The c_can driver contians a callpath (c_can_poll -> c_can_state_change ->
c_can_get_berr_counter) which may call pm_runtime_get_sync() from the IRQ
handler, which is not allowed and results in "BUG: scheduling while atomic".

This problem is fixed by introducing __c_can_get_berr_counter, which will not
call pm_runtime_get_sync().

Reported-by: Andrew Glen <AGlen@bepmarine.com>
Tested-by: Andrew Glen <AGlen@bepmarine.com>
Signed-off-by: Andrew Glen <AGlen@bepmarine.com>
Cc: linux-stable <stable@vger.kernel.org>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
2013-11-25 21:48:51 +01:00
..
c_can can: c_can: don't call pm_runtime_get_sync() from interrupt context 2013-11-25 21:48:51 +01:00
cc770 can: cc770: use dev_get_platdata() 2013-09-21 15:43:13 +02:00
mscan can: Remove extern from function prototypes 2013-09-24 10:09:18 -04:00
sja1000 can: sja1000: fix {pre,post}_irq() handling and IRQ handler return value 2013-11-25 21:16:53 +01:00
softing Merge branch 'for-davem' of git://gitorious.org/linux-can/linux-can-next 2013-09-30 19:14:20 -04:00
usb can: kvaser_usb: fix usb endpoints detection 2013-10-31 20:20:23 +01:00
at91_can.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2013-10-23 16:49:34 -04:00
bfin_can.c can: bfin_can: use dev_get_platdata() 2013-09-21 15:43:13 +02:00
dev.c can: dev: sort can_changelink() by IFLA_CAN_* 2013-10-31 20:55:15 +01:00
flexcan.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2013-10-23 16:49:34 -04:00
grcan.c drivers: remove unnecessary prom.h includes 2013-10-09 20:03:58 -05:00
janz-ican3.c can: janz-ican3: use dev_get_platdata() 2013-09-21 15:43:14 +02:00
Kconfig can: flexcan: remove HAVE_CAN_FLEXCAN Kconfig symbol 2013-06-03 13:13:49 +02:00
led.c net: pass info struct via netdevice notifier 2013-05-28 13:11:01 -07:00
Makefile can: add tx/rx LED trigger support 2013-01-26 16:58:59 +01:00
mcp251x.c can: mcp251x: use dev_get_platdata() 2013-09-21 15:43:14 +02:00
pch_can.c can: pch_can: remove unnecessary pci_set_drvdata() 2013-09-21 15:43:16 +02:00
slcan.c slcan: rewrite of slc_bump and slc_encaps 2013-09-20 15:38:27 -04:00
ti_hecc.c can: ti_hecc: remove priv->can.do_get_state() callback 2013-10-31 20:55:16 +01:00
vcan.c sections: fix section conflicts in drivers/net 2012-10-06 03:04:42 +09:00