ftrace: fix "notrace" filtering priority
PATCH 1/1 ftrace: fix "notrace" filtering priority
Hi Steven,
This is a fix to give notrace filter rules priority over "set_ftrace_filter" rules. This way functions set to be filtered and also in the notrace list will not get traced.
---
This fix ensures that functions which are set to be filetered and are concurrently marked as "notrace" don't get recorded. As of now, if a record is marked as FTRACE_FL_FILTER and is enabled, then the notrace flag is not checked. Tested on x86-32.
kernel/trace/ftrace.c +9 -3
@@ -355,20 +355,26 @@ __ftrace_replace_code(struct dyn_ftrace *rec,* If this record is set not to trace then * do nothing. * +* If this record is set not to trace and +* it is enabled then disable it. +* * If this record is not set to be filtered and * it is enabled, disable it. */ - fl = rec->flags & (FTRACE_FL_FILTER |FTRACE_FL_ENABLED ); + + fl = rec->flags & (FTRACE_FL_FILTER |FTRACE_FL_NOTRACE | +FTRACE_FL_ENABLED );if ((fl == (FTRACE_FL_FILTER |FTRACE_FL_ENABLED )) || - (fl ==0 ) || (rec->flags &FTRACE_FL_NOTRACE )) + (fl == (FTRACE_FL_FILTER |FTRACE_FL_NOTRACE )) || + !fl || (fl ==FTRACE_FL_NOTRACE ))return 0 ;/* * If it is enabled disable it, * otherwise enable it! */ -if (fl ==FTRACE_FL_ENABLED ) { +if (fl &FTRACE_FL_ENABLED ) {/* swap new and old */ new = old; old =ftrace_call_replace (ip,FTRACE_ADDR );
Ingo Molnar
AppliedQuoted 10 lines · Abhishek Sagar
Hi Steven,
This is a fix to give notrace filter rules priority over "
set_ftrace_filter" rules. This way functions set to be filtered and also in the notrace list will not get traced.This fix ensures that functions which are set to be filetered and are concurrently marked as "notrace" don't get recorded. As of now, if a record is marked as
FTRACE_FL_FILTERand is enabled, then the notrace flag is not checked. Tested on x86-32.
applied to tip/tracing/ftrace - thanks Abhishek.
Ingo