vhost-net: fix improper cleanup in vhost_net_start
vhost_net_start() missed a corresponding stop_one() upon error from vhost_set_vring_enable(). While at it, make the error handling for err_start more robust. No real issue was found due to this though. Signed-off-by: Si-Wei Liu <si-wei.liu@oracle.com> Acked-by: Jason Wang <jasowang@redhat.com> Message-Id: <1651890498-24478-5-git-send-email-si-wei.liu@oracle.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
9bd055073e
commit
6f3910b5ee
@ -381,6 +381,7 @@ int vhost_net_start(VirtIODevice *dev, NetClientState *ncs,
|
|||||||
r = vhost_set_vring_enable(peer, peer->vring_enable);
|
r = vhost_set_vring_enable(peer, peer->vring_enable);
|
||||||
|
|
||||||
if (r < 0) {
|
if (r < 0) {
|
||||||
|
vhost_net_stop_one(get_vhost_net(peer), dev);
|
||||||
goto err_start;
|
goto err_start;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -390,7 +391,8 @@ int vhost_net_start(VirtIODevice *dev, NetClientState *ncs,
|
|||||||
|
|
||||||
err_start:
|
err_start:
|
||||||
while (--i >= 0) {
|
while (--i >= 0) {
|
||||||
peer = qemu_get_peer(ncs , i);
|
peer = qemu_get_peer(ncs, i < data_queue_pairs ?
|
||||||
|
i : n->max_queue_pairs);
|
||||||
vhost_net_stop_one(get_vhost_net(peer), dev);
|
vhost_net_stop_one(get_vhost_net(peer), dev);
|
||||||
}
|
}
|
||||||
e = k->set_guest_notifiers(qbus->parent, total_notifiers, false);
|
e = k->set_guest_notifiers(qbus->parent, total_notifiers, false);
|
||||||
|
Loading…
Reference in New Issue
Block a user