libvhost-user-glib: fix VugDev main fd cleanup
commita7290a79fa262124916dab2bb75188cfd07faad6
authorJohannes Berg <johannes.berg@intel.com>
Thu, 23 Jan 2020 08:17:04 +0000 (23 09:17 +0100)
committerMichael S. Tsirkin <mst@redhat.com>
Thu, 27 Feb 2020 08:46:10 +0000 (27 03:46 -0500)
tree4dcbb22cba418a0bdf241b90c1aa9ab7a8abf93d
parent8899d60142e790debe1604a89d0028ba1740d8e9
libvhost-user-glib: fix VugDev main fd cleanup

If you try to make a device implementation that can handle multiple
connections and allow disconnections (which requires overriding the
VHOST_USER_NONE handling), then glib will warn that we remove a src
while it's still on the mainloop, and will poll() an FD that doesn't
exist anymore.

Fix this by making vug_source_new() require pairing with the new
vug_source_destroy() so we can keep the GSource referenced in the
meantime.

Note that this requires calling the new API in vhost-user-input.
vhost-user-gpu also uses vug_source_new(), but never seems to free
the result at all, so I haven't changed anything there.

Fixes: 8bb7ddb78a1c ("libvhost-user: add glib source helper")
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Message-Id: <20200123081708.7817-3-johannes@sipsolutions.net>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
contrib/libvhost-user/libvhost-user-glib.c
contrib/libvhost-user/libvhost-user-glib.h
contrib/vhost-user-input/main.c