]> xenbits.xensource.com Git - people/aperard/xen-unstable.git/commitdiff
tools/python: Fix memory leak on error path
authorLuca Fancellu <luca.fancellu@arm.com>
Thu, 8 Jun 2023 13:59:13 +0000 (14:59 +0100)
committerJulien Grall <jgrall@amazon.com>
Tue, 4 Jul 2023 19:10:20 +0000 (20:10 +0100)
Commit 56a7aaa16bfe introduced a memory leak on the error path for a
Py_BuildValue built object that on some newly introduced error path
has not the correct reference count handling, fix that by decrementing
the refcount in these path.

Fixes: 56a7aaa16bfe ("tools: add physinfo arch_capabilities handling for Arm")
Signed-off-by: Luca Fancellu <luca.fancellu@arm.com>
Reported-by: Andrew Cooper <andrew.cooper3@citrix.com>
Acked-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
tools/python/xen/lowlevel/xc/xc.c

index e14e223ec903180a4ad659fce5106bbb4bad76ee..d3ea350e07b94fd776eb01a02c8f0d746ba942c9 100644 (file)
@@ -919,11 +919,16 @@ static PyObject *pyxc_physinfo(XcObject *self)
         sve_vl_bits = arch_capabilities_arm_sve(pinfo.arch_capabilities);
         py_arm_sve_vl = PyLong_FromUnsignedLong(sve_vl_bits);
 
-        if ( !py_arm_sve_vl )
+        if ( !py_arm_sve_vl ) {
+            Py_DECREF(objret);
             return NULL;
+        }
 
-        if( PyDict_SetItemString(objret, "arm_sve_vl", py_arm_sve_vl) )
+        if( PyDict_SetItemString(objret, "arm_sve_vl", py_arm_sve_vl) ) {
+            Py_DECREF(py_arm_sve_vl);
+            Py_DECREF(objret);
             return NULL;
+        }
     }
 #endif