Message ID | 1277825078-2992-1-git-send-email-leitao@linux.vnet.ibm.com |
---|---|
State | Changes Requested, archived |
Delegated to: | David Miller |
Headers | show |
diff --git a/drivers/net/qlge/qlge_main.c b/drivers/net/qlge/qlge_main.c index fa4b24c..7b10521 100644 --- a/drivers/net/qlge/qlge_main.c +++ b/drivers/net/qlge/qlge_main.c @@ -4808,8 +4808,14 @@ static void qlge_io_resume(struct pci_dev *pdev) netif_err(qdev, ifup, qdev->ndev, "Device was not running prior to EEH.\n"); } - qdev->timer.expires = jiffies + (5*HZ); - add_timer(&qdev->timer); + + if (timer_pending(&qdev->timer)) + mod_timer(&qdev->timer, jiffies + (5*HZ)); + else{ + qdev->timer.expires = jiffies + (5*HZ); + add_timer(&qdev->timer); + } + netif_device_attach(ndev); }
On some ocasions the function qlge_io_resume() tries to add a pending timer, which causes the system to hit the BUG() on add_timer() function. This patch only add a new timer if the timer is not pending, if so, it just reload it. Signed-off-by: Breno Leitao <leitao@linux.vnet.ibm.com> --- drivers/net/qlge/qlge_main.c | 10 ++++++++-- 1 files changed, 8 insertions(+), 2 deletions(-)