diff options
Diffstat (limited to 'arch/s390')
-rw-r--r-- | arch/s390/kernel/ptrace.c | 11 | ||||
-rw-r--r-- | arch/s390/kernel/traps.c | 1 |
2 files changed, 3 insertions, 9 deletions
diff --git a/arch/s390/kernel/ptrace.c b/arch/s390/kernel/ptrace.c index 2a8f0872ea8b..f4503ca27630 100644 --- a/arch/s390/kernel/ptrace.c +++ b/arch/s390/kernel/ptrace.c | |||
@@ -294,7 +294,6 @@ poke_user(struct task_struct *child, addr_t addr, addr_t data) | |||
294 | static int | 294 | static int |
295 | do_ptrace_normal(struct task_struct *child, long request, long addr, long data) | 295 | do_ptrace_normal(struct task_struct *child, long request, long addr, long data) |
296 | { | 296 | { |
297 | unsigned long tmp; | ||
298 | ptrace_area parea; | 297 | ptrace_area parea; |
299 | int copied, ret; | 298 | int copied, ret; |
300 | 299 | ||
@@ -304,10 +303,7 @@ do_ptrace_normal(struct task_struct *child, long request, long addr, long data) | |||
304 | /* Remove high order bit from address (only for 31 bit). */ | 303 | /* Remove high order bit from address (only for 31 bit). */ |
305 | addr &= PSW_ADDR_INSN; | 304 | addr &= PSW_ADDR_INSN; |
306 | /* read word at location addr. */ | 305 | /* read word at location addr. */ |
307 | copied = access_process_vm(child, addr, &tmp, sizeof(tmp), 0); | 306 | return generic_ptrace_peekdata(child, addr, data); |
308 | if (copied != sizeof(tmp)) | ||
309 | return -EIO; | ||
310 | return put_user(tmp, (unsigned long __force __user *) data); | ||
311 | 307 | ||
312 | case PTRACE_PEEKUSR: | 308 | case PTRACE_PEEKUSR: |
313 | /* read the word at location addr in the USER area. */ | 309 | /* read the word at location addr in the USER area. */ |
@@ -318,10 +314,7 @@ do_ptrace_normal(struct task_struct *child, long request, long addr, long data) | |||
318 | /* Remove high order bit from address (only for 31 bit). */ | 314 | /* Remove high order bit from address (only for 31 bit). */ |
319 | addr &= PSW_ADDR_INSN; | 315 | addr &= PSW_ADDR_INSN; |
320 | /* write the word at location addr. */ | 316 | /* write the word at location addr. */ |
321 | copied = access_process_vm(child, addr, &data, sizeof(data),1); | 317 | return generic_ptrace_pokedata(child, addr, data); |
322 | if (copied != sizeof(data)) | ||
323 | return -EIO; | ||
324 | return 0; | ||
325 | 318 | ||
326 | case PTRACE_POKEUSR: | 319 | case PTRACE_POKEUSR: |
327 | /* write the word at location addr in the USER area */ | 320 | /* write the word at location addr in the USER area */ |
diff --git a/arch/s390/kernel/traps.c b/arch/s390/kernel/traps.c index 81e03b9c3841..8ec9def83ccb 100644 --- a/arch/s390/kernel/traps.c +++ b/arch/s390/kernel/traps.c | |||
@@ -262,6 +262,7 @@ void die(const char * str, struct pt_regs * regs, long err) | |||
262 | print_modules(); | 262 | print_modules(); |
263 | show_regs(regs); | 263 | show_regs(regs); |
264 | bust_spinlocks(0); | 264 | bust_spinlocks(0); |
265 | add_taint(TAINT_DIE); | ||
265 | spin_unlock_irq(&die_lock); | 266 | spin_unlock_irq(&die_lock); |
266 | if (in_interrupt()) | 267 | if (in_interrupt()) |
267 | panic("Fatal exception in interrupt"); | 268 | panic("Fatal exception in interrupt"); |