On Tue, Dec 15, 2015 at 10:17:23AM +0100, Michal Privoznik wrote: > The return value of virJSONValueToString() should be freed when > no longer needed. This is not the case after 256496e1. > > ==26902== 138 bytes in 2 blocks are definitely lost in loss record 1,051 of 1,239 > ==26902== at 0x4C29F80: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so) > ==26902== by 0xAA5F599: strdup (in /lib64/libc-2.21.so) > ==26902== by 0x552BAD9: virStrdup (virstring.c:726) > ==26902== by 0x54F60A7: virJSONValueToString (virjson.c:1790) > ==26902== by 0x1DF6EBB9: qemuMonitorJSONEjectMedia (qemu_monitor_json.c:2225) > ==26902== by 0x1DF57A4C: qemuMonitorEjectMedia (qemu_monitor.c:1985) > ==26902== by 0x1DF1EF2D: qemuDomainChangeEjectableMedia (qemu_hotplug.c:199) > ==26902== by 0x1DF90314: qemuDomainChangeDiskLive (qemu_driver.c:7985) > ==26902== by 0x1DF90476: qemuDomainUpdateDeviceLive (qemu_driver.c:8030) > ==26902== by 0x1DF91ED7: qemuDomainUpdateDeviceFlags (qemu_driver.c:8677) > ==26902== by 0x561785F: virDomainUpdateDeviceFlags (libvirt-domain.c:8559) > ==26902== by 0x134210: remoteDispatchDomainUpdateDeviceFlags (remote_dispatch.h:10966) > > ==26902== 106 bytes in 1 blocks are definitely lost in loss record 1,033 of 1,239 > ==26902== at 0x4C29F80: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so) > ==26902== by 0xAA5F599: strdup (in /lib64/libc-2.21.so) > ==26902== by 0x552BAD9: virStrdup (virstring.c:726) > ==26902== by 0x54F60A7: virJSONValueToString (virjson.c:1790) > ==26902== by 0x1DF6EC0C: qemuMonitorJSONEjectMedia (qemu_monitor_json.c:2227) > ==26902== by 0x1DF57A4C: qemuMonitorEjectMedia (qemu_monitor.c:1985) > ==26902== by 0x1DF1EF2D: qemuDomainChangeEjectableMedia (qemu_hotplug.c:199) > ==26902== by 0x1DF90314: qemuDomainChangeDiskLive (qemu_driver.c:7985) > ==26902== by 0x1DF90476: qemuDomainUpdateDeviceLive (qemu_driver.c:8030) > ==26902== by 0x1DF91ED7: qemuDomainUpdateDeviceFlags (qemu_driver.c:8677) > ==26902== by 0x561785F: virDomainUpdateDeviceFlags (libvirt-domain.c:8559) > ==26902== by 0x134210: remoteDispatchDomainUpdateDeviceFlags (remote_dispatch.h:10966) > > Signed-off-by: Michal Privoznik <mprivozn@xxxxxxxxxx> > --- > src/qemu/qemu_monitor_json.c | 9 ++++++--- > 1 file changed, 6 insertions(+), 3 deletions(-) > > diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c > index 84c0be2..4ae63cf 100644 > --- a/src/qemu/qemu_monitor_json.c > +++ b/src/qemu/qemu_monitor_json.c > @@ -2222,10 +2222,13 @@ int qemuMonitorJSONEjectMedia(qemuMonitorPtr mon, > if (ret == 0) > ret = qemuMonitorJSONCheckError(cmd, reply); > > - VIR_DEBUG("%s", virJSONValueToString(reply, false)); > + if (ret < 0) { > + char *replyStr = virJSONValueToString(reply, false); > > - if (ret < 0 && c_strcasestr(virJSONValueToString(reply, false), "is locked")) > - ret = -2; > + if (c_strcasestr(replyStr, "is locked")) > + ret = -2; > + VIR_FREE(replyStr); > + } > > virJSONValueFree(cmd); > virJSONValueFree(reply); > -- > 2.4.10 ACK, Pavel -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list