]> git.itanic.dy.fi Git - linux-stable/commitdiff
r8169: fix a race between PCI probe and dev_open
authorFrancois Romieu <romieu@fr.zoreil.com>
Fri, 13 Apr 2007 18:18:38 +0000 (20:18 +0200)
committerAdrian Bunk <bunk@stusta.de>
Fri, 13 Apr 2007 18:18:38 +0000 (20:18 +0200)
Initialize the timer with the rest of the private-struct.

Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
Signed-off-by: Adrian Bunk <bunk@stusta.de>
drivers/net/r8169.c

index 78c532df4037312a0cf342b75d10201646911e04..d7e1bb29838bb03ef0aee6b57442541e1c6be8f3 100644 (file)
@@ -1361,11 +1361,7 @@ static inline void rtl8169_request_timer(struct net_device *dev)
            (tp->phy_version >= RTL_GIGA_PHY_VER_H))
                return;
 
-       init_timer(timer);
-       timer->expires = jiffies + RTL8169_PHY_TIMEOUT;
-       timer->data = (unsigned long)(dev);
-       timer->function = rtl8169_phy_timer;
-       add_timer(timer);
+       mod_timer(timer, jiffies + RTL8169_PHY_TIMEOUT);
 }
 
 #ifdef CONFIG_NET_POLL_CONTROLLER
@@ -1644,6 +1640,10 @@ rtl8169_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
        tp->pci_dev = pdev;
        tp->mmio_addr = ioaddr;
 
+       init_timer(&tp->timer);
+       tp->timer.data = (unsigned long) dev;
+       tp->timer.function = rtl8169_phy_timer;
+
        spin_lock_init(&tp->lock);
 
        rc = register_netdev(dev);