diff options
author | Vlad Lungu <vlad.lungu@windriver.com> | 2010-11-29 22:52:52 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-12-02 13:19:48 -0800 |
commit | f8e9616108c7003e6499c162459258f11c9dc85e (patch) | |
tree | 76b43ae643ff2e2898b18fd45b8b680d14221c1e | |
parent | 6dcdd1b3694a4fa2b85167a9c860c7613a7553c7 (diff) | |
download | linux-f8e9616108c7003e6499c162459258f11c9dc85e.tar.bz2 |
stmmac: priv->lock can be used uninitialized
To reproduce: if connman (http://connman.net/) is started,
inserting the stmmac module triggers a "BUG: spinlock bad magic on CPU#0".
Registering the device in stmmac_probe() sends a notification to connman
which brings the interface up before the lock is initialized.
Signed-off-by: Vlad Lungu <vlad.lungu@windriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/net/stmmac/stmmac_main.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/net/stmmac/stmmac_main.c b/drivers/net/stmmac/stmmac_main.c index 06bc6034ce81..2114837809e7 100644 --- a/drivers/net/stmmac/stmmac_main.c +++ b/drivers/net/stmmac/stmmac_main.c @@ -1509,6 +1509,8 @@ static int stmmac_probe(struct net_device *dev) pr_warning("\tno valid MAC address;" "please, use ifconfig or nwhwconfig!\n"); + spin_lock_init(&priv->lock); + ret = register_netdev(dev); if (ret) { pr_err("%s: ERROR %i registering the device\n", @@ -1520,8 +1522,6 @@ static int stmmac_probe(struct net_device *dev) dev->name, (dev->features & NETIF_F_SG) ? "on" : "off", (dev->features & NETIF_F_HW_CSUM) ? "on" : "off"); - spin_lock_init(&priv->lock); - return ret; } |