• Kees Cook's avatar
    x86: Make sure IDT is page aligned · 4df05f36
    Kees Cook authored
    Since the IDT is referenced from a fixmap, make sure it is page aligned.
    Merge with 32-bit one, since it was already aligned to deal with F00F
    bug. Since bss is cleared before IDT setup, it can live there. This also
    moves the other *_idt_table variables into common locations.
    
    This avoids the risk of the IDT ever being moved in the bss and having
    the mapping be offset, resulting in calling incorrect handlers. In the
    current upstream kernel this is not a manifested bug, but heavily patched
    kernels (such as those using the PaX patch series) did encounter this bug.
    
    The tables other than idt_table technically do not need to be page
    aligned, at least not at the current time, but using a common
    declaration avoids mistakes.  On 64 bits the table is exactly one page
    long, anyway.
    Signed-off-by: default avatarKees Cook <keescook@chromium.org>
    Link: http://lkml.kernel.org/r/20130716183441.GA14232@www.outflux.netReported-by: default avatarPaX Team <pageexec@gmail.com>
    Signed-off-by: default avatarH. Peter Anvin <hpa@linux.intel.com>
    4df05f36
traps.c 21.1 KB