]> rtime.felk.cvut.cz Git - socketcan-devel.git/commitdiff
mcp251x CAN driver: fixes race condition on module unload and can device up
authorwolf <wolf@030b6a49-0b11-0410-94ab-b0dab22257f2>
Fri, 13 Feb 2009 16:40:34 +0000 (16:40 +0000)
committerwolf <wolf@030b6a49-0b11-0410-94ab-b0dab22257f2>
Fri, 13 Feb 2009 16:40:34 +0000 (16:40 +0000)
Signed-off-by: Christian Pellegrin <chripell@fsfe.org>
git-svn-id: svn://svn.berlios.de//socketcan/trunk@934 030b6a49-0b11-0410-94ab-b0dab22257f2

kernel/2.6/drivers/net/can/mcp251x.c

index 24778c920e4abd62f0230b5a07fa59b3416a49ef..b765759117c13737b855d8892b5e7732dc772350 100644 (file)
@@ -1136,6 +1136,9 @@ static int __devexit mcp251x_can_remove(struct spi_device *spi)
        struct mcp251x_priv *priv = dev_get_drvdata(&spi->dev);
        struct net_device *net = priv->net;
 
+       unregister_candev(net);
+       free_candev(net);
+
        free_irq(spi->irq, net);
        priv->force_quit = 1;
        flush_workqueue(priv->wq);
@@ -1149,9 +1152,6 @@ static int __devexit mcp251x_can_remove(struct spi_device *spi)
                kfree(priv->spi_rx_buf);
        }
 
-       unregister_candev(net);
-       free_candev(net);
-
        if (pdata->power_enable)
                pdata->power_enable(0);