• Takuya Yoshikawa's avatar
    KVM: fix load_guest_segment_descriptor() to return X86EMUL_* · c125c607
    Takuya Yoshikawa authored
    This patch fixes load_guest_segment_descriptor() to return
    X86EMUL_PROPAGATE_FAULT when it tries to access the descriptor
    table beyond the limit of it: suggested by Marcelo.
    
    I have checked current callers of this helper function,
      - kvm_load_segment_descriptor()
      - kvm_task_switch()
    and confirmed that this patch will change nothing in the
    upper layers if we do not change the handling of this
    return value from load_guest_segment_descriptor().
    
    Next step: Although fixing the kvm_task_switch() to handle the
    propagated faults properly seems difficult, and maybe not worth
    it because TSS is not used commonly these days, we can fix
    kvm_load_segment_descriptor(). By doing so, the injected #GP
    becomes possible to be handled by the guest. The only problem
    for this is how to differentiate this fault from the page faults
    generated by kvm_read_guest_virt(). We may have to split this
    function to achive this goal.
    Signed-off-by: default avatarTakuya Yoshikawa <yoshikawa.takuya@oss.ntt.co.jp>
    Signed-off-by: default avatarMarcelo Tosatti <mtosatti@redhat.com>
    c125c607
x86.c 137 KB