From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Xen-devel <xen-devel@lists.xen.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
Ian Jackson <Ian.Jackson@eu.citrix.com>,
Ian Campbell <Ian.Campbell@citrix.com>
Subject: [PATCH v4 2/2] tools/libxl: Improvements to libxl-save-helper when using valgrind
Date: Fri, 11 Apr 2014 16:46:14 +0100 [thread overview]
Message-ID: <1397231174-9705-2-git-send-email-andrew.cooper3@citrix.com> (raw)
In-Reply-To: <1397231174-9705-1-git-send-email-andrew.cooper3@citrix.com>
Fix two unfree()'d allocations in libxl-save-helper, to get them out of the
way of other legitimate complaints from valgrind.
The first is easy; close the interface to libxc when done with it.
The second can be fixed by removing the complexity of creating the logging
instance. Initialise the global 'logger' in place rather than as an
allocation, which requires changing the indirection of its use in 5 locations.
struct xentoollog_logger_tellparent and function createlogger_tellparent() are
now unused and removed.
Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
CC: Ian Campbell <Ian.Campbell@citrix.com>
CC: Ian Jackson <Ian.Jackson@eu.citrix.com>
---
v4: Leave tellparent_destroy() around
v3: Better spelling in commit message
---
tools/libxl/libxl_save_helper.c | 31 ++++++++++---------------------
1 file changed, 10 insertions(+), 21 deletions(-)
diff --git a/tools/libxl/libxl_save_helper.c b/tools/libxl/libxl_save_helper.c
index d6fa5dd..c36314c 100644
--- a/tools/libxl/libxl_save_helper.c
+++ b/tools/libxl/libxl_save_helper.c
@@ -79,7 +79,11 @@ static void tellparent_destroy(struct xentoollog_logger *logger_in)
/*----- globals -----*/
static const char *program = "libxl-save-helper";
-static xentoollog_logger *logger;
+static xentoollog_logger logger = {
+ tellparent_vmessage,
+ tellparent_progress,
+ tellparent_destroy,
+};
static xc_interface *xch;
/*----- error handling -----*/
@@ -90,7 +94,7 @@ static void fail(int errnoval, const char *fmt, ...)
{
va_list al;
va_start(al,fmt);
- xtl_logv(logger,XTL_ERROR,errnoval,program,fmt,al);
+ xtl_logv(&logger,XTL_ERROR,errnoval,program,fmt,al);
exit(-1);
}
@@ -115,16 +119,6 @@ static void *xmalloc(size_t sz)
return r;
}
-typedef struct {
- xentoollog_logger vtable;
-} xentoollog_logger_tellparent;
-
-static xentoollog_logger_tellparent *createlogger_tellparent(void)
-{
- xentoollog_logger_tellparent newlogger;
- return XTL_NEW_LOGGER(tellparent, newlogger);
-}
-
/*----- helper functions called by autogenerated stubs -----*/
unsigned char * helper_allocbuf(int len, void *user)
@@ -184,22 +178,17 @@ static int toolstack_save_cb(uint32_t domid, uint8_t **buf,
}
static void startup(const char *op) {
- logger = (xentoollog_logger*)createlogger_tellparent();
- if (!logger) {
- fprintf(stderr, "%s: cannot initialise logger\n", program);
- exit(-1);
- }
-
- xtl_log(logger,XTL_DEBUG,0,program,"starting %s",op);
+ xtl_log(&logger,XTL_DEBUG,0,program,"starting %s",op);
- xch = xc_interface_open(logger,logger,0);
+ xch = xc_interface_open(&logger,&logger,0);
if (!xch) fail(errno,"xc_interface_open failed");
}
static void complete(int retval) {
int errnoval = retval ? errno : 0; /* suppress irrelevant errnos */
- xtl_log(logger,XTL_DEBUG,errnoval,program,"complete r=%d",retval);
+ xtl_log(&logger,XTL_DEBUG,errnoval,program,"complete r=%d",retval);
helper_stub_complete(retval,errnoval,0);
+ xc_interface_close(xch);
exit(0);
}
--
1.7.10.4
next prev parent reply other threads:[~2014-04-11 15:46 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-04-11 15:46 [PATCH v4 1/2] libxl/save-helper: Code motion of logging functions Andrew Cooper
2014-04-11 15:46 ` Andrew Cooper [this message]
2014-04-11 15:57 ` [PATCH v4 2/2] tools/libxl: Improvements to libxl-save-helper when using valgrind Ian Jackson
2014-04-16 16:31 ` Ian Campbell
2014-04-11 15:56 ` [PATCH v4 1/2] libxl/save-helper: Code motion of logging functions Ian Jackson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1397231174-9705-2-git-send-email-andrew.cooper3@citrix.com \
--to=andrew.cooper3@citrix.com \
--cc=Ian.Campbell@citrix.com \
--cc=Ian.Jackson@eu.citrix.com \
--cc=xen-devel@lists.xen.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).