diff options
Diffstat (limited to 'arch/x86/kernel/process_32.c')
| -rw-r--r-- | arch/x86/kernel/process_32.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/arch/x86/kernel/process_32.c b/arch/x86/kernel/process_32.c index 4cf79567cdab..075580b35682 100644 --- a/arch/x86/kernel/process_32.c +++ b/arch/x86/kernel/process_32.c | |||
| @@ -58,6 +58,7 @@ | |||
| 58 | #include <asm/idle.h> | 58 | #include <asm/idle.h> |
| 59 | #include <asm/syscalls.h> | 59 | #include <asm/syscalls.h> |
| 60 | #include <asm/ds.h> | 60 | #include <asm/ds.h> |
| 61 | #include <asm/debugreg.h> | ||
| 61 | 62 | ||
| 62 | asmlinkage void ret_from_fork(void) __asm__("ret_from_fork"); | 63 | asmlinkage void ret_from_fork(void) __asm__("ret_from_fork"); |
| 63 | 64 | ||
| @@ -134,7 +135,7 @@ void __show_regs(struct pt_regs *regs, int all) | |||
| 134 | ss = regs->ss & 0xffff; | 135 | ss = regs->ss & 0xffff; |
| 135 | gs = get_user_gs(regs); | 136 | gs = get_user_gs(regs); |
| 136 | } else { | 137 | } else { |
| 137 | sp = (unsigned long) (®s->sp); | 138 | sp = kernel_stack_pointer(regs); |
| 138 | savesegment(ss, ss); | 139 | savesegment(ss, ss); |
| 139 | savesegment(gs, gs); | 140 | savesegment(gs, gs); |
| 140 | } | 141 | } |
| @@ -187,7 +188,7 @@ void __show_regs(struct pt_regs *regs, int all) | |||
| 187 | 188 | ||
| 188 | void show_regs(struct pt_regs *regs) | 189 | void show_regs(struct pt_regs *regs) |
| 189 | { | 190 | { |
| 190 | __show_regs(regs, 1); | 191 | show_registers(regs); |
| 191 | show_trace(NULL, regs, ®s->sp, regs->bp); | 192 | show_trace(NULL, regs, ®s->sp, regs->bp); |
| 192 | } | 193 | } |
| 193 | 194 | ||
| @@ -259,7 +260,12 @@ int copy_thread(unsigned long clone_flags, unsigned long sp, | |||
| 259 | 260 | ||
| 260 | task_user_gs(p) = get_user_gs(regs); | 261 | task_user_gs(p) = get_user_gs(regs); |
| 261 | 262 | ||
| 263 | p->thread.io_bitmap_ptr = NULL; | ||
| 262 | tsk = current; | 264 | tsk = current; |
| 265 | err = -ENOMEM; | ||
| 266 | |||
| 267 | memset(p->thread.ptrace_bps, 0, sizeof(p->thread.ptrace_bps)); | ||
| 268 | |||
| 263 | if (unlikely(test_tsk_thread_flag(tsk, TIF_IO_BITMAP))) { | 269 | if (unlikely(test_tsk_thread_flag(tsk, TIF_IO_BITMAP))) { |
| 264 | p->thread.io_bitmap_ptr = kmemdup(tsk->thread.io_bitmap_ptr, | 270 | p->thread.io_bitmap_ptr = kmemdup(tsk->thread.io_bitmap_ptr, |
| 265 | IO_BITMAP_BYTES, GFP_KERNEL); | 271 | IO_BITMAP_BYTES, GFP_KERNEL); |
