summary refs log tree commit diff stats
path: root/hw/xen_console.c
diff options
context:
space:
mode:
authorStefano Stabellini <stefano.stabellini@eu.citrix.com>2011-06-24 16:59:46 +0100
committerAlexander Graf <agraf@suse.de>2011-07-17 01:54:25 +0200
commit5e6b701aba8689a336297dda047bf760ffc05291 (patch)
tree4782689fb0d2793bae5ef263f231900d05fb56a9 /hw/xen_console.c
parentad35a7da1a0a40cd8920ba829640bd43e1613ec1 (diff)
downloadfocaccia-qemu-5e6b701aba8689a336297dda047bf760ffc05291.tar.gz
focaccia-qemu-5e6b701aba8689a336297dda047bf760ffc05291.zip
xen_console: fix memory leak
con_init leaks the string "type", fix it.

Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
Diffstat (limited to 'hw/xen_console.c')
-rw-r--r--hw/xen_console.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/hw/xen_console.c b/hw/xen_console.c
index c6c8163813..2d613ee6e5 100644
--- a/hw/xen_console.c
+++ b/hw/xen_console.c
@@ -180,6 +180,7 @@ static int con_init(struct XenDevice *xendev)
 {
     struct XenConsole *con = container_of(xendev, struct XenConsole, xendev);
     char *type, *dom;
+    int ret = 0;
 
     /* setup */
     dom = xs_get_domain_path(xenstore, con->xendev.dom);
@@ -189,7 +190,8 @@ static int con_init(struct XenDevice *xendev)
     type = xenstore_read_str(con->console, "type");
     if (!type || strcmp(type, "ioemu") != 0) {
 	xen_be_printf(xendev, 1, "not for me (type=%s)\n", type);
-	return -1;
+        ret = -1;
+        goto out;
     }
 
     if (!serial_hds[con->xendev.dev])
@@ -198,7 +200,9 @@ static int con_init(struct XenDevice *xendev)
     else
         con->chr = serial_hds[con->xendev.dev];
 
-    return 0;
+out:
+    qemu_free(type);
+    return ret;
 }
 
 static int con_connect(struct XenDevice *xendev)