aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--kernel/trace/ftrace.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c
index 0118979e211f..b532e4a68c74 100644
--- a/kernel/trace/ftrace.c
+++ b/kernel/trace/ftrace.c
@@ -355,20 +355,26 @@ __ftrace_replace_code(struct dyn_ftrace *rec,
355 * If this record is set not to trace then 355 * If this record is set not to trace then
356 * do nothing. 356 * do nothing.
357 * 357 *
358 * If this record is set not to trace and
359 * it is enabled then disable it.
360 *
358 * If this record is not set to be filtered and 361 * If this record is not set to be filtered and
359 * it is enabled, disable it. 362 * it is enabled, disable it.
360 */ 363 */
361 fl = rec->flags & (FTRACE_FL_FILTER | FTRACE_FL_ENABLED); 364
365 fl = rec->flags & (FTRACE_FL_FILTER | FTRACE_FL_NOTRACE |
366 FTRACE_FL_ENABLED);
362 367
363 if ((fl == (FTRACE_FL_FILTER | FTRACE_FL_ENABLED)) || 368 if ((fl == (FTRACE_FL_FILTER | FTRACE_FL_ENABLED)) ||
364 (fl == 0) || (rec->flags & FTRACE_FL_NOTRACE)) 369 (fl == (FTRACE_FL_FILTER | FTRACE_FL_NOTRACE)) ||
370 !fl || (fl == FTRACE_FL_NOTRACE))
365 return 0; 371 return 0;
366 372
367 /* 373 /*
368 * If it is enabled disable it, 374 * If it is enabled disable it,
369 * otherwise enable it! 375 * otherwise enable it!
370 */ 376 */
371 if (fl == FTRACE_FL_ENABLED) { 377 if (fl & FTRACE_FL_ENABLED) {
372 /* swap new and old */ 378 /* swap new and old */
373 new = old; 379 new = old;
374 old = ftrace_call_replace(ip, FTRACE_ADDR); 380 old = ftrace_call_replace(ip, FTRACE_ADDR);