[prev in list] [next in list] [prev in thread] [next in thread]
List: git-commits-head
Subject: Avoid memory leak on fork() failure path.
From: Linux Kernel Mailing List <linux-kernel () vger ! kernel ! org>
Date: 2003-02-28 7:02:33
[Download RAW message or body]
ChangeSet 1.1129, 2003/02/27 23:02:33-08:00, torvalds@home.transmeta.com
Avoid memory leak on fork() failure path.
Noticed by Martin Schwidefsky <schwidefsky@de.ibm.com>
# This patch includes the following deltas:
# ChangeSet 1.1128 -> 1.1129
# kernel/fork.c 1.110 -> 1.111
#
fork.c | 22 +++++++++++++---------
1 files changed, 13 insertions(+), 9 deletions(-)
diff -Nru a/kernel/fork.c b/kernel/fork.c
--- a/kernel/fork.c Fri Feb 28 00:13:14 2003
+++ b/kernel/fork.c Fri Feb 28 00:13:14 2003
@@ -72,15 +72,8 @@
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)
+{
+ 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 @@
atomic_dec(&p->user->processes);
free_uid(p->user);
bad_fork_free:
- put_task_struct(p);
+ free_task_struct(p);
goto fork_out;
}
-
To unsubscribe from this list: send the line "unsubscribe bk-commits-head" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic