aboutsummaryrefslogtreecommitdiffstats
path: root/xen/arch/x86/microcode.c
diff options
context:
space:
mode:
authorKeir Fraser <keir.fraser@citrix.com>2008-09-16 13:49:16 +0100
committerKeir Fraser <keir.fraser@citrix.com>2008-09-16 13:49:16 +0100
commit8530055bc0020592dab1ff8fedd6880ffb13e1bc (patch)
treeaf0f50ab75296d7019861242574c06a2c8416262 /xen/arch/x86/microcode.c
parent524c71bcb77031cb8e3b2c170f5d7c31320b9d08 (diff)
downloadxen-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.c9
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)