aboutsummaryrefslogtreecommitdiffstats
path: root/extras
diff options
context:
space:
mode:
authorMatthew Daley <mattjd@gmail.com>2013-09-18 15:38:02 +1200
committerIan Campbell <ian.campbell@citrix.com>2013-09-21 16:42:42 +0100
commitc2849d8fabab965973e23ac23fd28afd2873bac8 (patch)
tree17629573c1948e8bceae149656d53dcf10eb81e9 /extras
parenta384c17325618bc3f93d0b293d9be0dddfa53e6b (diff)
downloadxen-c2849d8fabab965973e23ac23fd28afd2873bac8.tar.gz
xen-c2849d8fabab965973e23ac23fd28afd2873bac8.tar.bz2
xen-c2849d8fabab965973e23ac23fd28afd2873bac8.zip
mini-os: fix various memory leaks in consfront
Coverity-ID: 1055816 Coverity-ID: 1055817 Coverity-ID: 1055818 Signed-off-by: Matthew Daley <mattjd@gmail.com> Acked-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
Diffstat (limited to 'extras')
-rw-r--r--extras/mini-os/console/xenbus.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/extras/mini-os/console/xenbus.c b/extras/mini-os/console/xenbus.c
index 41949824af..b3171144ae 100644
--- a/extras/mini-os/console/xenbus.c
+++ b/extras/mini-os/console/xenbus.c
@@ -42,7 +42,8 @@ void free_consfront(struct consfront_dev *dev)
close:
if (err) free(err);
- xenbus_unwatch_path_token(XBT_NIL, path, path);
+ err = xenbus_unwatch_path_token(XBT_NIL, path, path);
+ if (err) free(err);
mask_evtchn(dev->evtchn);
unbind_evtchn(dev->evtchn);
@@ -58,7 +59,7 @@ close:
struct consfront_dev *init_consfront(char *_nodename)
{
xenbus_transaction_t xbt;
- char* err;
+ char* err = NULL;
char* message=NULL;
int retry=0;
char* msg = NULL;
@@ -87,7 +88,7 @@ struct consfront_dev *init_consfront(char *_nodename)
snprintf(path, sizeof(path), "%s/backend-id", nodename);
if ((res = xenbus_read_integer(path)) < 0)
- return NULL;
+ goto error;
else
dev->dom = res;
evtchn_alloc_unbound(dev->dom, console_handle_input, dev, &dev->evtchn);
@@ -170,7 +171,7 @@ done:
msg = xenbus_wait_for_state_change(path, &state, &dev->events);
if (msg != NULL || state != XenbusStateConnected) {
printk("backend not available, state=%d\n", state);
- xenbus_unwatch_path_token(XBT_NIL, path, path);
+ err = xenbus_unwatch_path_token(XBT_NIL, path, path);
goto error;
}
}