diff options
author | Jason Wessel <jason.wessel@windriver.com> | 2008-09-26 11:36:41 -0400 |
---|---|---|
committer | Jason Wessel <jason.wessel@windriver.com> | 2008-09-26 11:36:41 -0400 |
commit | d7161a65341556bacb5e6654e133803f46f51063 (patch) | |
tree | b2933dc2ce1435956c193c37fd53a3d5530fe9d7 /arch/mips | |
parent | 18d6522b86d21a04c8ac1ea79747e2e434a956d9 (diff) |
kgdb, x86, arm, mips, powerpc: ignore user space single stepping
On the x86 arch, user space single step exceptions should be ignored
if they occur in the kernel space, such as ptrace stepping through a
system call.
First check if it is kgdb that is executing a single step, then ensure
it is not an accidental traversal into the user space, while in kgdb,
any other time the TIF_SINGLESTEP is set, kgdb should ignore the
exception.
On x86, arm, mips and powerpc, the kgdb_contthread usage was
inconsistent with the way single stepping is implemented in the kgdb
core. The arch specific stub should always set the
kgdb_cpu_doing_single_step correctly if it is single stepping. This
allows kgdb to correctly process an instruction steps if ptrace
happens to be requesting an instruction step over a system call.
Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
Diffstat (limited to 'arch/mips')
-rw-r--r-- | arch/mips/kernel/kgdb.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/arch/mips/kernel/kgdb.c b/arch/mips/kernel/kgdb.c index 8f6d58ede33c..6e152c80cd4a 100644 --- a/arch/mips/kernel/kgdb.c +++ b/arch/mips/kernel/kgdb.c | |||
@@ -236,8 +236,7 @@ int kgdb_arch_handle_exception(int vector, int signo, int err_code, | |||
236 | 236 | ||
237 | atomic_set(&kgdb_cpu_doing_single_step, -1); | 237 | atomic_set(&kgdb_cpu_doing_single_step, -1); |
238 | if (remcom_in_buffer[0] == 's') | 238 | if (remcom_in_buffer[0] == 's') |
239 | if (kgdb_contthread) | 239 | atomic_set(&kgdb_cpu_doing_single_step, cpu); |
240 | atomic_set(&kgdb_cpu_doing_single_step, cpu); | ||
241 | 240 | ||
242 | return 0; | 241 | return 0; |
243 | } | 242 | } |