diff options
author | Gleb Natapov <gleb@redhat.com> | 2013-01-21 15:36:48 +0200 |
---|---|---|
committer | Marcelo Tosatti <mtosatti@redhat.com> | 2013-01-24 00:40:31 -0200 |
commit | 378a8b099fc207ddcb91b19a8c1457667e0af398 (patch) | |
tree | 765795d3fb0e37b87ba5b37d119b2731809ec64b /arch/x86/kvm/x86.c | |
parent | 91b0aa2ca63e60ac69c5dd96bff580d3947073d4 (diff) | |
download | op-kernel-dev-378a8b099fc207ddcb91b19a8c1457667e0af398.zip op-kernel-dev-378a8b099fc207ddcb91b19a8c1457667e0af398.tar.gz |
KVM: x86: fix use of uninitialized memory as segment descriptor in emulator.
If VMX reports segment as unusable, zero descriptor passed by the emulator
before returning. Such descriptor will be considered not present by the
emulator.
Signed-off-by: Gleb Natapov <gleb@redhat.com>
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
Diffstat (limited to 'arch/x86/kvm/x86.c')
-rw-r--r-- | arch/x86/kvm/x86.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index e00dd05..b9f5529 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -4489,8 +4489,10 @@ static bool emulator_get_segment(struct x86_emulate_ctxt *ctxt, u16 *selector, kvm_get_segment(emul_to_vcpu(ctxt), &var, seg); *selector = var.selector; - if (var.unusable) + if (var.unusable) { + memset(desc, 0, sizeof(*desc)); return false; + } if (var.g) var.limit >>= 12; |