mirror of
https://github.com/followmsi/android_kernel_google_msm.git
synced 2024-11-06 23:17:41 +00:00
db1c9dfa64
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> |
||
---|---|---|
.. | ||
asm-offsets.c | ||
cevt-mn10300.c | ||
csrc-mn10300.c | ||
entry.S | ||
fpu-low.S | ||
fpu-nofpu-low.S | ||
fpu-nofpu.c | ||
fpu.c | ||
gdb-io-serial-low.S | ||
gdb-io-serial.c | ||
gdb-io-ttysm-low.S | ||
gdb-io-ttysm.c | ||
gdb-low.S | ||
gdb-stub.c | ||
head.S | ||
init_task.c | ||
internal.h | ||
io.c | ||
irq.c | ||
kernel_execve.S | ||
kgdb.c | ||
kprobes.c | ||
kthread.S | ||
Makefile | ||
mn10300-debug.c | ||
mn10300-serial-low.S | ||
mn10300-serial.c | ||
mn10300-serial.h | ||
mn10300-watchdog-low.S | ||
mn10300-watchdog.c | ||
mn10300_ksyms.c | ||
module.c | ||
process.c | ||
profile-low.S | ||
profile.c | ||
ptrace.c | ||
rtc.c | ||
setup.c | ||
sigframe.h | ||
signal.c | ||
smp-low.S | ||
smp.c | ||
switch_to.S | ||
sys_mn10300.c | ||
time.c | ||
traps.c | ||
vmlinux.lds.S |