• Jan Beulich's avatar
    [PATCH] i386: actively synchronize vmalloc area when registering certain callbacks · 101f12af
    Jan Beulich authored
    Registering a callback handler through register_die_notifier() is obviously
    primarily intended for use by modules.  However, the way these currently
    get called it is basically impossible for them to actually be used by
    modules, as there is, on non-PAE configurationes, a good chance (the larger
    the module, the better) for the system to crash as a result.
    
    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.
    
    Besides the modular aspect, similar problems would even arise for in-
    kernel consumers of the API if they touched ioremap()ed or vmalloc()ed
    memory inside their handlers.
    Signed-off-by: default avatarJan Beulich <jbeulich@novell.com>
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    101f12af
fault.c 16 KB