diff options
Diffstat (limited to 'drivers/net/virtio_net.c')
| -rw-r--r-- | drivers/net/virtio_net.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c index ec43284ffd13..6e0a9fefe6cb 100644 --- a/drivers/net/virtio_net.c +++ b/drivers/net/virtio_net.c | |||
| @@ -390,13 +390,14 @@ static void virtnet_remove(struct virtio_device *vdev) | |||
| 390 | struct virtnet_info *vi = vdev->priv; | 390 | struct virtnet_info *vi = vdev->priv; |
| 391 | struct sk_buff *skb; | 391 | struct sk_buff *skb; |
| 392 | 392 | ||
| 393 | /* Stop all the virtqueues. */ | ||
| 394 | vdev->config->reset(vdev); | ||
| 395 | |||
| 393 | /* Free our skbs in send and recv queues, if any. */ | 396 | /* Free our skbs in send and recv queues, if any. */ |
| 394 | vi->rvq->vq_ops->shutdown(vi->rvq); | ||
| 395 | while ((skb = __skb_dequeue(&vi->recv)) != NULL) { | 397 | while ((skb = __skb_dequeue(&vi->recv)) != NULL) { |
| 396 | kfree_skb(skb); | 398 | kfree_skb(skb); |
| 397 | vi->num--; | 399 | vi->num--; |
| 398 | } | 400 | } |
| 399 | vi->svq->vq_ops->shutdown(vi->svq); | ||
| 400 | while ((skb = __skb_dequeue(&vi->send)) != NULL) | 401 | while ((skb = __skb_dequeue(&vi->send)) != NULL) |
| 401 | kfree_skb(skb); | 402 | kfree_skb(skb); |
| 402 | 403 | ||
