• walimis's avatar
    function tracing: fix wrong pos computing when read buffer has been fulfilled · 5821e1b7
    walimis authored
    Impact: make output of available_filter_functions complete
    
    phenomenon:
    
    The first value of dyn_ftrace_total_info is not equal with
    `cat available_filter_functions | wc -l`, but they should be equal.
    
    root cause:
    
    When printing functions with seq_printf in t_show, if the read buffer
    is just overflowed by current function record, then this function
    won't be printed to user space through read buffer, it will
    just be dropped. So we can't see this function printing.
    
    So, every time the last function to fill the read buffer, if overflowed,
    will be dropped.
    
    This also applies to set_ftrace_filter if set_ftrace_filter has
    more bytes than read buffer.
    
    fix:
    
    Through checking return value of seq_printf, if less than 0, we know
    this function doesn't be printed. Then we decrease position to force
    this function to be printed next time, in next read buffer.
    
    Another little fix is to show correct allocating pages count.
    Signed-off-by: default avatarwalimis <walimisdev@gmail.com>
    Acked-by: default avatarSteven Rostedt <rostedt@goodmis.org>
    Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
    5821e1b7
ftrace.c 30.6 KB