diff options
author | Markus Metzger <markus.t.metzger@intel.com> | 2008-12-19 09:10:24 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-12-20 03:15:46 -0500 |
commit | bf53de907dfdaac178c92d774aae7370d7b97d20 (patch) | |
tree | 738a07a8b4b22f7bb8ec2029c9ea9c635db6c62a /kernel/fork.c | |
parent | 30cd324e9787ccc9a5ede59742d5409857550692 (diff) |
x86, bts: add fork and exit handling
Impact: introduce new ptrace facility
Add arch_ptrace_untrace() function that is called when the tracer
detaches (either voluntarily or when the tracing task dies);
ptrace_disable() is only called on a voluntary detach.
Add ptrace_fork() and arch_ptrace_fork(). They are called when a
traced task is forked.
Clear DS and BTS related fields on fork.
Release DS resources and reclaim memory in ptrace_untrace(). This
releases resources already when the tracing task dies. We used to do
that when the traced task dies.
Signed-off-by: Markus Metzger <markus.t.metzger@intel.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'kernel/fork.c')
-rw-r--r-- | kernel/fork.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/kernel/fork.c b/kernel/fork.c index 7b93da72d4a2..65ce60adc8e8 100644 --- a/kernel/fork.c +++ b/kernel/fork.c | |||
@@ -1096,6 +1096,8 @@ static struct task_struct *copy_process(unsigned long clone_flags, | |||
1096 | #ifdef CONFIG_DEBUG_MUTEXES | 1096 | #ifdef CONFIG_DEBUG_MUTEXES |
1097 | p->blocked_on = NULL; /* not blocked yet */ | 1097 | p->blocked_on = NULL; /* not blocked yet */ |
1098 | #endif | 1098 | #endif |
1099 | if (unlikely(ptrace_reparented(current))) | ||
1100 | ptrace_fork(p, clone_flags); | ||
1099 | 1101 | ||
1100 | /* Perform scheduler related setup. Assign this task to a CPU. */ | 1102 | /* Perform scheduler related setup. Assign this task to a CPU. */ |
1101 | sched_fork(p, clone_flags); | 1103 | sched_fork(p, clone_flags); |