diff options
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/fork.c | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/kernel/fork.c b/kernel/fork.c index ce4d721d0ced..6b423ee75c9f 100644 --- a/kernel/fork.c +++ b/kernel/fork.c @@ -72,15 +72,8 @@ int nr_processes(void) return total; } -void __put_task_struct(struct task_struct *tsk) +static void free_task_struct(struct task_struct *tsk) { - WARN_ON(!(tsk->state & (TASK_DEAD | TASK_ZOMBIE))); - WARN_ON(atomic_read(&tsk->usage)); - WARN_ON(tsk == current); - - security_task_free(tsk); - free_uid(tsk->user); - /* * The task cache is effectively disabled right now. * Do we want it? The slab cache already has per-cpu @@ -103,6 +96,17 @@ void __put_task_struct(struct task_struct *tsk) } } +void __put_task_struct(struct task_struct *tsk) +{ + WARN_ON(!(tsk->state & (TASK_DEAD | TASK_ZOMBIE))); + WARN_ON(atomic_read(&tsk->usage)); + WARN_ON(tsk == current); + + security_task_free(tsk); + free_uid(tsk->user); + free_task_struct(tsk); +} + void add_wait_queue(wait_queue_head_t *q, wait_queue_t * wait) { unsigned long flags; @@ -1034,7 +1038,7 @@ bad_fork_cleanup_count: atomic_dec(&p->user->processes); free_uid(p->user); bad_fork_free: - put_task_struct(p); + free_task_struct(p); goto fork_out; } |
