|
@@ -169,15 +169,14 @@ EXPORT_SYMBOL(free_task);
|
|
|
static inline void free_signal_struct(struct signal_struct *sig)
|
|
|
{
|
|
|
taskstats_tgid_free(sig);
|
|
|
+ sched_autogroup_exit(sig);
|
|
|
kmem_cache_free(signal_cachep, sig);
|
|
|
}
|
|
|
|
|
|
static inline void put_signal_struct(struct signal_struct *sig)
|
|
|
{
|
|
|
- if (atomic_dec_and_test(&sig->sigcnt)) {
|
|
|
- sched_autogroup_exit(sig);
|
|
|
+ if (atomic_dec_and_test(&sig->sigcnt))
|
|
|
free_signal_struct(sig);
|
|
|
- }
|
|
|
}
|
|
|
|
|
|
void __put_task_struct(struct task_struct *tsk)
|
|
@@ -1318,7 +1317,7 @@ bad_fork_cleanup_mm:
|
|
|
}
|
|
|
bad_fork_cleanup_signal:
|
|
|
if (!(clone_flags & CLONE_THREAD))
|
|
|
- put_signal_struct(p->signal);
|
|
|
+ free_signal_struct(p->signal);
|
|
|
bad_fork_cleanup_sighand:
|
|
|
__cleanup_sighand(p->sighand);
|
|
|
bad_fork_cleanup_fs:
|