diff options
author | Andrew Cooper <andrew.cooper3@citrix.com> | 2013-03-07 16:20:50 +0000 |
---|---|---|
committer | Ian Jackson <Ian.Jackson@eu.citrix.com> | 2013-03-07 17:53:55 +0000 |
commit | e31d4781c0e04bec01135dea0cb7d634ee035cd3 (patch) | |
tree | 31da289283f24313bc2a9b84557e1fca205a0163 | |
parent | 9581c4f9a55372a21e759cd449cb676d0e8feddb (diff) | |
download | xen-e31d4781c0e04bec01135dea0cb7d634ee035cd3.tar.gz xen-e31d4781c0e04bec01135dea0cb7d634ee035cd3.tar.bz2 xen-e31d4781c0e04bec01135dea0cb7d634ee035cd3.zip |
tools/xenconsoled: Initialise pointers before trying to use them
This is a regression introduced by
"Switch from select() to poll() in xenconsoled's IO loop."
hg c/s 26405:7359c3122c5d
git cc5434c933153c4b8812d1df901f8915c22830a8
which results in reliable segfaults during VM power operations.
Switch to calloc(3) in an effort to avoid similar problems with changes in the
future.
Signed-off-by: Marcus Granado <marcus.granado@citrix.com>
Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
-rw-r--r-- | tools/console/daemon/io.c | 12 |
1 files changed, 1 insertions, 11 deletions
diff --git a/tools/console/daemon/io.c b/tools/console/daemon/io.c index 176ac3cc53..50f91b58dd 100644 --- a/tools/console/daemon/io.c +++ b/tools/console/daemon/io.c @@ -651,7 +651,7 @@ static struct domain *create_domain(int domid) return NULL; } - dom = (struct domain *)malloc(sizeof(struct domain)); + dom = calloc(1, sizeof *dom); if (dom == NULL) { dolog(LOG_ERR, "Out of memory %s:%s():L%d", __FILE__, __FUNCTION__, __LINE__); @@ -672,21 +672,11 @@ static struct domain *create_domain(int domid) dom->slave_fd = -1; dom->log_fd = -1; - dom->is_dead = false; - dom->buffer.data = 0; - dom->buffer.consumed = 0; - dom->buffer.size = 0; - dom->buffer.capacity = 0; - dom->buffer.max_capacity = 0; - dom->event_count = 0; dom->next_period = ((long long)ts.tv_sec * 1000) + (ts.tv_nsec / 1000000) + RATE_LIMIT_PERIOD; - dom->next = NULL; dom->ring_ref = -1; dom->local_port = -1; dom->remote_port = -1; - dom->interface = NULL; - dom->xce_handle = NULL; if (!watch_domain(dom, true)) goto out; |