Skip to content
  • Steven Rostedt's avatar
    ftrace: immediately stop code modification if failure is detected · 90c7ac49
    Steven Rostedt authored
    
    
    Impact: fix to prevent NMI lockup
    
    If the page fault handler produces a WARN_ON in the modifying of
    text, and the system is setup to have a high frequency of NMIs,
    we can lock up the system on a failure to modify code.
    
    The modifying of code with NMIs allows all NMIs to modify the code
    if it is about to run. This prevents a modifier on one CPU from
    modifying code running in NMI context on another CPU. The modifying
    is done through stop_machine, so only NMIs must be considered.
    
    But if the write causes the page fault handler to produce a warning,
    the print can slow it down enough that as soon as it is done
    it will take another NMI before going back to the process context.
    The new NMI will perform the write again causing another print and
    this will hang the box.
    
    This patch turns off the writing as soon as a failure is detected
    and does not wait for it to be turned off by the process context.
    This will keep NMIs from getting stuck in this back and forth
    of print outs.
    
    Signed-off-by: default avatarSteven Rostedt <srostedt@redhat.com>
    90c7ac49