diff options
Diffstat (limited to 'kernel/fork.c')
-rw-r--r-- | kernel/fork.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/kernel/fork.c b/kernel/fork.c index 5447dc7defa9..7d164e25b0f0 100644 --- a/kernel/fork.c +++ b/kernel/fork.c | |||
@@ -174,8 +174,10 @@ static inline void free_signal_struct(struct signal_struct *sig) | |||
174 | 174 | ||
175 | static inline void put_signal_struct(struct signal_struct *sig) | 175 | static inline void put_signal_struct(struct signal_struct *sig) |
176 | { | 176 | { |
177 | if (atomic_dec_and_test(&sig->sigcnt)) | 177 | if (atomic_dec_and_test(&sig->sigcnt)) { |
178 | sched_autogroup_exit(sig); | ||
178 | free_signal_struct(sig); | 179 | free_signal_struct(sig); |
180 | } | ||
179 | } | 181 | } |
180 | 182 | ||
181 | void __put_task_struct(struct task_struct *tsk) | 183 | void __put_task_struct(struct task_struct *tsk) |
@@ -905,6 +907,7 @@ static int copy_signal(unsigned long clone_flags, struct task_struct *tsk) | |||
905 | posix_cpu_timers_init_group(sig); | 907 | posix_cpu_timers_init_group(sig); |
906 | 908 | ||
907 | tty_audit_fork(sig); | 909 | tty_audit_fork(sig); |
910 | sched_autogroup_fork(sig); | ||
908 | 911 | ||
909 | sig->oom_adj = current->signal->oom_adj; | 912 | sig->oom_adj = current->signal->oom_adj; |
910 | sig->oom_score_adj = current->signal->oom_score_adj; | 913 | sig->oom_score_adj = current->signal->oom_score_adj; |
@@ -1315,7 +1318,7 @@ bad_fork_cleanup_mm: | |||
1315 | } | 1318 | } |
1316 | bad_fork_cleanup_signal: | 1319 | bad_fork_cleanup_signal: |
1317 | if (!(clone_flags & CLONE_THREAD)) | 1320 | if (!(clone_flags & CLONE_THREAD)) |
1318 | free_signal_struct(p->signal); | 1321 | put_signal_struct(p->signal); |
1319 | bad_fork_cleanup_sighand: | 1322 | bad_fork_cleanup_sighand: |
1320 | __cleanup_sighand(p->sighand); | 1323 | __cleanup_sighand(p->sighand); |
1321 | bad_fork_cleanup_fs: | 1324 | bad_fork_cleanup_fs: |