diff options
author | Dmitry Fleytman <dmitry@daynix.com> | 2016-02-11 18:04:54 +0200 |
---|---|---|
committer | Jonathon Jongsma <jjongsma@redhat.com> | 2016-03-24 11:00:01 -0500 |
commit | 75b1a5469cfde373f48bc24b05376fdf065c16b5 (patch) | |
tree | 424636664dd0a77268fb30e74fe60f7453cf08f5 | |
parent | 6aa4f155158a1804abcf162db2ec97771d40415f (diff) |
usb-dev-manager: Fix cbinfo leak in case of abnormal return
Signed-off-by: Dmitry Fleytman <dmitry@daynix.com>
Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
-rw-r--r-- | src/usb-device-manager.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/src/usb-device-manager.c b/src/usb-device-manager.c index a954857..be8b517 100644 --- a/src/usb-device-manager.c +++ b/src/usb-device-manager.c @@ -1205,23 +1205,26 @@ static void spice_usb_device_manager_drv_uninstall_cb(GObject *gobject, GAsyncResult *res, gpointer user_data) { + GError *err = NULL; + UsbInstallCbInfo *cbinfo = user_data; SpiceUsbDeviceManager *self = cbinfo->manager; - GError *err = NULL; + SpiceUsbDevice *device = cbinfo->device; + SpiceWinUsbDriver *installer = cbinfo->installer; + + g_free(cbinfo); SPICE_DEBUG("Win USB driver uninstall finished"); g_return_if_fail(SPICE_IS_USB_DEVICE_MANAGER(self)); g_return_if_fail(self->priv->use_usbclerk); - if (!spice_win_usb_driver_uninstall_finish(cbinfo->installer, res, &err)) { + if (!spice_win_usb_driver_uninstall_finish(installer, res, &err)) { g_warning("win usb driver uninstall failed -- %s", err->message); g_clear_error(&err); } - spice_usb_device_set_state(cbinfo->device, SPICE_USB_DEVICE_STATE_NONE); - - spice_usb_device_unref(cbinfo->device); - g_free(cbinfo); + spice_usb_device_set_state(device, SPICE_USB_DEVICE_STATE_NONE); + spice_usb_device_unref(device); } #endif |