On Wed, Sep 03, 2014 at 06:52:46PM +0800, Jason Wang wrote: > On 09/03/2014 06:35 PM, Michael S. Tsirkin wrote: > > commit aad4dce934649b3a398396fc2a76f215bb194ea4 > > vhost_net: start/stop guest notifiers properly > > > > changed the order of calls for guest notifiers, > > but did not recover in the correct (reverse) order. > > Fix it up. > > > > Cc: qemu-sta...@nongnu.org > > Cc: Andrey Korolyov <and...@xdel.ru> > > Cc: Jason Wang <jasow...@redhat.com> > > Signed-off-by: Michael S. Tsirkin <m...@redhat.com> > > --- > > hw/net/vhost_net.c | 12 +++++++++--- > > 1 file changed, 9 insertions(+), 3 deletions(-) > > > > diff --git a/hw/net/vhost_net.c b/hw/net/vhost_net.c > > index ba5d544..3819044 100644 > > --- a/hw/net/vhost_net.c > > +++ b/hw/net/vhost_net.c > > @@ -289,7 +289,7 @@ int vhost_net_start(VirtIODevice *dev, NetClientState > > *ncs, > > BusState *qbus = BUS(qdev_get_parent_bus(DEVICE(dev))); > > VirtioBusState *vbus = VIRTIO_BUS(qbus); > > VirtioBusClass *k = VIRTIO_BUS_GET_CLASS(vbus); > > - int r, i = 0; > > + int r, e, i; > > > > if (!vhost_net_device_endian_ok(dev)) { > > error_report("vhost-net does not support cross-endian"); > > @@ -317,16 +317,22 @@ int vhost_net_start(VirtIODevice *dev, NetClientState > > *ncs, > > r = vhost_net_start_one(get_vhost_net(ncs[i].peer), dev); > > > > if (r < 0) { > > - goto err; > > + goto err_start; > > } > > } > > > > return 0; > > > > -err: > > +err_start: > > while (--i >= 0) { > > vhost_net_stop_one(get_vhost_net(ncs[i].peer), dev); > > } > > + e = k->set_guest_notifiers(qbus->parent, total_queues * 2, false); > > + if (e < 0) { > > + fprintf(stderr, "vhost guest notifier cleanup failed: %d\n", e); > > + fflush(stderr); > > + } > > +err: > > return r; > > } > > > > Acked-by: Jason Wang <jasow...@redhat.com>
OK I will just roll this up into the original patch.