浏览代码

Merge remote-tracking branch 'remotes/ehabkost/tags/x86-next-pull-request' into staging

Fix memory leaks when using object_property_get_str()

# gpg: Signature made Tue 03 Apr 2018 15:00:10 BST
# gpg:                using RSA key 2807936F984DC5A6
# gpg: Good signature from "Eduardo Habkost <ehabkost@redhat.com>"
# Primary key fingerprint: 5A32 2FD5 ABC4 D3DB ACCF  D1AA 2807 936F 984D C5A6

* remotes/ehabkost/tags/x86-next-pull-request:
  sev/i386: fix memory leak in sev_guest_init()
  exec: fix memory leak in find_max_supported_pagesize()

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Peter Maydell 7 年之前
父节点
当前提交
094b62cd9c
共有 2 个文件被更改,包括 4 次插入1 次删除
  1. 1 0
      exec.c
  2. 3 1
      target/i386/sev.c

+ 1 - 0
exec.c

@@ -1495,6 +1495,7 @@ static int find_max_supported_pagesize(Object *obj, void *opaque)
         mem_path = object_property_get_str(obj, "mem-path", NULL);
         mem_path = object_property_get_str(obj, "mem-path", NULL);
         if (mem_path) {
         if (mem_path) {
             long hpsize = qemu_mempath_getpagesize(mem_path);
             long hpsize = qemu_mempath_getpagesize(mem_path);
+            g_free(mem_path);
             if (hpsize < *hpsize_min) {
             if (hpsize < *hpsize_min) {
                 *hpsize_min = hpsize;
                 *hpsize_min = hpsize;
             }
             }

+ 3 - 1
target/i386/sev.c

@@ -748,9 +748,11 @@ sev_guest_init(const char *id)
     if (s->sev_fd < 0) {
     if (s->sev_fd < 0) {
         error_report("%s: Failed to open %s '%s'", __func__,
         error_report("%s: Failed to open %s '%s'", __func__,
                      devname, strerror(errno));
                      devname, strerror(errno));
-        goto err;
     }
     }
     g_free(devname);
     g_free(devname);
+    if (s->sev_fd < 0) {
+        goto err;
+    }
 
 
     ret = sev_platform_ioctl(s->sev_fd, SEV_PLATFORM_STATUS, &status,
     ret = sev_platform_ioctl(s->sev_fd, SEV_PLATFORM_STATUS, &status,
                              &fw_error);
                              &fw_error);