[Intel-wired-lan] [e1000_netpoll] BUG: sleeping function called from invalid context at kernel/irq/manage.c:110

nick xerofoify at gmail.com
Tue Jul 26 12:48:50 UTC 2016



On 2016-07-26 05:50 AM, Thomas Gleixner wrote:
> On Tue, 26 Jul 2016, Fengguang Wu wrote:
>> --- a/drivers/net/ethernet/intel/e1000/e1000_main.c
>> +++ b/drivers/net/ethernet/intel/e1000/e1000_main.c
>> @@ -3797,7 +3797,7 @@ static irqreturn_t e1000_intr(int irq, void *data)
>> 		hw->get_link_status = 1;
>> 		/* guard against interrupt when we're going down */
>> 		if (!test_bit(__E1000_DOWN, &adapter->flags))
>> -			schedule_delayed_work(&adapter->watchdog_task, 1);
>> +			mod_timer(&adapter->watchdog_timer, jiffies + 1);
> 
> ROTFL ....
> 
Thomas,
Yes it's a pretty funny typo, below is a patch that fixes the build error
 as reported by kbuild robot:
>From 013dbc315c452d37d565e9c27b90b02239b5a1bb Mon Sep 17 00:00:00 2001
From: Nicholas Krause <xerofoify at gmail.com>
Date: Tue, 26 Jul 2016 08:43:56 -0400
Subject: [PATCH] use atomic mod timer rather then schedule work

Signed-off-by: Nicholas Krause <xerofoify at gmail.com>
---
 drivers/net/ethernet/intel/e1000/e1000_main.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/intel/e1000/e1000_main.c b/drivers/net/ethernet/intel/e1000/e1000_main.c
index f42129d..e1830af 100644
--- a/drivers/net/ethernet/intel/e1000/e1000_main.c
+++ b/drivers/net/ethernet/intel/e1000/e1000_main.c
@@ -3797,7 +3797,7 @@ static irqreturn_t e1000_intr(int irq, void *data)
 		hw->get_link_status = 1;
 		/* guard against interrupt when we're going down */
 		if (!test_bit(__E1000_DOWN, &adapter->flags))
-			schedule_delayed_work(&adapter->watchdog_task, 1);
+			mod_work(&adapter->watchdog_task, jiffies + 1);
 	}
 
 	/* disable interrupts, without the synchronize_irq bit */
-- 
2.7.4
Cheers,
Nick


More information about the Intel-wired-lan mailing list