diff options
Diffstat (limited to 'extras/mini-os/console')
-rw-r--r-- | extras/mini-os/console/xencons_ring.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/extras/mini-os/console/xencons_ring.c b/extras/mini-os/console/xencons_ring.c index ad385b43f4..6d2814e492 100644 --- a/extras/mini-os/console/xencons_ring.c +++ b/extras/mini-os/console/xencons_ring.c @@ -203,7 +203,7 @@ struct consfront_dev *init_consfront(char *_nodename) char* err; char* message=NULL; int retry=0; - char* msg; + char* msg = NULL; char nodename[256]; char path[256]; static int consfrontends = 1; @@ -242,6 +242,7 @@ again: err = xenbus_transaction_start(&xbt); if (err) { printk("starting transaction\n"); + free(err); } err = xenbus_printf(xbt, nodename, "ring-ref","%u", @@ -278,6 +279,7 @@ again: err = xenbus_transaction_end(xbt, 0, &retry); + if (err) free(err); if (retry) { goto again; printk("completing transaction\n"); @@ -286,7 +288,8 @@ again: goto done; abort_transaction: - xenbus_transaction_end(xbt, 1, &retry); + free(err); + err = xenbus_transaction_end(xbt, 1, &retry); goto error; done: @@ -323,6 +326,8 @@ done: return dev; error: + free(msg); + free(err); free_consfront(dev); return NULL; } |