diff options
author | Avi Kivity <avi@redhat.com> | 2012-06-10 10:11:00 -0400 |
---|---|---|
committer | Avi Kivity <avi@redhat.com> | 2012-07-09 07:19:02 -0400 |
commit | cbd27ee783f1e56d56415e8c5f2492ccedd565c4 (patch) | |
tree | 0e4f1211f1073550028cab8e9baa74feb3b68b23 /arch/x86 | |
parent | f47cfa3174ad8bd39e56524b36e79c463bf820b1 (diff) |
KVM: x86 emulator: initialize memop
memop is not initialized; this can lead to a two-byte operation
following a 4-byte operation to see garbage values. Usually
truncation fixes things fot us later on, but at least in one case
(call abs) it doesn't.
Fix by moving memop to the auto-initialized field area.
Signed-off-by: Avi Kivity <avi@redhat.com>
Diffstat (limited to 'arch/x86')
-rw-r--r-- | arch/x86/include/asm/kvm_emulate.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/x86/include/asm/kvm_emulate.h b/arch/x86/include/asm/kvm_emulate.h index cd5c96b2496e..c764f43b71c5 100644 --- a/arch/x86/include/asm/kvm_emulate.h +++ b/arch/x86/include/asm/kvm_emulate.h | |||
@@ -280,9 +280,9 @@ struct x86_emulate_ctxt { | |||
280 | u8 modrm_seg; | 280 | u8 modrm_seg; |
281 | bool rip_relative; | 281 | bool rip_relative; |
282 | unsigned long _eip; | 282 | unsigned long _eip; |
283 | struct operand memop; | ||
283 | /* Fields above regs are cleared together. */ | 284 | /* Fields above regs are cleared together. */ |
284 | unsigned long regs[NR_VCPU_REGS]; | 285 | unsigned long regs[NR_VCPU_REGS]; |
285 | struct operand memop; | ||
286 | struct operand *memopp; | 286 | struct operand *memopp; |
287 | struct fetch_cache fetch; | 287 | struct fetch_cache fetch; |
288 | struct read_cache io_read; | 288 | struct read_cache io_read; |