summaryrefslogtreecommitdiff
path: root/mm/oom_kill.c
diff options
context:
space:
mode:
authorDavid Rientjes <rientjes@google.com>2010-08-09 17:18:49 -0700
committerLinus Torvalds <torvalds@linux-foundation.org>2010-08-09 20:44:56 -0700
commit4358997ae38a1901498d128d6508119d9f318b36 (patch)
tree0c5a47808790e80a754b44aebe82c5c683811788 /mm/oom_kill.c
parent7b98c2e402eaa1f2beec18b1bde17f74948a19db (diff)
downloadlinux-3.10-4358997ae38a1901498d128d6508119d9f318b36.tar.gz
linux-3.10-4358997ae38a1901498d128d6508119d9f318b36.tar.bz2
linux-3.10-4358997ae38a1901498d128d6508119d9f318b36.zip
oom: avoid sending exiting tasks a SIGKILL
It's unnecessary to SIGKILL a task that is already PF_EXITING and can actually cause a NULL pointer dereference of the sighand if it has already been detached. Instead, simply set TIF_MEMDIE so it has access to memory reserves and can quickly exit as the comment implies. Reviewed-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> Signed-off-by: David Rientjes <rientjes@google.com> Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm/oom_kill.c')
-rw-r--r--mm/oom_kill.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/mm/oom_kill.c b/mm/oom_kill.c
index 64cdacad83d..0c7c18f7842 100644
--- a/mm/oom_kill.c
+++ b/mm/oom_kill.c
@@ -453,7 +453,7 @@ static int oom_kill_process(struct task_struct *p, gfp_t gfp_mask, int order,
* its children or threads, just set TIF_MEMDIE so it can die quickly
*/
if (p->flags & PF_EXITING) {
- __oom_kill_task(p, 0);
+ set_tsk_thread_flag(p, TIF_MEMDIE);
return 0;
}