diff options
author | Zhang Yi <yi.z.zhang@linux.intel.com> | 2018-08-29 00:14:22 +0800 |
---|---|---|
committer | Eduardo Habkost <ehabkost@redhat.com> | 2018-10-24 06:44:59 -0300 |
commit | a1f3bb1845e23c38c3bb6ca5e90ac184cfaf1a57 (patch) | |
tree | bcb01f03d6bd34a83fe4c0e8a3b9da0f4d816127 /backends | |
parent | 13399aad4fa87b2878c49d02a5d3bafa6c966ba3 (diff) | |
download | qemu-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.c | 10 |
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; } |