diff options
author | AnilKumar Ch <anilkumar@ti.com> | 2012-09-27 08:24:58 -0400 |
---|---|---|
committer | Marc Kleine-Budde <mkl@pengutronix.de> | 2012-09-27 10:34:02 -0400 |
commit | c523530ce17defe6b28ccfe622c506488f430866 (patch) | |
tree | acc79f80593868bbca51263be1a687c553eb8cd3 /drivers/net/can/c_can | |
parent | 842b08bbee448b2069aaebb7f18b40942ad2a1bd (diff) |
can: c_can: fix segfault during rmmod
This patch fixes an oops which occurs during unloading the driver.
unregister_c_can_dev() is doing c_can/d_can module interrupts disable, which
requires module clock enable. c_can/d_can interrupts enable/disable is handled
properly in c_can_start and c_can_stop, so removing from
unregister_c_can_dev().
The problem was triggered by adding runtime PM support to the c_can driver by
this commit:
4cdd34b can: c_can: Add runtime PM support to Bosch C_CAN/D_CAN controller
Signed-off-by: AnilKumar Ch <anilkumar@ti.com>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
Diffstat (limited to 'drivers/net/can/c_can')
-rw-r--r-- | drivers/net/can/c_can/c_can.c | 3 |
1 files changed, 0 insertions, 3 deletions
diff --git a/drivers/net/can/c_can/c_can.c b/drivers/net/can/c_can/c_can.c index 2c4a21f98442..e5180dfddba5 100644 --- a/drivers/net/can/c_can/c_can.c +++ b/drivers/net/can/c_can/c_can.c | |||
@@ -1265,9 +1265,6 @@ void unregister_c_can_dev(struct net_device *dev) | |||
1265 | { | 1265 | { |
1266 | struct c_can_priv *priv = netdev_priv(dev); | 1266 | struct c_can_priv *priv = netdev_priv(dev); |
1267 | 1267 | ||
1268 | /* disable all interrupts */ | ||
1269 | c_can_enable_all_interrupts(priv, DISABLE_ALL_INTERRUPTS); | ||
1270 | |||
1271 | unregister_candev(dev); | 1268 | unregister_candev(dev); |
1272 | 1269 | ||
1273 | c_can_pm_runtime_disable(priv); | 1270 | c_can_pm_runtime_disable(priv); |