• Linus Torvalds's avatar
    Merge tag 'trace-v4.14-rc1-2' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace · ac0a3646
    Linus Torvalds authored
    Pull tracing fixes from Steven Rostedt:
     "Stack tracing and RCU has been having issues with each other and
      lockdep has been pointing out constant problems.
    
      The changes have been going into the stack tracer, but it has been
      discovered that the problem isn't with the stack tracer itself, but it
      is with calling save_stack_trace() from within the internals of RCU.
    
      The stack tracer is the one that can trigger the issue the easiest,
      but examining the problem further, it could also happen from a WARN()
      in the wrong place, or even if an NMI happened in this area and it did
      an rcu_read_lock().
    
      The critical area is where RCU is not watching. Which can happen while
      going to and from idle, or bringing up or taking down a CPU.
    
      The final fix was to put the protection in kernel_text_address() as it
      is the one that requires RCU to be watching while doing the stack
      trace.
    
      To make this work properly, Paul had to allow rcu_irq_enter() happen
      after rcu_nmi_enter(). This should have been done anyway, since an NMI
      can page fault (reading vmalloc area), and a page fault triggers
      rcu_irq_enter().
    
      One patch is just a consolidation of code so that the fix only needed
      to be done in one location"
    
    * tag 'trace-v4.14-rc1-2' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace:
      tracing: Remove RCU work arounds from stack tracer
      extable: Enable RCU if it is not watching in kernel_text_address()
      extable: Consolidate *kernel_text_address() functions
      rcu: Allow for page faults in NMI handlers
    ac0a3646
tree.c 131 KB