From: Cyrille Pitchen Date: Mon, 15 Dec 2014 14:13:31 +0000 (+0100) Subject: net/macb: fix misplaced call of free_netdev() in macb_remove() X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=e965be7d17b9c82424cbb079506f0f9a4f41656c;p=openwrt%2Fstaging%2Fblogic.git net/macb: fix misplaced call of free_netdev() in macb_remove() fix a bug introduced by the multiqueue support patch: "net/macb: add TX multiqueue support for gem" the "bp" pointer to the netdev private data was dereferenced and used after the associated memory had been freed by calling free_netdev(). Signed-off-by: Cyrille Pitchen Signed-off-by: David S. Miller --- diff --git a/drivers/net/ethernet/cadence/macb.c b/drivers/net/ethernet/cadence/macb.c index 06dea3dd463c..84029ed96d6f 100644 --- a/drivers/net/ethernet/cadence/macb.c +++ b/drivers/net/ethernet/cadence/macb.c @@ -2408,11 +2408,11 @@ static int __exit macb_remove(struct platform_device *pdev) queue = bp->queues; for (q = 0; q < bp->num_queues; ++q, ++queue) devm_free_irq(&pdev->dev, queue->irq, queue); - free_netdev(dev); if (!IS_ERR(bp->tx_clk)) clk_disable_unprepare(bp->tx_clk); clk_disable_unprepare(bp->hclk); clk_disable_unprepare(bp->pclk); + free_netdev(dev); } return 0;