1 diff -Naur linux-4.9.17.org/drivers/net/ethernet/intel/igb/igb_main.c linux-4.9.17/drivers/net/ethernet/intel/igb/igb_main.c
2 --- linux-4.9.17.org/drivers/net/ethernet/intel/igb/igb_main.c 2017-03-22 12:44:07.000000000 +0100
3 +++ linux-4.9.17/drivers/net/ethernet/intel/igb/igb_main.c 2017-03-24 10:00:52.854812142 +0100
8 - spin_lock(&adapter->stats64_lock);
9 - igb_update_stats(adapter, &adapter->stats64);
10 - spin_unlock(&adapter->stats64_lock);
11 + if (spin_trylock(&adapter->stats64_lock)) {
12 + igb_update_stats(adapter, &adapter->stats64);
13 + spin_unlock(&adapter->stats64_lock);
16 for (i = 0; i < adapter->num_tx_queues; i++) {
17 struct igb_ring *tx_ring = adapter->tx_ring[i];
18 @@ -5391,11 +5392,11 @@
20 struct igb_adapter *adapter = netdev_priv(netdev);
22 - spin_lock(&adapter->stats64_lock);
23 - igb_update_stats(adapter, &adapter->stats64);
24 + if (spin_trylock(&adapter->stats64_lock)) {
25 + igb_update_stats(adapter, &adapter->stats64);
26 + spin_unlock(&adapter->stats64_lock);
28 memcpy(stats, &adapter->stats64, sizeof(*stats));
29 - spin_unlock(&adapter->stats64_lock);