From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Xen-devel <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
Ian Jackson <Ian.Jackson@citrix.com>
Subject: [PATCH for-4.13] tools/libxl: Fix memory leak in libxl_cpuid_set()
Date: Fri, 12 Jun 2020 18:32:27 +0100 [thread overview]
Message-ID: <20200612173227.4103-1-andrew.cooper3@citrix.com> (raw)
xc_cpuid_set() returns allocated memory via cpuid_res, which libxl needs to
free() seeing as it discards the results.
This is logically a backport of c/s b91825f628 "tools/libxc: Drop
config_transformed parameter from xc_cpuid_set()" but rewritten as one caller
of xc_cpuid_set() does use returned values.
Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Ian Jackson <Ian.Jackson@citrix.com>
Applicable for 4.13 and older.
I'm not going to touch the Ocaml bindings - they're wrong in multiple ways
including this memory leak, and we deleted them in 4.14 because they were
totally unused.
---
tools/libxl/libxl_cpuid.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/tools/libxl/libxl_cpuid.c b/tools/libxl/libxl_cpuid.c
index a78f08b927..083869dcf4 100644
--- a/tools/libxl/libxl_cpuid.c
+++ b/tools/libxl/libxl_cpuid.c
@@ -420,12 +420,17 @@ void libxl_cpuid_apply_policy(libxl_ctx *ctx, uint32_t domid)
void libxl_cpuid_set(libxl_ctx *ctx, uint32_t domid,
libxl_cpuid_policy_list cpuid)
{
- int i;
+ int i, j;
char *cpuid_res[4];
for (i = 0; cpuid[i].input[0] != XEN_CPUID_INPUT_UNUSED; i++)
+ {
xc_cpuid_set(ctx->xch, domid, cpuid[i].input,
(const char**)(cpuid[i].policy), cpuid_res);
+
+ for (j = 0; j < ARRAY_SIZE(cpuid_res); ++j)
+ free(cpuid_res[j]);
+ }
}
static const char *input_names[2] = { "leaf", "subleaf" };
--
2.11.0
next reply other threads:[~2020-06-12 17:33 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-06-12 17:32 Andrew Cooper [this message]
2020-06-15 14:48 ` [PATCH for-4.13] tools/libxl: Fix memory leak in libxl_cpuid_set() Ian Jackson
2020-06-16 7:57 ` Jan Beulich
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=20200612173227.4103-1-andrew.cooper3@citrix.com \
--to=andrew.cooper3@citrix.com \
--cc=Ian.Jackson@citrix.com \
--cc=xen-devel@lists.xenproject.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).