• N
    KVM: x86: Emulator fixes for eip canonical checks on near branches · 234f3ce4
    Nadav Amit 提交于
    Before changing rip (during jmp, call, ret, etc.) the target should be asserted
    to be canonical one, as real CPUs do.  During sysret, both target rsp and rip
    should be canonical. If any of these values is noncanonical, a #GP exception
    should occur.  The exception to this rule are syscall and sysenter instructions
    in which the assigned rip is checked during the assignment to the relevant
    MSRs.
    
    This patch fixes the emulator to behave as real CPUs do for near branches.
    Far branches are handled by the next patch.
    
    This fixes CVE-2014-3647.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: NNadav Amit <namit@cs.technion.ac.il>
    Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
    234f3ce4
emulate.c 127.0 KB