From: David Howells Date: Mon, 6 Jun 2011 14:47:14 +0000 (+0100) Subject: MN10300: die_if_no_fixup() shouldn't use get_user() as it doesn't call set_fs() X-Git-Tag: v3.0-rc3~48 X-Git-Url: http://git.openpandora.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=db1c9dfa649f9bd8dc11415fbfe5cfe1e24c5b33;p=pandora-kernel.git 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 Signed-off-by: Linus Torvalds --- Reading git-diff-tree failed