summaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
Diffstat (limited to 'kernel')
-rw-r--r--kernel/fork.c22
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;
}