diff options
author | Marc Kleine-Budde <mkl@pengutronix.de> | 2010-10-21 05:07:58 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-10-26 10:48:58 -0700 |
commit | 9a27586d3d5c3157260b055d057c6f4f6654c72c (patch) | |
tree | 27ac8230bde3a11881795acedc7b4c44671a8fbe | |
parent | 06d6e6d2e4ef61172f342fddeea5cfa465d81578 (diff) |
can: flexcan: 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.
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/net/can/flexcan.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/net/can/flexcan.c b/drivers/net/can/flexcan.c index ef443a090ba..d4990568bae 100644 --- a/drivers/net/can/flexcan.c +++ b/drivers/net/can/flexcan.c @@ -992,7 +992,6 @@ static int __devexit flexcan_remove(struct platform_device *pdev) unregister_flexcandev(dev); platform_set_drvdata(pdev, NULL); - free_candev(dev); iounmap(priv->base); mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); @@ -1000,6 +999,8 @@ static int __devexit flexcan_remove(struct platform_device *pdev) clk_put(priv->clk); + free_candev(dev); + return 0; } |