Commit 10f76215 authored by Thomas Falcon's avatar Thomas Falcon Committed by David S. Miller

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: default avatarThomas Falcon <tlfalcon@linux.vnet.ibm.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 2ce9e4ef
...@@ -804,7 +804,6 @@ static int __ibmvnic_close(struct net_device *netdev) ...@@ -804,7 +804,6 @@ static int __ibmvnic_close(struct net_device *netdev)
adapter->state = VNIC_CLOSING; adapter->state = VNIC_CLOSING;
netif_tx_stop_all_queues(netdev); netif_tx_stop_all_queues(netdev);
ibmvnic_napi_disable(adapter); ibmvnic_napi_disable(adapter);
clean_tx_pools(adapter);
if (adapter->tx_scrq) { if (adapter->tx_scrq) {
for (i = 0; i < adapter->req_tx_queues; i++) for (i = 0; i < adapter->req_tx_queues; i++)
...@@ -833,6 +832,7 @@ static int __ibmvnic_close(struct net_device *netdev) ...@@ -833,6 +832,7 @@ static int __ibmvnic_close(struct net_device *netdev)
} }
} }
clean_tx_pools(adapter);
adapter->state = VNIC_CLOSED; adapter->state = VNIC_CLOSED;
return rc; return rc;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment