2006-08-27 15:00:05

by Oleg Nesterov

[permalink] [raw]
Subject: [PATCH] oom_kill_task: cleanup ->mm checks

- It is not possible to have task->mm == &init_mm.

- task_lock() buys nothing for 'if (!p->mm)' check.

Signed-off-by: Oleg Nesterov <[email protected]>

--- 2.6.18-rc4/mm/oom_kill.c~ 2006-08-27 22:28:42.000000000 +0400
+++ 2.6.18-rc4/mm/oom_kill.c 2006-08-27 23:09:09.000000000 +0400
@@ -262,14 +262,11 @@ static void __oom_kill_task(struct task_
return;
}

- task_lock(p);
- if (!p->mm || p->mm == &init_mm) {
+ if (!p->mm) {
WARN_ON(1);
printk(KERN_WARNING "tried to kill an mm-less task!\n");
- task_unlock(p);
return;
}
- task_unlock(p);

if (message) {
printk(KERN_ERR "%s: Killed process %d (%s).\n",
@@ -303,7 +300,7 @@ static int oom_kill_task(struct task_str
* However, this is of no concern to us.
*/

- if (mm == NULL || mm == &init_mm)
+ if (mm == NULL)
return 1;

__oom_kill_task(p, message);