From b38a4294f506340eb0975ac80f471ccf0a59ecb5 Mon Sep 17 00:00:00 2001 From: Andrew Gospodarek Date: Wed, 30 Apr 2008 14:34:34 -0400 Subject: [PATCH] e1000: fix possible concurrent calls to e1000_clean_tx_irq RHBZ: 443034 This change looks to fix was might be a completely theroetical problem where e1000_clean_tx_irq could be called simultaneously on a multi-cpu system when netcosole is running. It looks something like this: "netconsole" code on CPU x | interrupt handler on CPU y --------------------------------------+------------------------------------ | | e1000_intr | __e1000_intr netpoll_send_udp | __netif_rx_schedule netpoll_send_skb | netpoll_poll_dev | net_rx_action // dev->poll_controller | // dev->poll e1000_netpoll | e1000_clean e1000_clean_tx_irq | e1000_clean_tx_irq --- drivers/net/e1000/e1000_main.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c index 7f033ce..cf3924a 100644 --- a/drivers/net/e1000/e1000_main.c +++ b/drivers/net/e1000/e1000_main.c @@ -5633,8 +5633,8 @@ e1000_netpoll(struct net_device *netdev) disable_irq(adapter->pdev->irq); e1000_intr(adapter->pdev->irq, netdev, NULL); - e1000_clean_tx_irq(adapter, adapter->tx_ring); #ifndef CONFIG_E1000_NAPI + e1000_clean_tx_irq(adapter, adapter->tx_ring); adapter->clean_rx(adapter, adapter->rx_ring); #endif enable_irq(adapter->pdev->irq); -- 1.5.2.1