[patch 17/31] r8169: fix a race between PCI probe and dev_open

Greg KH
2007-03-19T21:41:50Z

[-- Attachment #1: r8169-fix-a-race-between-pci-probe-and-dev_open.patch --]
[-- Type: text/plain, Size: 1151 bytes --]

-stable review patch. If anyone has any objections, please let us know.

------------------

Initialize the timer with the rest of the private-struct.

Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

---
drivers/net/r8169.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)

--- a/drivers/net/r8169.c
+++ b/drivers/net/r8169.c
@@ -1369,11 +1369,7 @@ static inline void rtl8169_request_timer
(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
@@ -1686,6 +1682,10 @@ rtl8169_init_one(struct pci_dev *pdev, c
tp->mmio_addr = ioaddr;
tp->align = rtl_cfg_info[ent->driver_data].align;

+ 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);

--