mirror of
https://github.com/torvalds/linux.git
synced 2024-11-28 07:01:32 +00:00
[PATCH] oom: handle oom_disable exiting
Having the oomkilladj == OOM_DISABLE check before the releasing check means that oomkilladj == OOM_DISABLE tasks exiting will not stop the OOM killer. Moving the test down will give the desired behaviour. Also: it will allow them to "OOM-kill" themselves if they are exiting. As per the previous patch, this is required to prevent OOM killer deadlocks (and they don't actually get killed, because they're already exiting -- they're simply allowed access to memory reserves). Signed-off-by: Nick Piggin <npiggin@suse.de> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
50ec3bbffb
commit
4a3ede107e
@ -204,8 +204,6 @@ static struct task_struct *select_bad_process(unsigned long *ppoints)
|
||||
/* skip the init task with pid == 1 */
|
||||
if (p->pid == 1)
|
||||
continue;
|
||||
if (p->oomkilladj == OOM_DISABLE)
|
||||
continue;
|
||||
|
||||
/*
|
||||
* This is in the process of releasing memory so wait for it
|
||||
@ -230,6 +228,8 @@ static struct task_struct *select_bad_process(unsigned long *ppoints)
|
||||
}
|
||||
return ERR_PTR(-1UL);
|
||||
}
|
||||
if (p->oomkilladj == OOM_DISABLE)
|
||||
continue;
|
||||
if (p->flags & PF_SWAPOFF)
|
||||
return p;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user