projects
/
xen.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
82855ab
)
x86emul: skip VIF processing in VME mode for 16-bit POPF at IOPL 3
author
Jan Beulich
<jbeulich@suse.com>
Tue, 4 Dec 2018 13:02:46 +0000
(14:02 +0100)
committer
Jan Beulich
<jbeulich@suse.com>
Tue, 4 Dec 2018 13:02:46 +0000
(14:02 +0100)
At IOPL 3 CR4.VME is irrelevant.
Reported-by: Andrew Cooper <andrew.cooper3@citrix.com>
Signed-off-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
xen/arch/x86/x86_emulate/x86_emulate.c
patch
|
blob
|
history
diff --git
a/xen/arch/x86/x86_emulate/x86_emulate.c
b/xen/arch/x86/x86_emulate/x86_emulate.c
index 0ae433538e5954d37823021ec98b7018aa801579..5313145b63477e5231d6add68ef65439f3d7dff9 100644
(file)
--- a/
xen/arch/x86/x86_emulate/x86_emulate.c
+++ b/
xen/arch/x86/x86_emulate/x86_emulate.c
@@
-4223,7
+4223,8
@@
x86_emulate(
if ( op_bytes == 2 )
{
dst.val = (uint16_t)dst.val | (_regs.eflags & 0xffff0000u);
- if ( cr4 & X86_CR4_VME )
+ if ( (cr4 & X86_CR4_VME) &&
+ MASK_EXTR(_regs.eflags, X86_EFLAGS_IOPL) != 3 )
{
if ( dst.val & X86_EFLAGS_IF )
{