aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/x86/kvm/emulate.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c
index 39171cb307ea..979869f70468 100644
--- a/arch/x86/kvm/emulate.c
+++ b/arch/x86/kvm/emulate.c
@@ -677,8 +677,9 @@ static int __linearize(struct x86_emulate_ctxt *ctxt,
677 addr.seg); 677 addr.seg);
678 if (!usable) 678 if (!usable)
679 goto bad; 679 goto bad;
680 /* code segment or read-only data segment */ 680 /* code segment in protected mode or read-only data segment */
681 if (((desc.type & 8) || !(desc.type & 2)) && write) 681 if ((((ctxt->mode != X86EMUL_MODE_REAL) && (desc.type & 8))
682 || !(desc.type & 2)) && write)
682 goto bad; 683 goto bad;
683 /* unreadable code segment */ 684 /* unreadable code segment */
684 if (!fetch && (desc.type & 8) && !(desc.type & 2)) 685 if (!fetch && (desc.type & 8) && !(desc.type & 2))