summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Fleytman <dmitry@daynix.com>2016-02-11 18:04:54 +0200
committerJonathon Jongsma <jjongsma@redhat.com>2016-03-24 11:00:01 -0500
commit75b1a5469cfde373f48bc24b05376fdf065c16b5 (patch)
tree424636664dd0a77268fb30e74fe60f7453cf08f5
parent6aa4f155158a1804abcf162db2ec97771d40415f (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.c15
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