• Steven Rostedt's avatar
    ftrace: Fix hash record accounting bug · ddf6e0e5
    Steven Rostedt authored
    If the set_ftrace_filter is cleared by writing just whitespace to
    it, then the filter hash refcounts will be decremented but not
    updated. This causes two bugs:
    
    1) No functions will be enabled for tracing when they all should be
    
    2) If the users clears the set_ftrace_filter twice, it will crash ftrace:
    
    ------------[ cut here ]------------
    WARNING: at /home/rostedt/work/git/linux-trace.git/kernel/trace/ftrace.c:1384 __ftrace_hash_rec_update.part.27+0x157/0x1a7()
    Modules linked in:
    Pid: 2330, comm: bash Not tainted 3.1.0-test+ #32
    Call Trace:
     [<ffffffff81051828>] warn_slowpath_common+0x83/0x9b
     [<ffffffff8105185a>] warn_slowpath_null+0x1a/0x1c
     [<ffffffff810ba362>] __ftrace_hash_rec_update.part.27+0x157/0x1a7
     [<ffffffff810ba6e8>] ? ftrace_regex_release+0xa7/0x10f
     [<ffffffff8111bdfe>] ? kfree+0xe5/0x115
     [<ffffffff810ba51e>] ftrace_hash_move+0x2e/0x151
     [<ffffffff810ba6fb>] ftrace_regex_release+0xba/0x10f
     [<ffffffff8112e49a>] fput+0xfd/0x1c2
     [<ffffffff8112b54c>] filp_close+0x6d/0x78
     [<ffffffff8113a92d>] sys_dup3+0x197/0x1c1
     [<ffffffff8113a9a6>] sys_dup2+0x4f/0x54
     [<ffffffff8150cac2>] system_call_fastpath+0x16/0x1b
    ---[ end trace 77a3a7ee73794a02 ]---
    
    Link: http://lkml.kernel.org/r/20111101141420.GA4918@debianReported-by: default avatarRabin Vincent <rabin@rab.in>
    Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
    ddf6e0e5
ftrace.c 89.9 KB