aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86
diff options
context:
space:
mode:
authorMarkus Metzger <markus.t.metzger@intel.com>2009-04-03 10:43:48 -0400
committerIngo Molnar <mingo@elte.hu>2009-04-07 07:36:31 -0400
commit0f4814065ff8c24ca8bfd75c9b73502be152c287 (patch)
treef3816ecb64ee198235d2e9c1649de3241c3f2ac2 /arch/x86
parentee811517a5604aa63fae803b7c044712699e1303 (diff)
x86, ptrace: add bts context unconditionally
Add the ptrace bts context field to task_struct unconditionally. Initialize the field directly in copy_process(). Remove all the unneeded functionality used to initialize that field. Signed-off-by: Markus Metzger <markus.t.metzger@intel.com> Cc: roland@redhat.com Cc: eranian@googlemail.com Cc: oleg@redhat.com Cc: juan.villacis@intel.com Cc: ak@linux.jf.intel.com LKML-Reference: <20090403144603.292754000@intel.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86')
-rw-r--r--arch/x86/include/asm/ptrace.h9
-rw-r--r--arch/x86/kernel/ptrace.c20
2 files changed, 5 insertions, 24 deletions
diff --git a/arch/x86/include/asm/ptrace.h b/arch/x86/include/asm/ptrace.h
index e304b66abeea..5cdd19f20b5b 100644
--- a/arch/x86/include/asm/ptrace.h
+++ b/arch/x86/include/asm/ptrace.h
@@ -235,12 +235,11 @@ extern int do_get_thread_area(struct task_struct *p, int idx,
235extern int do_set_thread_area(struct task_struct *p, int idx, 235extern int do_set_thread_area(struct task_struct *p, int idx,
236 struct user_desc __user *info, int can_allocate); 236 struct user_desc __user *info, int can_allocate);
237 237
238extern void x86_ptrace_untrace(struct task_struct *); 238#ifdef CONFIG_X86_PTRACE_BTS
239extern void x86_ptrace_fork(struct task_struct *child, 239extern void ptrace_bts_untrace(struct task_struct *tsk);
240 unsigned long clone_flags);
241 240
242#define arch_ptrace_untrace(tsk) x86_ptrace_untrace(tsk) 241#define arch_ptrace_untrace(tsk) ptrace_bts_untrace(tsk)
243#define arch_ptrace_fork(child, flags) x86_ptrace_fork(child, flags) 242#endif /* CONFIG_X86_PTRACE_BTS */
244 243
245#endif /* __KERNEL__ */ 244#endif /* __KERNEL__ */
246 245
diff --git a/arch/x86/kernel/ptrace.c b/arch/x86/kernel/ptrace.c
index adbb24322d8f..b32a8ee53381 100644
--- a/arch/x86/kernel/ptrace.c
+++ b/arch/x86/kernel/ptrace.c
@@ -887,37 +887,19 @@ static int ptrace_bts_size(struct task_struct *child)
887 return (trace->ds.top - trace->ds.begin) / trace->ds.size; 887 return (trace->ds.top - trace->ds.begin) / trace->ds.size;
888} 888}
889 889
890static inline void ptrace_bts_fork(struct task_struct *tsk)
891{
892 tsk->bts = NULL;
893}
894
895/* 890/*
896 * Called from __ptrace_unlink() after the child has been moved back 891 * Called from __ptrace_unlink() after the child has been moved back
897 * to its original parent. 892 * to its original parent.
898 */ 893 */
899static inline void ptrace_bts_untrace(struct task_struct *child) 894void ptrace_bts_untrace(struct task_struct *child)
900{ 895{
901 if (unlikely(child->bts)) { 896 if (unlikely(child->bts)) {
902 free_bts_context(child->bts); 897 free_bts_context(child->bts);
903 child->bts = NULL; 898 child->bts = NULL;
904 } 899 }
905} 900}
906#else
907static inline void ptrace_bts_fork(struct task_struct *tsk) {}
908static inline void ptrace_bts_untrace(struct task_struct *child) {}
909#endif /* CONFIG_X86_PTRACE_BTS */ 901#endif /* CONFIG_X86_PTRACE_BTS */
910 902
911void x86_ptrace_fork(struct task_struct *child, unsigned long clone_flags)
912{
913 ptrace_bts_fork(child);
914}
915
916void x86_ptrace_untrace(struct task_struct *child)
917{
918 ptrace_bts_untrace(child);
919}
920
921/* 903/*
922 * Called by kernel/ptrace.c when detaching.. 904 * Called by kernel/ptrace.c when detaching..
923 * 905 *