diff options
-rw-r--r-- | net/slirp.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/net/slirp.c b/net/slirp.c index 750105a466..0b15f427f5 100644 --- a/net/slirp.c +++ b/net/slirp.c @@ -807,6 +807,7 @@ static int slirp_guestfwd(SlirpState *s, const char *config_str, Error **errp) qemu_chr_fe_init(&fwd->hd, chr, &err); if (err) { error_propagate(errp, err); + object_unparent(OBJECT(chr)); g_free(fwd); return -1; } @@ -815,6 +816,7 @@ static int slirp_guestfwd(SlirpState *s, const char *config_str, Error **errp) &server, port) < 0) { error_setg(errp, "Conflicting/invalid host:port in guest " "forwarding rule '%s'", config_str); + qemu_chr_fe_deinit(&fwd->hd, true); g_free(fwd); return -1; } |