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

Commit 4da75b9c authored by Jason Wessel's avatar Jason Wessel
Browse files

kgdb: Turn off tracing while in the debugger



The kernel debugger should turn off kernel tracing any time the
debugger is active and restore it on resume.

Signed-off-by: default avatarJason Wessel <jason.wessel@windriver.com>
Reviewed-by: default avatarSteven Rostedt <rostedt@goodmis.org>
parent ae6bf53e
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -1365,6 +1365,7 @@ static int kgdb_cpu_enter(struct kgdb_state *ks, struct pt_regs *regs)
	int sstep_tries = 100;
	int error = 0;
	int i, cpu;
	int trace_on = 0;
acquirelock:
	/*
	 * Interrupts will be restored by the 'trap return' code, except when
@@ -1399,6 +1400,8 @@ static int kgdb_cpu_enter(struct kgdb_state *ks, struct pt_regs *regs)
			 */
			if (arch_kgdb_ops.correct_hw_break)
				arch_kgdb_ops.correct_hw_break();
			if (trace_on)
				tracing_on();
			atomic_dec(&cpu_in_kgdb[cpu]);
			touch_softlockup_watchdog_sync();
			clocksource_touch_watchdog();
@@ -1474,6 +1477,9 @@ static int kgdb_cpu_enter(struct kgdb_state *ks, struct pt_regs *regs)
	kgdb_single_step = 0;
	kgdb_contthread = current;
	exception_level = 0;
	trace_on = tracing_is_on();
	if (trace_on)
		tracing_off();

	/* Talk to debugger with gdbserial protocol */
	error = gdb_serial_stub(ks);
@@ -1505,6 +1511,8 @@ static int kgdb_cpu_enter(struct kgdb_state *ks, struct pt_regs *regs)
		else
			kgdb_sstep_pid = 0;
	}
	if (trace_on)
		tracing_on();
	/* Free kgdb_active */
	atomic_set(&kgdb_active, -1);
	touch_softlockup_watchdog_sync();