]> xenbits.xensource.com Git - qemu-xen.git/commitdiff
Fix off-by-one error in sizing pSeries hcall table
authorDavid Gibson <david@gibson.dropbear.id.au>
Tue, 10 May 2011 06:06:21 +0000 (16:06 +1000)
committerAlexander Graf <agraf@suse.de>
Tue, 10 May 2011 06:10:11 +0000 (08:10 +0200)
The pSeries machine uses two tables to look up guest hcalls for emulation.
One of these is exactly one entry too small to hold all the hcalls it needs
to, leading to memory corruption.

This patch fixes the bug, and while we're at it, make both tables 'static'
since they're never used from other modules.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Alexander Graf <agraf@suse.de>
hw/spapr_hcall.c

index f88e1d20833d9480a271ef2026b43f8833c94dc6..5281ba2b383c193f8723d3877e61f7c3f99b9345 100644 (file)
@@ -455,8 +455,8 @@ static target_ulong h_rtas(CPUState *env, sPAPREnvironment *spapr,
                            nret, rtas_r3 + 12 + 4*nargs);
 }
 
-spapr_hcall_fn papr_hypercall_table[(MAX_HCALL_OPCODE / 4) + 1];
-spapr_hcall_fn kvmppc_hypercall_table[KVMPPC_HCALL_MAX - KVMPPC_HCALL_BASE];
+static spapr_hcall_fn papr_hypercall_table[(MAX_HCALL_OPCODE / 4) + 1];
+static spapr_hcall_fn kvmppc_hypercall_table[KVMPPC_HCALL_MAX - KVMPPC_HCALL_BASE + 1];
 
 void spapr_register_hypercall(target_ulong opcode, spapr_hcall_fn fn)
 {