x86/ibt,kvm: Add ENDBR to fastops
authorPeter Zijlstra <peterz@infradead.org>
Tue, 8 Mar 2022 15:30:28 +0000 (16:30 +0100)
committerPeter Zijlstra <peterz@infradead.org>
Tue, 15 Mar 2022 09:32:37 +0000 (10:32 +0100)
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Acked-by: Josh Poimboeuf <jpoimboe@redhat.com>
Link: https://lore.kernel.org/r/20220308154318.168850084@infradead.org
arch/x86/kvm/emulate.c

index 5719d8c..08c4e9c 100644 (file)
 #define X16(x...) X8(x), X8(x)
 
 #define NR_FASTOP (ilog2(sizeof(ulong)) + 1)
-#define FASTOP_SIZE 8
+#define FASTOP_SIZE (8 * (1 + HAS_KERNEL_IBT))
 
 struct opcode {
        u64 flags;
@@ -311,7 +311,8 @@ static int fastop(struct x86_emulate_ctxt *ctxt, fastop_t fop);
 #define __FOP_FUNC(name) \
        ".align " __stringify(FASTOP_SIZE) " \n\t" \
        ".type " name ", @function \n\t" \
-       name ":\n\t"
+       name ":\n\t" \
+       ASM_ENDBR
 
 #define FOP_FUNC(name) \
        __FOP_FUNC(#name)
@@ -433,6 +434,7 @@ static int fastop(struct x86_emulate_ctxt *ctxt, fastop_t fop);
        ".align 4 \n\t" \
        ".type " #op ", @function \n\t" \
        #op ": \n\t" \
+       ASM_ENDBR \
        #op " %al \n\t" \
        __FOP_RET(#op)