# HG changeset patch # User Keir Fraser # Date 1221569356 -3600 # Node ID f163138e33402ca565d9886df8ecb21e98f77be6 # Parent 879330497672d96ee966c9774d21c437895f6839 x86, microcode: Free microcode_info struct at end of hypercall. Signed-off-by: Keir Fraser Index: xen-3.3.1-testing/xen/arch/x86/microcode.c =================================================================== --- xen-3.3.1-testing.orig/xen/arch/x86/microcode.c +++ xen-3.3.1-testing/xen/arch/x86/microcode.c @@ -150,10 +150,13 @@ static long do_microcode_update(void *_i 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)