On 12/08/2017 15:35, Yu Zhang wrote: > index a98b88a..50107ae 100644 > --- a/arch/x86/kvm/emulate.c > +++ b/arch/x86/kvm/emulate.c > @@ -694,7 +694,7 @@ static __always_inline int __linearize(struct x86_emulate_ctxt *ctxt, > switch (mode) { > case X86EMUL_MODE_PROT64: > *linear = la; > - if (is_noncanonical_address(la)) > + if (emul_is_noncanonical_address(la, ctxt)) > goto bad; > > *max_size = min_t(u64, ~0u, (1ull << 48) - la); Oops, you missed one here. Probably best to use ctxt_virt_addr_bits and then "inline" emul_is_noncanonical_address as "get_canonical(la, va_bits) != la". Paolo