diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c index 07e9913d6bbbab8077dbad1df9bc931a0336f1d7..77041d4940521af16113dd658ee8c7f749330159 100644 --- a/arch/x86/kvm/emulate.c +++ b/arch/x86/kvm/emulate.c @@ -658,7 +658,7 @@ static __always_inline int __linearize(struct x86_emulate_ctxt *ctxt, *max_size = 0; switch (ctxt->mode) { case X86EMUL_MODE_PROT64: - if (((signed long)la << 16) >> 16 != la) + if (is_noncanonical_address(la)) return emulate_gp(ctxt, 0); *max_size = min_t(u64, ~0u, (1ull << 48) - la);