WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-changelog

[Xen-changelog] [xen-unstable] xend: Fix memory leaks in libxc python bi

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] xend: Fix memory leaks in libxc python bindings
From: Xen patchbot-unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Wed, 30 Sep 2009 01:00:17 -0700
Delivery-date: Wed, 30 Sep 2009 01:00:28 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1254296697 -3600
# Node ID 516d7de8e9a1d0470c57df983a45c74338c70326
# Parent  c6b22d0d1e90d5cfe608e932096a4adb96b8aa3f
xend: Fix memory leaks in libxc python bindings

Reference counters are not correctly decreased for python object in
several places in python bindings for libxc. Most of them are around
PyList_Append(), which unlike PyList_SetItem() does increment
reference counter of the object being added to a list.

Signed-off-by: Jiri Denemark <jdenemar@xxxxxxxxxx>
---
 tools/python/xen/lowlevel/xc/xc.c |   24 ++++++++++++++++++------
 1 files changed, 18 insertions(+), 6 deletions(-)

diff -r c6b22d0d1e90 -r 516d7de8e9a1 tools/python/xen/lowlevel/xc/xc.c
--- a/tools/python/xen/lowlevel/xc/xc.c Wed Sep 30 08:43:34 2009 +0100
+++ b/tools/python/xen/lowlevel/xc/xc.c Wed Sep 30 08:44:57 2009 +0100
@@ -387,8 +387,11 @@ static PyObject *pyxc_vcpu_getinfo(XcObj
     cpulist = PyList_New(0);
     for ( i = 0; cpumap != 0; i++ )
     {
-        if ( cpumap & 1 )
-            PyList_Append(cpulist, PyInt_FromLong(i));
+        if ( cpumap & 1 ) {
+            PyObject *pyint = PyInt_FromLong(i);
+            PyList_Append(cpulist, pyint);
+            Py_DECREF(pyint);
+        }
         cpumap >>= 1;
     }
     PyDict_SetItemString(info_dict, "cpumap", cpulist);
@@ -1104,22 +1107,31 @@ static PyObject *pyxc_physinfo(XcObject 
     {
         PyObject *cpus = PyList_New(0);
         for ( j = 0; j <= max_cpu_id; j++ )
-            if ( i == map[j])
-                PyList_Append(cpus, PyInt_FromLong(j));
+            if ( i == map[j]) {
+                PyObject *pyint = PyInt_FromLong(j);
+                PyList_Append(cpus, pyint);
+                Py_DECREF(pyint);
+            }
         PyList_Append(node_to_cpu_obj, cpus); 
+        Py_DECREF(cpus);
     }
 
     node_to_memory_obj = PyList_New(0);
 
     for ( i = 0; i < info.nr_nodes; i++ )
     {
+        PyObject *pyint;
+
         xc_availheap(self->xc_handle, 0, 0, i, &free_heap);
-        PyList_Append(node_to_memory_obj,
-                      PyInt_FromLong(free_heap / 1024));
+        pyint = PyInt_FromLong(free_heap / 1024);
+        PyList_Append(node_to_memory_obj, pyint);
+        Py_DECREF(pyint);
     }
 
     PyDict_SetItemString(ret_obj, "node_to_cpu", node_to_cpu_obj);
+    Py_DECREF(node_to_cpu_obj);
     PyDict_SetItemString(ret_obj, "node_to_memory", node_to_memory_obj);
+    Py_DECREF(node_to_memory_obj);
  
     return ret_obj;
 #undef MAX_CPU_ID

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] [xen-unstable] xend: Fix memory leaks in libxc python bindings, Xen patchbot-unstable <=