• Jan Beulich's avatar
    [PATCH] x86_64: actively synchronize vmalloc area when registering certain callbacks · 8c914cb7
    Jan Beulich authored
    While the modular aspect of the respective i386 patch doesn't apply to
    x86-64 (as the top level page directory entry is shared between modules
    and the base kernel), handlers registered with register_die_notifier()
    are still under similar constraints for touching ioremap()ed or
    vmalloc()ed memory. The likelihood of this problem becoming visible is
    of course significantly lower, as the assigned virtual addresses would
    have to cross a 2**39 byte boundary. This is because the callback gets
    invoked
    (a) in the page fault path before the top level page table propagation
    gets carried out (hence a fault to propagate the top level page table
    entry/entries mapping to module's code/data would nest infinitly) and
    (b) in the NMI path, where nested faults must absolutely not happen,
    since otherwise the IRET from the nested fault re-enables NMIs,
    potentially resulting in nested NMI occurences.
    Signed-off-by: default avatarJan Beulich <jbeulich@novell.com>
    Signed-off-by: default avatarAndi Kleen <ak@suse.de>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    8c914cb7
nmi.c 14.2 KB