Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e6a2e27c authored by Steven Rostedt (Google)'s avatar Steven Rostedt (Google) Committed by Greg Kroah-Hartman
Browse files

tracing: Have traceon and traceoff trigger honor the instance

commit 302e9edd54985f584cfc180098f3554774126969 upstream.

If a trigger is set on an event to disable or enable tracing within an
instance, then tracing should be disabled or enabled in the instance and
not at the top level, which is confusing to users.

Link: https://lkml.kernel.org/r/20220223223837.14f94ec3@rorschach.local.home



Cc: stable@vger.kernel.org
Fixes: ae63b31e ("tracing: Separate out trace events from global variables")
Tested-by: default avatarDaniel Bristot de Oliveira <bristot@kernel.org>
Reviewed-by: default avatarTom Zanussi <zanussi@kernel.org>
Signed-off-by: default avatarSteven Rostedt (Google) <rostedt@goodmis.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 400c2f36
Loading
Loading
Loading
Loading
+46 −6
Original line number Diff line number Diff line
@@ -933,6 +933,16 @@ static void
traceon_trigger(struct event_trigger_data *data, void *rec,
		struct ring_buffer_event *event)
{
	struct trace_event_file *file = data->private_data;

	if (file) {
		if (tracer_tracing_is_on(file->tr))
			return;

		tracer_tracing_on(file->tr);
		return;
	}

	if (tracing_is_on())
		return;

@@ -943,8 +953,15 @@ static void
traceon_count_trigger(struct event_trigger_data *data, void *rec,
		      struct ring_buffer_event *event)
{
	struct trace_event_file *file = data->private_data;

	if (file) {
		if (tracer_tracing_is_on(file->tr))
			return;
	} else {
		if (tracing_is_on())
			return;
	}

	if (!data->count)
		return;
@@ -952,6 +969,9 @@ traceon_count_trigger(struct event_trigger_data *data, void *rec,
	if (data->count != -1)
		(data->count)--;

	if (file)
		tracer_tracing_on(file->tr);
	else
		tracing_on();
}

@@ -959,6 +979,16 @@ static void
traceoff_trigger(struct event_trigger_data *data, void *rec,
		 struct ring_buffer_event *event)
{
	struct trace_event_file *file = data->private_data;

	if (file) {
		if (!tracer_tracing_is_on(file->tr))
			return;

		tracer_tracing_off(file->tr);
		return;
	}

	if (!tracing_is_on())
		return;

@@ -969,8 +999,15 @@ static void
traceoff_count_trigger(struct event_trigger_data *data, void *rec,
		       struct ring_buffer_event *event)
{
	struct trace_event_file *file = data->private_data;

	if (file) {
		if (!tracer_tracing_is_on(file->tr))
			return;
	} else {
		if (!tracing_is_on())
			return;
	}

	if (!data->count)
		return;
@@ -978,6 +1015,9 @@ traceoff_count_trigger(struct event_trigger_data *data, void *rec,
	if (data->count != -1)
		(data->count)--;

	if (file)
		tracer_tracing_off(file->tr);
	else
		tracing_off();
}