• Nadav Amit's avatar
    KVM: x86: Access to LDT/GDT that wraparound is incorrect · edccda7c
    Nadav Amit authored
    When access to descriptor in LDT/GDT wraparound outside long-mode, the address
    of the descriptor should be truncated to 32-bit.  Citing Intel SDM 2.1.1.1
    "Global and Local Descriptor Tables in IA-32e Mode": "GDTR and LDTR registers
    are expanded to 64-bits wide in both IA-32e sub-modes (64-bit mode and
    compatibility mode)."
    
    So in other cases, we need to truncate. Creating new function to return a
    pointer to descriptor table to avoid too much code duplication.
    Signed-off-by: default avatarNadav Amit <namit@cs.technion.ac.il>
    [Wrap 64-bit check with #ifdef CONFIG_X86_64, to avoid a "right shift count
     >= width of type" warning and consequent undefined behavior. - Paolo]
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    edccda7c
emulate.c 131 KB