• Steven Rostedt (VMware)'s avatar
    ftrace/graph: Do not modify the EMPTY_HASH for the function_graph filter · 92ad18ec
    Steven Rostedt (VMware) authored
    On boot up, if the kernel command line sets a graph funtion with the kernel
    command line options "ftrace_graph_filter" or "ftrace_graph_notrace" then it
    updates the corresponding function graph hash, ftrace_graph_hash or
    ftrace_graph_notrace_hash respectively. Unfortunately, at boot up, these
    variables are pointers to the "EMPTY_HASH" which is a constant used as a
    placeholder when a hash has no entities. The problem was that the comand
    line version to set the hashes updated the actual EMPTY_HASH instead of
    creating a new hash for the function graph. This broke the EMPTY_HASH
    because not only did it modify a constant (not sure how that was allowed to
    happen, except maybe because it was done at early boot, const variables were
    still mutable), but it made the filters have functions listed in them when
    they were actually empty.
    
    The kernel command line function needs to allocate a new hash for the
    function graph filters and assign the necessary variables to that new hash
    instead.
    
    Link: http://lkml.kernel.org/r/1488420091.7212.17.camel@linux.intel.com
    
    Cc: Namhyung Kim <namhyung@kernel.org>
    Fixes: b9b0c831 ("ftrace: Convert graph filter to use hash tables")
    Reported-by: default avatarTodd Brandt <todd.e.brandt@linux.intel.com>
    Tested-by: default avatarTodd Brandt <todd.e.brandt@linux.intel.com>
    Signed-off-by: default avatarSteven Rostedt (VMware) <rostedt@goodmis.org>
    92ad18ec
ftrace.c 144 KB