aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/can
diff options
context:
space:
mode:
authorMarc Kleine-Budde <mkl@pengutronix.de>2010-10-20 21:01:15 -0400
committerDavid S. Miller <davem@davemloft.net>2010-10-24 17:47:48 -0400
commit759a6c768dcdbbb4d3f1fb965b674c15773e09ca (patch)
treeae167ac4b6ba9cc212115c3b51bd8aa3376b7a6e /drivers/net/can
parent8a0e0a49b0a917c8c8dce6f7121ec73a5c8e3932 (diff)
can: at91_can: fix use after free of priv
The priv is part of the memory allocated by alloc_candev(). This patch moved the free it after last usage of priv. While there convert all free_netdev() to free_candev() (which is currently just a wrapper around free_netdev()) to be symetrically with the allocation via alloc_candev(). Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/can')
-rw-r--r--drivers/net/can/at91_can.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/drivers/net/can/at91_can.c b/drivers/net/can/at91_can.c
index 3b66c6736832..2c17e7437c47 100644
--- a/drivers/net/can/at91_can.c
+++ b/drivers/net/can/at91_can.c
@@ -1101,7 +1101,7 @@ static int __init at91_can_probe(struct platform_device *pdev)
1101 return 0; 1101 return 0;
1102 1102
1103 exit_free: 1103 exit_free:
1104 free_netdev(dev); 1104 free_candev(dev);
1105 exit_iounmap: 1105 exit_iounmap:
1106 iounmap(addr); 1106 iounmap(addr);
1107 exit_release: 1107 exit_release:
@@ -1122,8 +1122,6 @@ static int __devexit at91_can_remove(struct platform_device *pdev)
1122 1122
1123 platform_set_drvdata(pdev, NULL); 1123 platform_set_drvdata(pdev, NULL);
1124 1124
1125 free_netdev(dev);
1126
1127 iounmap(priv->reg_base); 1125 iounmap(priv->reg_base);
1128 1126
1129 res = platform_get_resource(pdev, IORESOURCE_MEM, 0); 1127 res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
@@ -1131,6 +1129,8 @@ static int __devexit at91_can_remove(struct platform_device *pdev)
1131 1129
1132 clk_put(priv->clk); 1130 clk_put(priv->clk);
1133 1131
1132 free_candev(dev);
1133
1134 return 0; 1134 return 0;
1135} 1135}
1136 1136