diff options
author | David Howells <dhowells@redhat.com> | 2011-06-06 16:47:14 +0200 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-06-08 04:03:52 +0200 |
commit | db1c9dfa649f9bd8dc11415fbfe5cfe1e24c5b33 (patch) | |
tree | e032d804997b7494ff994b496aa5b3575e3a7495 /sound/synth | |
parent | MN10300: Fix one of the kernel debugger cacheflush variants (diff) | |
download | linux-db1c9dfa649f9bd8dc11415fbfe5cfe1e24c5b33.tar.xz linux-db1c9dfa649f9bd8dc11415fbfe5cfe1e24c5b33.zip |
MN10300: die_if_no_fixup() shouldn't use get_user() as it doesn't call set_fs()
die_if_no_fixup() shouldn't use get_user() as it doesn't call set_fs() to
indicate that it wants to probe a kernel address. Instead it should use
probe_kernel_read().
This fixes the problem of gdb seeing SIGILL rather than SIGTRAP when hitting
the KGDB special breakpoint upon SysRq+g being seen. The problem was that
die_if_no_fixup() was failing to read the opcode of the instruction that caused
the exception, and thus not fixing up the exception.
This caused gdb to get a S04 response to the $? request in its remote protocol
rather than S05 - which would then cause it to continue with $C04 rather than
$c in an attempt to pass the signal onto the inferior process. The kernel,
however, does not support $Cnn, and so objects by returning an E22 response,
indicating an error. gdb does not expect this and prints:
warning: Remote failure reply: E22
and then returns to the gdb command prompt unable to continue.
Signed-off-by: David Howells <dhowells@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'sound/synth')
0 files changed, 0 insertions, 0 deletions