|
|
6ae9ed |
From a2a4f11adaa26d9f0d9c04de9f0fb915374536d1 Mon Sep 17 00:00:00 2001
|
|
|
6ae9ed |
Message-Id: <a2a4f11adaa26d9f0d9c04de9f0fb915374536d1@dist-git>
|
|
|
6ae9ed |
From: Michal Privoznik <mprivozn@redhat.com>
|
|
|
6ae9ed |
Date: Mon, 25 Jul 2016 12:28:25 -0400
|
|
|
6ae9ed |
Subject: [PATCH] virDomainHostdevDefFree: Don't leak privateData
|
|
|
6ae9ed |
|
|
|
6ae9ed |
https://bugzilla.redhat.com/show_bug.cgi?id=1357346
|
|
|
6ae9ed |
|
|
|
6ae9ed |
After 27726d8c21 a privateData is allocated in
|
|
|
6ae9ed |
virDomainHostdevDefAlloc(). However, the counter part - freeing
|
|
|
6ae9ed |
them in Free() is missing which leads to the following memory
|
|
|
6ae9ed |
leak:
|
|
|
6ae9ed |
|
|
|
6ae9ed |
==6489== 24 bytes in 1 blocks are definitely lost in loss record 684 of 1,003
|
|
|
6ae9ed |
==6489== at 0x4C2C070: calloc (vg_replace_malloc.c:623)
|
|
|
6ae9ed |
==6489== by 0x54B7C94: virAllocVar (viralloc.c:560)
|
|
|
6ae9ed |
==6489== by 0x5517BE6: virObjectNew (virobject.c:193)
|
|
|
6ae9ed |
==6489== by 0x1B400121: qemuDomainHostdevPrivateNew (qemu_domain.c:798)
|
|
|
6ae9ed |
==6489== by 0x5557B24: virDomainHostdevDefAlloc (domain_conf.c:2152)
|
|
|
6ae9ed |
==6489== by 0x5575578: virDomainHostdevDefParseXML (domain_conf.c:12709)
|
|
|
6ae9ed |
==6489== by 0x5582292: virDomainDefParseXML (domain_conf.c:16995)
|
|
|
6ae9ed |
==6489== by 0x5583C98: virDomainDefParseNode (domain_conf.c:17470)
|
|
|
6ae9ed |
==6489== by 0x5583B07: virDomainDefParse (domain_conf.c:17417)
|
|
|
6ae9ed |
==6489== by 0x5583B95: virDomainDefParseFile (domain_conf.c:17441)
|
|
|
6ae9ed |
==6489== by 0x55A3F24: virDomainObjListLoadConfig (virdomainobjlist.c:465)
|
|
|
6ae9ed |
==6489== by 0x55A43E6: virDomainObjListLoadAllConfigs (virdomainobjlist.c:596)
|
|
|
6ae9ed |
|
|
|
6ae9ed |
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
|
|
|
6ae9ed |
(cherry picked from commit 6fcffcb141fcbd99c82a95ac0b67908bb057d6d0)
|
|
|
6ae9ed |
Signed-off-by: John Ferlan <jferlan@redhat.com>
|
|
|
6ae9ed |
---
|
|
|
6ae9ed |
src/conf/domain_conf.c | 3 +++
|
|
|
6ae9ed |
1 file changed, 3 insertions(+)
|
|
|
6ae9ed |
|
|
|
6ae9ed |
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
|
|
|
6ae9ed |
index ddeca0d..8b9b623 100644
|
|
|
6ae9ed |
--- a/src/conf/domain_conf.c
|
|
|
6ae9ed |
+++ b/src/conf/domain_conf.c
|
|
|
6ae9ed |
@@ -2218,6 +2218,9 @@ void virDomainHostdevDefClear(virDomainHostdevDefPtr def)
|
|
|
6ae9ed |
}
|
|
|
6ae9ed |
break;
|
|
|
6ae9ed |
}
|
|
|
6ae9ed |
+
|
|
|
6ae9ed |
+ virObjectUnref(def->privateData);
|
|
|
6ae9ed |
+ def->privateData = NULL;
|
|
|
6ae9ed |
}
|
|
|
6ae9ed |
|
|
|
6ae9ed |
void virDomainTPMDefFree(virDomainTPMDefPtr def)
|
|
|
6ae9ed |
--
|
|
|
6ae9ed |
2.9.2
|
|
|
6ae9ed |
|