Skip to content
  • Mathieu Desnoyers's avatar
    Tracepoint: Dissociate from module mutex · b75ef8b4
    Mathieu Desnoyers authored
    
    
    Copy the information needed from struct module into a local module list
    held within tracepoint.c from within the module coming/going notifier.
    
    This vastly simplifies locking of tracepoint registration /
    unregistration, because we don't have to take the module mutex to
    register and unregister tracepoints anymore. Steven Rostedt ran into
    dependency problems related to modules mutex vs kprobes mutex vs ftrace
    mutex vs tracepoint mutex that seems to be hard to fix without removing
    this dependency between tracepoint and module mutex. (note: it should be
    investigated whether kprobes could benefit of being dissociated from the
    modules mutex too.)
    
    This also fixes module handling of tracepoint list iterators, because it
    was expecting the list to be sorted by pointer address. Given we have
    control on our own list now, it's OK to sort this list which has
    tracepoints as its only purpose. The reason why this sorting is required
    is to handle the fact that seq files (and any read() operation from
    user-space) cannot hold the tracepoint mutex across multiple calls, so
    list entries may vanish between calls. With sorting, the tracepoint
    iterator becomes usable even if the list don't contain the exact item
    pointed to by the iterator anymore.
    
    Signed-off-by: default avatarMathieu Desnoyers <mathieu.desnoyers@efficios.com>
    Acked-by: default avatarJason Baron <jbaron@redhat.com>
    CC: Ingo Molnar <mingo@elte.hu>
    CC: Lai Jiangshan <laijs@cn.fujitsu.com>
    CC: Peter Zijlstra <a.p.zijlstra@chello.nl>
    CC: Thomas Gleixner <tglx@linutronix.de>
    CC: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
    Link: http://lkml.kernel.org/r/20110810191839.GC8525@Krystal
    
    
    Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
    b75ef8b4