aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/ibm/ibmvnic.c
diff options
context:
space:
mode:
authorThomas Falcon <tlfalcon@linux.vnet.ibm.com>2017-05-26 10:30:31 -0400
committerDavid S. Miller <davem@davemloft.net>2017-05-26 15:32:45 -0400
commit10f7621588b86d181a167c1535d0754eb5a58ba8 (patch)
treed4944cf1fffd65419a4c7e2d15d36d27e84c3ebd /drivers/net/ethernet/ibm/ibmvnic.c
parent2ce9e4efbf4289ce48144ec4986f58033890fb6d (diff)
ibmvnic: Fix cleanup of SKB's on driver close
A race condition occurs when closing the driver. Free'ing of skb's can race between the close routine and ibmvnic_tx_interrupt. To fix this we move the claenup of tx pools during close to after the sub-CRQ interrupts are disabled. Signed-off-by: Thomas Falcon <tlfalcon@linux.vnet.ibm.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/ibm/ibmvnic.c')
-rw-r--r--drivers/net/ethernet/ibm/ibmvnic.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/net/ethernet/ibm/ibmvnic.c b/drivers/net/ethernet/ibm/ibmvnic.c
index 465a8fafd95b..0f705e68755f 100644
--- a/drivers/net/ethernet/ibm/ibmvnic.c
+++ b/drivers/net/ethernet/ibm/ibmvnic.c
@@ -804,7 +804,6 @@ static int __ibmvnic_close(struct net_device *netdev)
804 adapter->state = VNIC_CLOSING; 804 adapter->state = VNIC_CLOSING;
805 netif_tx_stop_all_queues(netdev); 805 netif_tx_stop_all_queues(netdev);
806 ibmvnic_napi_disable(adapter); 806 ibmvnic_napi_disable(adapter);
807 clean_tx_pools(adapter);
808 807
809 if (adapter->tx_scrq) { 808 if (adapter->tx_scrq) {
810 for (i = 0; i < adapter->req_tx_queues; i++) 809 for (i = 0; i < adapter->req_tx_queues; i++)
@@ -833,6 +832,7 @@ static int __ibmvnic_close(struct net_device *netdev)
833 } 832 }
834 } 833 }
835 834
835 clean_tx_pools(adapter);
836 adapter->state = VNIC_CLOSED; 836 adapter->state = VNIC_CLOSED;
837 return rc; 837 return rc;
838} 838}