Following commit 34aad589019 ("hw/char/virtio-console: clear
dangling GLib event source tag"), prevent stale tags from
being reused by clearing dangling GLib event source tag during
the cleanup phase (finalize, unrealize).Inspired-by: Matthew Penney <[email protected]> Signed-off-by: Philippe Mathieu-Daudé <[email protected]> Reviewed-by: Matthew Penney <[email protected]> Message-Id: <[email protected]> --- hw/usb/redirect.c | 4 +--- io/channel-websock.c | 8 ++------ target/i386/kvm/tdx-quote-generator.c | 5 +---- 3 files changed, 4 insertions(+), 13 deletions(-) diff --git a/hw/usb/redirect.c b/hw/usb/redirect.c index fda5bbca676..100afbdb06a 100644 --- a/hw/usb/redirect.c +++ b/hw/usb/redirect.c @@ -1494,9 +1494,7 @@ static void usbredir_unrealize(USBDevice *udev) if (dev->parser) { usbredirparser_destroy(dev->parser); } - if (dev->watch) { - g_source_remove(dev->watch); - } + g_clear_handle_id(&dev->watch, g_source_remove); free(dev->filter_rules); qemu_del_vm_change_state_handler(dev->vmstate); diff --git a/io/channel-websock.c b/io/channel-websock.c index 85b22a8822a..617d79c351a 100644 --- a/io/channel-websock.c +++ b/io/channel-websock.c @@ -950,12 +950,8 @@ static void qio_channel_websock_finalize(Object *obj) buffer_free(&ioc->encinput); buffer_free(&ioc->encoutput); buffer_free(&ioc->rawinput); - if (ioc->hs_io_tag) { - g_source_remove(ioc->hs_io_tag); - } - if (ioc->io_tag) { - g_source_remove(ioc->io_tag); - } + g_clear_handle_id(&ioc->hs_io_tag, g_source_remove); + g_clear_handle_id(&ioc->io_tag, g_source_remove); error_free(ioc->io_err); object_unref(OBJECT(ioc->master)); } diff --git a/target/i386/kvm/tdx-quote-generator.c b/target/i386/kvm/tdx-quote-generator.c index dee8334b27a..002bc40c8a8 100644 --- a/target/i386/kvm/tdx-quote-generator.c +++ b/target/i386/kvm/tdx-quote-generator.c @@ -74,10 +74,7 @@ static void encode_header(char *buf, size_t len, uint32_t size) { static void tdx_generate_quote_cleanup(TdxGenerateQuoteTask *task) { timer_del(&task->timer); - - if (task->watch) { - g_source_remove(task->watch); - } + g_clear_handle_id(&task->watch, g_source_remove); qio_channel_close(QIO_CHANNEL(task->sioc), NULL); object_unref(OBJECT(task->sioc)); -- 2.53.0
