mirror of
https://github.com/torvalds/linux.git
synced 2024-11-24 21:21:41 +00:00
oom: skip zombies when iterating tasklist
We shouldn't defer oom killing if a thread has already detached its ->mm and still has TIF_MEMDIE set. Memory needs to be freed, so find kill other threads that pin the same ->mm or find another task to kill. Signed-off-by: Andrey Vagin <avagin@openvz.org> Signed-off-by: David Rientjes <rientjes@google.com> Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com> Cc: <stable@kernel.org> [2.6.38.x] Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
3a5dda7a17
commit
30e2b41f20
@ -299,6 +299,8 @@ static struct task_struct *select_bad_process(unsigned int *ppoints,
|
||||
do_each_thread(g, p) {
|
||||
unsigned int points;
|
||||
|
||||
if (!p->mm)
|
||||
continue;
|
||||
if (oom_unkillable_task(p, mem, nodemask))
|
||||
continue;
|
||||
|
||||
@ -324,7 +326,7 @@ static struct task_struct *select_bad_process(unsigned int *ppoints,
|
||||
* the process of exiting and releasing its resources.
|
||||
* Otherwise we could get an easy OOM deadlock.
|
||||
*/
|
||||
if ((p->flags & PF_EXITING) && p->mm) {
|
||||
if (p->flags & PF_EXITING) {
|
||||
if (p != current)
|
||||
return ERR_PTR(-1UL);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user