linux-can.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] can: c_can: fix segfault during rmmod
@ 2012-09-27 12:24 AnilKumar Ch
  2012-09-27 14:43 ` Marc Kleine-Budde
  0 siblings, 1 reply; 5+ messages in thread
From: AnilKumar Ch @ 2012-09-27 12:24 UTC (permalink / raw)
  To: wg, mkl; +Cc: swarren, linux-can, anantgole, nsekhar, AnilKumar Ch

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().

Signed-off-by: AnilKumar Ch <anilkumar@ti.com>
---
 drivers/net/can/c_can/c_can.c |    3 ---
 1 file changed, 3 deletions(-)

diff --git a/drivers/net/can/c_can/c_can.c b/drivers/net/can/c_can/c_can.c
index 25f4356..7a2a7e4 100644
--- a/drivers/net/can/c_can/c_can.c
+++ b/drivers/net/can/c_can/c_can.c
@@ -1282,9 +1282,6 @@ void unregister_c_can_dev(struct net_device *dev)
 {
 	struct c_can_priv *priv = netdev_priv(dev);
 
-	/* disable all interrupts */
-	c_can_enable_all_interrupts(priv, DISABLE_ALL_INTERRUPTS);
-
 	unregister_candev(dev);
 
 	c_can_pm_runtime_disable(priv);
-- 
1.7.9.5


^ permalink raw reply related	[flat|nested] 5+ messages in thread
* [PATCH] can: c_can: fix segfault during rmmod
@ 2012-09-27 10:41 AnilKumar Ch
  2012-09-27 11:11 ` Marc Kleine-Budde
  0 siblings, 1 reply; 5+ messages in thread
From: AnilKumar Ch @ 2012-09-27 10:41 UTC (permalink / raw)
  To: wg, mkl; +Cc: swarren, linux-can, anantgole, nsekhar, AnilKumar Ch

This patch fixes an oops which occurs during unloading the driver. The
problem is that clock is not enabled during unregister_c_can_dev()
which does c_can/d_can module interrupts enable/disable.

Signed-off-by: AnilKumar Ch <anilkumar@ti.com>
---
 drivers/net/can/c_can/c_can.c |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/drivers/net/can/c_can/c_can.c b/drivers/net/can/c_can/c_can.c
index 2c4a21f..638e3cc 100644
--- a/drivers/net/can/c_can/c_can.c
+++ b/drivers/net/can/c_can/c_can.c
@@ -1265,8 +1265,10 @@ void unregister_c_can_dev(struct net_device *dev)
 {
 	struct c_can_priv *priv = netdev_priv(dev);
 
+	c_can_pm_runtime_get_sync(priv);
 	/* disable all interrupts */
 	c_can_enable_all_interrupts(priv, DISABLE_ALL_INTERRUPTS);
+	c_can_pm_runtime_put_sync(priv);
 
 	unregister_candev(dev);
 
-- 
1.7.0.4


^ permalink raw reply related	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2012-09-27 14:43 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-09-27 12:24 [PATCH] can: c_can: fix segfault during rmmod AnilKumar Ch
2012-09-27 14:43 ` Marc Kleine-Budde
  -- strict thread matches above, loose matches on Subject: below --
2012-09-27 10:41 AnilKumar Ch
2012-09-27 11:11 ` Marc Kleine-Budde
2012-09-27 11:22   ` AnilKumar, Chimata

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).