diff --git a/hw/xen_console.c b/hw/xen_console.c index c6c816381..2d613ee6e 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)