summaryrefslogtreecommitdiffstats
path: root/lib/locking-selftest-wlock.h
diff options
context:
space:
mode:
authorDavid Howells <dhowells@redhat.com>2011-06-06 15:47:14 +0100
committerLinus Torvalds <torvalds@linux-foundation.org>2011-06-07 19:03:52 -0700
commitdb1c9dfa649f9bd8dc11415fbfe5cfe1e24c5b33 (patch)
treee032d804997b7494ff994b496aa5b3575e3a7495 /lib/locking-selftest-wlock.h
parent2e65d1f6eecc176ba1341541b5f41edd7eb4346a (diff)
downloadlinux-db1c9dfa649f9bd8dc11415fbfe5cfe1e24c5b33.tar.gz
linux-db1c9dfa649f9bd8dc11415fbfe5cfe1e24c5b33.tar.bz2
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 'lib/locking-selftest-wlock.h')
0 files changed, 0 insertions, 0 deletions