• L
    tracing/events: Don't increment @pos in s_start() · e1c7e2a6
    Li Zefan 提交于
    While testing syscall tracepoints posted by Jason, I found 3 entries
    were missing when reading available_events. The output size of
    available_events is < 4 pages, which means we lost 1 entry per page.
    
    The cause is, it's wrong to increment @pos in s_start().
    
    Actually there's another bug here -- reading avaiable_events/set_events
    can race with module unload:
    
      # cat available_events               |
          s_start()                        |
          s_stop()                         |
                                           | # rmmod foo.ko
          s_start()                        |
            call = list_entry(m->private)  |
    
    @call might be freed and accessing it will lead to crash.
    Reviewed-by: NLiming Wang <liming.wang@windriver.com>
    Signed-off-by: NLi Zefan <lizf@cn.fujitsu.com>
    Cc: Steven Rostedt <rostedt@goodmis.org>
    Cc: Frederic Weisbecker <fweisbec@gmail.com>
    LKML-Reference: <4A4186DD.6090405@cn.fujitsu.com>
    Signed-off-by: NIngo Molnar <mingo@elte.hu>
    e1c7e2a6
trace_events.c 28.3 KB