mirror of
git://git.yoctoproject.org/meta-virtualization.git
synced 2025-07-19 12:50:22 +02:00
libvirt-python: backport a patch to fix crash in getAllDomainStats
Upstream libvirt Commits 1d39dbaf and 827ed9b4 broke the libvirt-python API by removing virDomainRef() and virDomainFree(). virDomainStatsRecordListFree() will free that domain pointer and later when virDomain (python object) call its destructor and tries to free that same pointer again. Signed-off-by: Roy Li <rongqing.li@windriver.com> Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
This commit is contained in:
parent
16a31ef4a8
commit
dc7ab5bea5
|
@ -17,6 +17,7 @@ FILES_${PN}-python = "${bindir}/* ${libdir}/* ${libdir}/${PYTHON_DIR}/*"
|
|||
|
||||
SRC_URI += "http://libvirt.org/sources/python/libvirt-python-${PV}.tar.gz;name=libvirt_python"
|
||||
SRC_URI += "file://libvirt_api_xml_path.patch;patchdir=../libvirt-python-${PV}"
|
||||
SRC_URI += "file://0001-fix-crash-in-getAllDomainStats.patch;patchdir=../libvirt-python-${PV}"
|
||||
|
||||
SRC_URI[libvirt_python.md5sum] = "ed018c714d7ddbe93221c796dff283ed"
|
||||
SRC_URI[libvirt_python.sha256sum] = "6d35ae9e7801573393b9c92471f39e6700d479f10b641df81d041b469f160bf8"
|
||||
|
|
|
@ -0,0 +1,57 @@
|
|||
From e9c4e2abffef007a28112ebb40a9586b0128f10b Mon Sep 17 00:00:00 2001
|
||||
From: Pavel Hrdina <phrdina@redhat.com>
|
||||
Date: Mon, 18 Apr 2016 16:53:50 +0200
|
||||
Subject: [PATCH] fix crash in getAllDomainStats
|
||||
|
||||
Upstream-Status: Backport
|
||||
|
||||
Commits 1d39dbaf and 827ed9b4 broke the libvirt-python API by removing
|
||||
virDomainRef() and virDomainFree(). virDomainStatsRecordListFree() will
|
||||
free that domain pointer and later when virDomain (python object) call
|
||||
its destructor and tries to free that same pointer again.
|
||||
|
||||
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1326839
|
||||
|
||||
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
|
||||
---
|
||||
libvirt-override.c | 8 +++++++-
|
||||
1 file changed, 7 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/libvirt-override.c b/libvirt-override.c
|
||||
index 4640ed5..2de95ce 100644
|
||||
--- a/libvirt-override.c
|
||||
+++ b/libvirt-override.c
|
||||
@@ -8381,6 +8381,7 @@ convertDomainStatsRecord(virDomainStatsRecordPtr *records,
|
||||
PyObject *py_retval;
|
||||
PyObject *py_record;
|
||||
PyObject *py_record_stats = NULL;
|
||||
+ virDomainPtr dom = NULL;
|
||||
size_t i;
|
||||
|
||||
if (!(py_retval = PyList_New(nrecords)))
|
||||
@@ -8392,9 +8393,12 @@ convertDomainStatsRecord(virDomainStatsRecordPtr *records,
|
||||
|
||||
VIR_PY_LIST_SET_GOTO(py_retval, i, py_record, error);
|
||||
|
||||
+ dom = records[i]->dom;
|
||||
+ virDomainRef(dom);
|
||||
VIR_PY_TUPLE_SET_GOTO(py_record, 0,
|
||||
- libvirt_virDomainPtrWrap(records[i]->dom),
|
||||
+ libvirt_virDomainPtrWrap(dom),
|
||||
error);
|
||||
+ dom = NULL;
|
||||
|
||||
if (!(py_record_stats = getPyVirTypedParameter(records[i]->params,
|
||||
records[i]->nparams)))
|
||||
@@ -8406,6 +8410,8 @@ convertDomainStatsRecord(virDomainStatsRecordPtr *records,
|
||||
return py_retval;
|
||||
|
||||
error:
|
||||
+ if (dom)
|
||||
+ virDomainFree(dom);
|
||||
Py_XDECREF(py_retval);
|
||||
return NULL;
|
||||
}
|
||||
--
|
||||
2.8.1
|
||||
|
Loading…
Reference in New Issue
Block a user