tracing: Fix disabling of soft disable
The comment on the soft disable 'disable' case of __ftrace_event_enable_disable() states that the soft disable bit should be cleared in that case, but currently only the soft mode bit is actually cleared. This essentially leaves the standard non-soft-enable enable/disable paths as the only way to clear the soft disable flag, but the soft disable bit should also be cleared when removing a trigger with '!'. Also, the SOFT_DISABLED bit should never be set if SOFT_MODE is cleared. This fixes the above discrepancies. Link: http://lkml.kernel.org/r/b9c68dd50bc07019e6c67d3f9b29be4ef1b2badb.1372479499.git.tom.zanussi@linux.intel.com Signed-off-by: Tom Zanussi <tom.zanussi@linux.intel.com> Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
This commit is contained in:
parent
44a6a4ee1a
commit
3baa5e4cf2
@ -291,9 +291,11 @@ static int __ftrace_event_enable_disable(struct ftrace_event_file *file,
|
|||||||
}
|
}
|
||||||
call->class->reg(call, TRACE_REG_UNREGISTER, file);
|
call->class->reg(call, TRACE_REG_UNREGISTER, file);
|
||||||
}
|
}
|
||||||
/* If in SOFT_MODE, just set the SOFT_DISABLE_BIT */
|
/* If in SOFT_MODE, just set the SOFT_DISABLE_BIT, else clear it */
|
||||||
if (file->flags & FTRACE_EVENT_FL_SOFT_MODE)
|
if (file->flags & FTRACE_EVENT_FL_SOFT_MODE)
|
||||||
set_bit(FTRACE_EVENT_FL_SOFT_DISABLED_BIT, &file->flags);
|
set_bit(FTRACE_EVENT_FL_SOFT_DISABLED_BIT, &file->flags);
|
||||||
|
else
|
||||||
|
clear_bit(FTRACE_EVENT_FL_SOFT_DISABLED_BIT, &file->flags);
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
/*
|
/*
|
||||||
|
Loading…
Reference in New Issue
Block a user