diff options
Diffstat (limited to 'arch/parisc')
| -rw-r--r-- | arch/parisc/kernel/ptrace.c | 13 | ||||
| -rw-r--r-- | arch/parisc/kernel/traps.c | 3 | ||||
| -rw-r--r-- | arch/parisc/kernel/unwind.c | 2 |
3 files changed, 5 insertions, 13 deletions
diff --git a/arch/parisc/kernel/ptrace.c b/arch/parisc/kernel/ptrace.c index 8a0db376e91e..26ec774c5027 100644 --- a/arch/parisc/kernel/ptrace.c +++ b/arch/parisc/kernel/ptrace.c | |||
| @@ -87,10 +87,9 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data) | |||
| 87 | switch (request) { | 87 | switch (request) { |
| 88 | case PTRACE_PEEKTEXT: /* read word at location addr. */ | 88 | case PTRACE_PEEKTEXT: /* read word at location addr. */ |
| 89 | case PTRACE_PEEKDATA: { | 89 | case PTRACE_PEEKDATA: { |
| 90 | int copied; | ||
| 91 | |||
| 92 | #ifdef CONFIG_64BIT | 90 | #ifdef CONFIG_64BIT |
| 93 | if (__is_compat_task(child)) { | 91 | if (__is_compat_task(child)) { |
| 92 | int copied; | ||
| 94 | unsigned int tmp; | 93 | unsigned int tmp; |
| 95 | 94 | ||
| 96 | addr &= 0xffffffffL; | 95 | addr &= 0xffffffffL; |
| @@ -105,15 +104,7 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data) | |||
| 105 | } | 104 | } |
| 106 | else | 105 | else |
| 107 | #endif | 106 | #endif |
| 108 | { | 107 | ret = generic_ptrace_peekdata(child, addr, data); |
| 109 | unsigned long tmp; | ||
| 110 | |||
| 111 | copied = access_process_vm(child, addr, &tmp, sizeof(tmp), 0); | ||
| 112 | ret = -EIO; | ||
| 113 | if (copied != sizeof(tmp)) | ||
| 114 | goto out_tsk; | ||
| 115 | ret = put_user(tmp,(unsigned long *) data); | ||
| 116 | } | ||
| 117 | goto out_tsk; | 108 | goto out_tsk; |
| 118 | } | 109 | } |
| 119 | 110 | ||
diff --git a/arch/parisc/kernel/traps.c b/arch/parisc/kernel/traps.c index c3ec9f1ec0f3..bbf029a184ac 100644 --- a/arch/parisc/kernel/traps.c +++ b/arch/parisc/kernel/traps.c | |||
| @@ -264,6 +264,7 @@ KERN_CRIT " || ||\n"); | |||
| 264 | 264 | ||
| 265 | show_regs(regs); | 265 | show_regs(regs); |
| 266 | dump_stack(); | 266 | dump_stack(); |
| 267 | add_taint(TAINT_DIE); | ||
| 267 | 268 | ||
| 268 | if (in_interrupt()) | 269 | if (in_interrupt()) |
| 269 | panic("Fatal exception in interrupt"); | 270 | panic("Fatal exception in interrupt"); |
| @@ -302,7 +303,7 @@ static void handle_break(struct pt_regs *regs) | |||
| 302 | if (unlikely(iir == PARISC_BUG_BREAK_INSN && !user_mode(regs))) { | 303 | if (unlikely(iir == PARISC_BUG_BREAK_INSN && !user_mode(regs))) { |
| 303 | /* check if a BUG() or WARN() trapped here. */ | 304 | /* check if a BUG() or WARN() trapped here. */ |
| 304 | enum bug_trap_type tt; | 305 | enum bug_trap_type tt; |
| 305 | tt = report_bug(regs->iaoq[0] & ~3); | 306 | tt = report_bug(regs->iaoq[0] & ~3, regs); |
| 306 | if (tt == BUG_TRAP_TYPE_WARN) { | 307 | if (tt == BUG_TRAP_TYPE_WARN) { |
| 307 | regs->iaoq[0] += 4; | 308 | regs->iaoq[0] += 4; |
| 308 | regs->iaoq[1] += 4; | 309 | regs->iaoq[1] += 4; |
diff --git a/arch/parisc/kernel/unwind.c b/arch/parisc/kernel/unwind.c index 322167737de7..cf780cb3b916 100644 --- a/arch/parisc/kernel/unwind.c +++ b/arch/parisc/kernel/unwind.c | |||
| @@ -242,7 +242,7 @@ static void unwind_frame_regs(struct unwind_frame_info *info) | |||
| 242 | #ifdef CONFIG_KALLSYMS | 242 | #ifdef CONFIG_KALLSYMS |
| 243 | /* Handle some frequent special cases.... */ | 243 | /* Handle some frequent special cases.... */ |
| 244 | { | 244 | { |
| 245 | char symname[KSYM_NAME_LEN+1]; | 245 | char symname[KSYM_NAME_LEN]; |
| 246 | char *modname; | 246 | char *modname; |
| 247 | 247 | ||
| 248 | kallsyms_lookup(info->ip, NULL, NULL, &modname, | 248 | kallsyms_lookup(info->ip, NULL, NULL, &modname, |
