• Li Zefan's avatar
    ftrace: Don't manipulate @pos in t_start() · 694ce0a5
    Li Zefan authored
    It's rather confusing that in t_start(), in some cases @pos is
    incremented, and in some cases it's decremented and then incremented.
    
    This patch rewrites t_start() in a much more general way.
    
    Thus we fix a bug that if ftrace_filtered == 1, functions have tracer
    hooks won't be printed, because the branch is always unreachable:
    
    static void *t_start(...)
    {
    	...
    	if (!p)
    		return t_hash_start(m, pos);
    	return p;
    }
    
    Before:
      # echo 'sys_open' > /mnt/tracing/set_ftrace_filter
      # echo 'sys_write:traceon:4' >> /mnt/tracing/set_ftrace_filter
      sys_open
    
    After:
      # echo 'sys_open' > /mnt/tracing/set_ftrace_filter
      # echo 'sys_write:traceon:4' >> /mnt/tracing/set_ftrace_filter
      sys_open
      sys_write:traceon:count=4
    Reviewed-by: default avatarLiming Wang <liming.wang@windriver.com>
    Signed-off-by: default avatarLi Zefan <lizf@cn.fujitsu.com>
    Cc: Steven Rostedt <rostedt@goodmis.org>
    Cc: Frederic Weisbecker <fweisbec@gmail.com>
    LKML-Reference: <4A41874B.4090507@cn.fujitsu.com>
    Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
    694ce0a5
ftrace.c 70.4 KB