diff options
Diffstat (limited to 'kernel/exit.c')
| -rw-r--r-- | kernel/exit.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/kernel/exit.c b/kernel/exit.c index 89c74861a3da..f9a45ebcc7b1 100644 --- a/kernel/exit.c +++ b/kernel/exit.c | |||
| @@ -994,6 +994,15 @@ NORET_TYPE void do_exit(long code) | |||
| 994 | exit_fs(tsk); | 994 | exit_fs(tsk); |
| 995 | check_stack_usage(); | 995 | check_stack_usage(); |
| 996 | exit_thread(); | 996 | exit_thread(); |
| 997 | |||
| 998 | /* | ||
| 999 | * Flush inherited counters to the parent - before the parent | ||
| 1000 | * gets woken up by child-exit notifications. | ||
| 1001 | * | ||
| 1002 | * because of cgroup mode, must be called before cgroup_exit() | ||
| 1003 | */ | ||
| 1004 | perf_event_exit_task(tsk); | ||
| 1005 | |||
| 997 | cgroup_exit(tsk, 1); | 1006 | cgroup_exit(tsk, 1); |
| 998 | 1007 | ||
| 999 | if (group_dead) | 1008 | if (group_dead) |
| @@ -1007,11 +1016,6 @@ NORET_TYPE void do_exit(long code) | |||
| 1007 | * FIXME: do that only when needed, using sched_exit tracepoint | 1016 | * FIXME: do that only when needed, using sched_exit tracepoint |
| 1008 | */ | 1017 | */ |
| 1009 | flush_ptrace_hw_breakpoint(tsk); | 1018 | flush_ptrace_hw_breakpoint(tsk); |
| 1010 | /* | ||
| 1011 | * Flush inherited counters to the parent - before the parent | ||
| 1012 | * gets woken up by child-exit notifications. | ||
| 1013 | */ | ||
| 1014 | perf_event_exit_task(tsk); | ||
| 1015 | 1019 | ||
| 1016 | exit_notify(tsk, group_dead); | 1020 | exit_notify(tsk, group_dead); |
| 1017 | #ifdef CONFIG_NUMA | 1021 | #ifdef CONFIG_NUMA |
