]> xenbits.xensource.com Git - libvirt.git/commitdiff
Fix ref-counting for Xen driver event registration
authorJohn Levon <john.levon@sun.com>
Thu, 15 Jan 2009 01:18:37 +0000 (01:18 +0000)
committerJohn Levon <john.levon@sun.com>
Thu, 15 Jan 2009 01:18:37 +0000 (01:18 +0000)
ChangeLog
src/xen_unified.c

index 93a503eddfa14036531c9d2c4e23c3ba427ae2dc..0888db5e3ae19ac16ac5c29fed745afcdd6a69b1 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Thu Jan 15 01:16:05 GMT 2009  John Levon  <levon@movementarian.org>
+
+       * src/xen_unified.c: Fix ref-counting for Xen driver event
+       registration
+
 Wed Jan 14 17:30:54 GMT 2009  John Levon  <levon@movementarian.org>
 
        * docs/devhelp/Makefile.am: Fix devhelp build dependencies
index a4e8d32cee1c4a3bde967ca14fe996e95cee5f46..1d39c4e4f25ad9fba856232bc1a5fea5174dd0f9 100644 (file)
@@ -1359,15 +1359,21 @@ xenUnifiedDomainEventRegister (virConnectPtr conn,
                                void *opaque,
                                void (*freefunc)(void *))
 {
+    int ret;
+
     GET_PRIVATE (conn);
     if (priv->xsWatch == -1) {
         xenUnifiedError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__);
         return -1;
     }
 
-    conn->refs++;
-    return virDomainEventCallbackListAdd(conn, priv->domainEventCallbacks,
-                                         callback, opaque, freefunc);
+    ret = virDomainEventCallbackListAdd(conn, priv->domainEventCallbacks,
+                                        callback, opaque, freefunc);
+
+    if (ret == 0)
+        conn->refs++;
+
+    return (ret);
 }
 
 static int
@@ -1382,8 +1388,10 @@ xenUnifiedDomainEventDeregister (virConnectPtr conn,
     }
 
     ret = virDomainEventCallbackListRemove(conn, priv->domainEventCallbacks,
-                                            callback);
-    virUnrefConnect(conn);
+                                           callback);
+
+    if (ret == 0)
+        virUnrefConnect(conn);
     return ret;
 }