KVM: VMX: Make vmread_error_trampoline() uncallable from C code
authorSean Christopherson <seanjc@google.com>
Wed, 28 Sep 2022 23:20:15 +0000 (23:20 +0000)
committerSean Christopherson <seanjc@google.com>
Thu, 1 Dec 2022 00:27:47 +0000 (16:27 -0800)
commit0b5e7a16a0a79a3742f0df9e45bca46f01b40e6a
treeb83258890e33558338920c57809cb9a0cf89d776
parent4a8fd4a720f8a8dbc370076d26388176c311218a
KVM: VMX: Make vmread_error_trampoline() uncallable from C code

Declare vmread_error_trampoline() as an opaque symbol so that it cannot
be called from C code, at least not without some serious fudging.  The
trampoline always passes parameters on the stack so that the inline
VMREAD sequence doesn't need to clobber registers.  regparm(0) was
originally added to document the stack behavior, but it ended up being
confusing because regparm(0) is a nop for 64-bit targets.

Opportunustically wrap the trampoline and its declaration in #ifdeffery
to make it even harder to invoke incorrectly, to document why it exists,
and so that it's not left behind if/when CONFIG_CC_HAS_ASM_GOTO_OUTPUT
is true for all supported toolchains.

No functional change intended.

Cc: Uros Bizjak <ubizjak@gmail.com>
Signed-off-by: Sean Christopherson <seanjc@google.com>
Link: https://lore.kernel.org/r/20220928232015.745948-1-seanjc@google.com
arch/x86/kvm/vmx/vmenter.S
arch/x86/kvm/vmx/vmx_ops.h