aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--kernel/fork.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/kernel/fork.c b/kernel/fork.c
index 7d164e25b0f0..dc1a8bbcea7b 100644
--- a/kernel/fork.c
+++ b/kernel/fork.c
@@ -169,15 +169,14 @@ EXPORT_SYMBOL(free_task);
169static inline void free_signal_struct(struct signal_struct *sig) 169static inline void free_signal_struct(struct signal_struct *sig)
170{ 170{
171 taskstats_tgid_free(sig); 171 taskstats_tgid_free(sig);
172 sched_autogroup_exit(sig);
172 kmem_cache_free(signal_cachep, sig); 173 kmem_cache_free(signal_cachep, sig);
173} 174}
174 175
175static inline void put_signal_struct(struct signal_struct *sig) 176static inline void put_signal_struct(struct signal_struct *sig)
176{ 177{
177 if (atomic_dec_and_test(&sig->sigcnt)) { 178 if (atomic_dec_and_test(&sig->sigcnt))
178 sched_autogroup_exit(sig);
179 free_signal_struct(sig); 179 free_signal_struct(sig);
180 }
181} 180}
182 181
183void __put_task_struct(struct task_struct *tsk) 182void __put_task_struct(struct task_struct *tsk)
@@ -1318,7 +1317,7 @@ bad_fork_cleanup_mm:
1318 } 1317 }
1319bad_fork_cleanup_signal: 1318bad_fork_cleanup_signal:
1320 if (!(clone_flags & CLONE_THREAD)) 1319 if (!(clone_flags & CLONE_THREAD))
1321 put_signal_struct(p->signal); 1320 free_signal_struct(p->signal);
1322bad_fork_cleanup_sighand: 1321bad_fork_cleanup_sighand:
1323 __cleanup_sighand(p->sighand); 1322 __cleanup_sighand(p->sighand);
1324bad_fork_cleanup_fs: 1323bad_fork_cleanup_fs: