diff options
author | Marc Kleine-Budde <mkl@pengutronix.de> | 2010-10-21 07:07:58 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-10-26 19:48:58 +0200 |
commit | 9a27586d3d5c3157260b055d057c6f4f6654c72c (patch) | |
tree | 27ac8230bde3a11881795acedc7b4c44671a8fbe /drivers/net/can | |
parent | drivers/net: sgiseeq: fix return on error (diff) | |
download | linux-9a27586d3d5c3157260b055d057c6f4f6654c72c.tar.xz linux-9a27586d3d5c3157260b055d057c6f4f6654c72c.zip |
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>
Diffstat (limited to 'drivers/net/can')
-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 ef443a090ba7..d4990568baee 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; } |