• Steven Rostedt's avatar
    ftrace: do not profile functions when disabled · 0f6ce3de
    Steven Rostedt authored
    A race was found that if one were to enable and disable the function
    profiler repeatedly, then the system can panic. This was because a profiled
    function may be preempted just before disabling interrupts. While
    the profiler is disabled and then reenabled, the preempted function
    could start again, and access the hash as it is being initialized.
    
    This just adds a check in the irq disabled part to check if the profiler
    is enabled, and if it is not then it will just exit.
    
    When the system is disabled, the profile_enabled variable is cleared
    before calling the unregistering of the function profiler. This
    unregistering calls stop machine which also acts as a synchronize schedule.
    
    [ Impact: fix panic in enabling/disabling function profiler ]
    Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
    0f6ce3de
ftrace.c 69.9 KB