aboutsummaryrefslogtreecommitdiff
path: root/backends
diff options
context:
space:
mode:
authorZhang Yi <yi.z.zhang@linux.intel.com>2018-08-29 00:14:22 +0800
committerEduardo Habkost <ehabkost@redhat.com>2018-10-24 06:44:59 -0300
commita1f3bb1845e23c38c3bb6ca5e90ac184cfaf1a57 (patch)
treebcb01f03d6bd34a83fe4c0e8a3b9da0f4d816127 /backends
parent13399aad4fa87b2878c49d02a5d3bafa6c966ba3 (diff)
downloadqemu-a1f3bb1845e23c38c3bb6ca5e90ac184cfaf1a57.zip
qemu-a1f3bb1845e23c38c3bb6ca5e90ac184cfaf1a57.tar.gz
qemu-a1f3bb1845e23c38c3bb6ca5e90ac184cfaf1a57.tar.bz2
hostmem-file: fixed the memory leak while get pmem path.
object_get_canonical_path_component() returns a string which must be freed using g_free(). Reported-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Zhang Yi <yi.z.zhang@linux.intel.com> Message-Id: <7328fb16c394eaf5d65437d11c2a9343647b6d3d.1535471899.git.yi.z.zhang@linux.intel.com> Reviewed-by: Eduardo Habkost <ehabkost@redhat.com> Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
Diffstat (limited to 'backends')
-rw-r--r--backends/hostmem-file.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/backends/hostmem-file.c b/backends/hostmem-file.c
index e640749..639c8d4 100644
--- a/backends/hostmem-file.c
+++ b/backends/hostmem-file.c
@@ -145,20 +145,26 @@ static void file_memory_backend_set_pmem(Object *o, bool value, Error **errp)
HostMemoryBackendFile *fb = MEMORY_BACKEND_FILE(o);
if (host_memory_backend_mr_inited(backend)) {
+ char *path = object_get_canonical_path_component(o);
+
error_setg(errp, "cannot change property 'pmem' of %s '%s'",
object_get_typename(o),
- object_get_canonical_path_component(o));
+ path);
+ g_free(path);
return;
}
#ifndef CONFIG_LIBPMEM
if (value) {
Error *local_err = NULL;
+ char *path = object_get_canonical_path_component(o);
+
error_setg(&local_err,
"Lack of libpmem support while setting the 'pmem=on'"
" of %s '%s'. We can't ensure data persistence.",
object_get_typename(o),
- object_get_canonical_path_component(o));
+ path);
+ g_free(path);
error_propagate(errp, local_err);
return;
}