Re: r8169: Crash after reloading driver if network hangs
From: Francois Romieu <romieu@fr.zoreil.com>
Date: 2007-01-29 07:56:38
From: Francois Romieu <romieu@fr.zoreil.com>
Date: 2007-01-29 07:56:38
Bernhard Walle [off-list ref] : [...]
Doesn't compile, I think you mean this?
Yes.
@@ -1371,10 +1371,9 @@ static inline void rtl8169_request_timer 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); }But I think _this_ change is unnecessary, ...
add_timer() is not supposed to modify an existing timer whereas mod_timer() encompasses both and the race exists in both direction as netif_running() is true as soon as dev_open() starts but way before dev->open() completes. [...]
... but that looks good (better than my patch) and should resolve the issue, too. I can't test because it's triggered only if the network hangs and you know, the last one isn't reproducable.
There will be something to test in the merge of realtek's stuff #2. -- Ueimor