projects
/
linux.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
ed30a4a
)
x86/sev: Check for MWAITX and MONITORX opcodes in the #VC handler
author
Tom Lendacky
<thomas.lendacky@amd.com>
Mon, 22 Apr 2024 13:39:21 +0000
(08:39 -0500)
committer
Borislav Petkov (AMD)
<bp@alien8.de>
Mon, 22 Apr 2024 16:38:28 +0000
(18:38 +0200)
The MWAITX and MONITORX instructions generate the same #VC error code as
the MWAIT and MONITOR instructions, respectively. Update the #VC handler
opcode checking to also support the MWAITX and MONITORX opcodes.
Fixes: e3ef461af35a ("x86/sev: Harden #VC instruction emulation somewhat")
Signed-off-by: Tom Lendacky <thomas.lendacky@amd.com>
Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
Link:
https://lore.kernel.org/r/453d5a7cfb4b9fe818b6fb67f93ae25468bc9e23.1713793161.git.thomas.lendacky@amd.com
arch/x86/kernel/sev-shared.c
patch
|
blob
|
history
diff --git
a/arch/x86/kernel/sev-shared.c
b/arch/x86/kernel/sev-shared.c
index 8b04958da5e7d6c4bd096cffdaa4874e73433846..b4f8fa0f722cd6749079ba81d69458200c5051bb 100644
(file)
--- a/
arch/x86/kernel/sev-shared.c
+++ b/
arch/x86/kernel/sev-shared.c
@@
-1203,12
+1203,14
@@
static enum es_result vc_check_opcode_bytes(struct es_em_ctxt *ctxt,
break;
case SVM_EXIT_MONITOR:
- if (opcode == 0x010f && modrm == 0xc8)
+ /* MONITOR and MONITORX instructions generate the same error code */
+ if (opcode == 0x010f && (modrm == 0xc8 || modrm == 0xfa))
return ES_OK;
break;
case SVM_EXIT_MWAIT:
- if (opcode == 0x010f && modrm == 0xc9)
+ /* MWAIT and MWAITX instructions generate the same error code */
+ if (opcode == 0x010f && (modrm == 0xc9 || modrm == 0xfb))
return ES_OK;
break;