diff options
author | Avi Kivity <avi@redhat.com> | 2012-08-19 11:34:31 (GMT) |
---|---|---|
committer | Marcelo Tosatti <mtosatti@redhat.com> | 2012-08-22 21:54:26 (GMT) |
commit | 5ad105e569c45dcfad50d724c61d5061248be755 (patch) | |
tree | 4cae79db5826d07b07ed815c5d763fa095cae3f2 /include | |
parent | 35f2d16bb9ace0fb2671b8232839944ad9057c6f (diff) | |
download | linux-fsl-qoriq-5ad105e569c45dcfad50d724c61d5061248be755.tar.xz |
KVM: x86 emulator: use stack size attribute to mask rsp in stack ops
The sub-register used to access the stack (sp, esp, or rsp) is not
determined by the address size attribute like other memory references,
but by the stack segment's B bit (if not in x86_64 mode).
Fix by using the existing stack_mask() to figure out the correct mask.
This long-existing bug was exposed by a combination of a27685c33acccce
(emulate invalid guest state by default), which causes many more
instructions to be emulated, and a seabios change (possibly a bug) which
causes the high 16 bits of esp to become polluted across calls to real
mode software interrupts.
Signed-off-by: Avi Kivity <avi@redhat.com>
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
Diffstat (limited to 'include')
0 files changed, 0 insertions, 0 deletions