diff options
| -rw-r--r-- | net/core/netpoll.c | 6 | 
1 files changed, 4 insertions, 2 deletions
diff --git a/net/core/netpoll.c b/net/core/netpoll.c index 156d7fd81fec..a01abdd2d3ea 100644 --- a/net/core/netpoll.c +++ b/net/core/netpoll.c @@ -243,7 +243,9 @@ static void netpoll_send_skb(struct netpoll *np, struct sk_buff *skb)  	/* don't get messages out of order, and no recursion */  	if (skb_queue_len(&npinfo->txq) == 0 &&  		    npinfo->poll_owner != smp_processor_id()) { -		local_bh_disable();	/* Where's netif_tx_trylock_bh()? */ +		unsigned long flags; + +		local_irq_save(flags);  		if (netif_tx_trylock(dev)) {  			/* try until next clock tick */  			for (tries = jiffies_to_usecs(1)/USEC_PER_POLL; @@ -261,7 +263,7 @@ static void netpoll_send_skb(struct netpoll *np, struct sk_buff *skb)  			}  			netif_tx_unlock(dev);  		} -		local_bh_enable(); +		local_irq_restore(flags);  	}  	if (status != NETDEV_TX_OK) {  | 
