diff options
author | Ingo Molnar <mingo@elte.hu> | 2009-11-21 08:07:23 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-11-21 08:07:23 -0500 |
commit | 96200591a34f8ecb98481c626125df43a2463b55 (patch) | |
tree | 314c376b01f254d04f9aaf449b1f9147ad177fa6 /arch/x86/kernel/process_64.c | |
parent | 7031281e02bf951a2259849217193fb9d75a9762 (diff) | |
parent | 68efa37df779b3e04280598e8b5b3a1919b65fee (diff) |
Merge branch 'tracing/hw-breakpoints' into perf/core
Conflicts:
arch/x86/kernel/kprobes.c
kernel/trace/Makefile
Merge reason: hw-breakpoints perf integration is looking
good in testing and in reviews, plus conflicts
are mounting up - so merge & resolve.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86/kernel/process_64.c')
-rw-r--r-- | arch/x86/kernel/process_64.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/arch/x86/kernel/process_64.c b/arch/x86/kernel/process_64.c index eb62cbcaa490..70cf15873f3d 100644 --- a/arch/x86/kernel/process_64.c +++ b/arch/x86/kernel/process_64.c | |||
@@ -52,6 +52,7 @@ | |||
52 | #include <asm/idle.h> | 52 | #include <asm/idle.h> |
53 | #include <asm/syscalls.h> | 53 | #include <asm/syscalls.h> |
54 | #include <asm/ds.h> | 54 | #include <asm/ds.h> |
55 | #include <asm/debugreg.h> | ||
55 | 56 | ||
56 | asmlinkage extern void ret_from_fork(void); | 57 | asmlinkage extern void ret_from_fork(void); |
57 | 58 | ||
@@ -297,12 +298,16 @@ int copy_thread(unsigned long clone_flags, unsigned long sp, | |||
297 | 298 | ||
298 | p->thread.fs = me->thread.fs; | 299 | p->thread.fs = me->thread.fs; |
299 | p->thread.gs = me->thread.gs; | 300 | p->thread.gs = me->thread.gs; |
301 | p->thread.io_bitmap_ptr = NULL; | ||
300 | 302 | ||
301 | savesegment(gs, p->thread.gsindex); | 303 | savesegment(gs, p->thread.gsindex); |
302 | savesegment(fs, p->thread.fsindex); | 304 | savesegment(fs, p->thread.fsindex); |
303 | savesegment(es, p->thread.es); | 305 | savesegment(es, p->thread.es); |
304 | savesegment(ds, p->thread.ds); | 306 | savesegment(ds, p->thread.ds); |
305 | 307 | ||
308 | err = -ENOMEM; | ||
309 | memset(p->thread.ptrace_bps, 0, sizeof(p->thread.ptrace_bps)); | ||
310 | |||
306 | if (unlikely(test_tsk_thread_flag(me, TIF_IO_BITMAP))) { | 311 | if (unlikely(test_tsk_thread_flag(me, TIF_IO_BITMAP))) { |
307 | p->thread.io_bitmap_ptr = kmalloc(IO_BITMAP_BYTES, GFP_KERNEL); | 312 | p->thread.io_bitmap_ptr = kmalloc(IO_BITMAP_BYTES, GFP_KERNEL); |
308 | if (!p->thread.io_bitmap_ptr) { | 313 | if (!p->thread.io_bitmap_ptr) { |
@@ -341,6 +346,7 @@ out: | |||
341 | kfree(p->thread.io_bitmap_ptr); | 346 | kfree(p->thread.io_bitmap_ptr); |
342 | p->thread.io_bitmap_max = 0; | 347 | p->thread.io_bitmap_max = 0; |
343 | } | 348 | } |
349 | |||
344 | return err; | 350 | return err; |
345 | } | 351 | } |
346 | 352 | ||
@@ -495,6 +501,7 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p) | |||
495 | */ | 501 | */ |
496 | if (preload_fpu) | 502 | if (preload_fpu) |
497 | __math_state_restore(); | 503 | __math_state_restore(); |
504 | |||
498 | return prev_p; | 505 | return prev_p; |
499 | } | 506 | } |
500 | 507 | ||