Acked-by: Jethro Beekman -- Jethro Beekman | Fortanix On 2020-08-18 06:24, Sean Christopherson wrote: > Use 'cmpq' to force an 8-byte CMP when checking for a user provided exit > handler. The handler is a pointer, which is guaranteed to be an 8-byte > value since SGX is 64-bit mode only, and gcc defaults to 'cmpl' given a > bare 'cmp', i.e. is only checking the lower 32 bits. This could cause > a false negative when detecting a user exit handler. > > Signed-off-by: Sean Christopherson > --- > arch/x86/entry/vdso/vsgx_enter_enclave.S | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/arch/x86/entry/vdso/vsgx_enter_enclave.S b/arch/x86/entry/vdso/vsgx_enter_enclave.S > index be7e467e1efb3..2d88acd408d4e 100644 > --- a/arch/x86/entry/vdso/vsgx_enter_enclave.S > +++ b/arch/x86/entry/vdso/vsgx_enter_enclave.S > @@ -48,7 +48,7 @@ SYM_FUNC_START(__vdso_sgx_enter_enclave) > > /* Invoke userspace's exit handler if one was provided. */ > .Lhandle_exit: > - cmp $0, 0x20(%rbp) > + cmpq $0, 0x20(%rbp) > jne .Linvoke_userspace_handler > > .Lout: >