diff options
author | Keir Fraser <keir.fraser@citrix.com> | 2008-09-16 13:49:16 +0100 |
---|---|---|
committer | Keir Fraser <keir.fraser@citrix.com> | 2008-09-16 13:49:16 +0100 |
commit | 8530055bc0020592dab1ff8fedd6880ffb13e1bc (patch) | |
tree | af0f50ab75296d7019861242574c06a2c8416262 /xen/arch/x86/microcode.c | |
parent | 524c71bcb77031cb8e3b2c170f5d7c31320b9d08 (diff) | |
download | xen-8530055bc0020592dab1ff8fedd6880ffb13e1bc.tar.gz xen-8530055bc0020592dab1ff8fedd6880ffb13e1bc.tar.bz2 xen-8530055bc0020592dab1ff8fedd6880ffb13e1bc.zip |
x86, microcode: Free microcode_info struct at end of hypercall.
Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
Diffstat (limited to 'xen/arch/x86/microcode.c')
-rw-r--r-- | xen/arch/x86/microcode.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/xen/arch/x86/microcode.c b/xen/arch/x86/microcode.c index 0d97db531d..3b7d6a1356 100644 --- a/xen/arch/x86/microcode.c +++ b/xen/arch/x86/microcode.c @@ -147,10 +147,13 @@ static long do_microcode_update(void *_info) info->error = error; info->cpu = next_cpu(info->cpu, cpu_online_map); - if ( info->cpu >= NR_CPUS ) - return info->error; + if ( info->cpu < NR_CPUS ) + return continue_hypercall_on_cpu(info->cpu, do_microcode_update, info); + + error = info->error; + xfree(info); + return error; - return continue_hypercall_on_cpu(info->cpu, do_microcode_update, info); } int microcode_update(XEN_GUEST_HANDLE(const_void) buf, unsigned long len) |