On Mon, May 18, 2020 at 1:37 AM David Hildenbrand <da...@redhat.com> wrote: > > We took a reference when realizing, so let's drop that reference when > unrealizing. > > Fixes: c13c4153f76d ("virtio-balloon: VIRTIO_BALLOON_F_FREE_PAGE_HINT") > Cc: Wei Wang <wei.w.w...@intel.com> > Cc: Alexander Duyck <alexander.du...@gmail.com> > Cc: Michael S. Tsirkin <m...@redhat.com> > Cc: Philippe Mathieu-Daudé <phi...@redhat.com> > Signed-off-by: David Hildenbrand <da...@redhat.com> > --- > hw/virtio/virtio-balloon.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/hw/virtio/virtio-balloon.c b/hw/virtio/virtio-balloon.c > index a4fcf2d777..3f8fc50be0 100644 > --- a/hw/virtio/virtio-balloon.c > +++ b/hw/virtio/virtio-balloon.c > @@ -820,6 +820,7 @@ static void virtio_balloon_device_unrealize(DeviceState > *dev) > > if (s->free_page_bh) { > qemu_bh_delete(s->free_page_bh); > + object_unref(OBJECT(s->iothread)); > virtio_balloon_free_page_stop(s); > precopy_remove_notifier(&s->free_page_report_notify); > }
I'm not entirely sure about this order of operations. It seems like it would make more sense to remove the notifier, stop the hinting, delete the bh, and then release the IO thread.