[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <alpine.DEB.2.00.1109260154510.1389@chino.kir.corp.google.com>
Date: Mon, 26 Sep 2011 01:56:57 -0700 (PDT)
From: David Rientjes <rientjes@...gle.com>
To: Michal Hocko <mhocko@...e.cz>
cc: Oleg Nesterov <oleg@...hat.com>,
Konstantin Khlebnikov <khlebnikov@...nvz.org>,
linux-mm@...ck.org, Andrew Morton <akpm@...ux-foundation.org>,
linux-kernel@...r.kernel.org,
KOSAKI Motohiro <kosaki.motohiro@...fujitsu.com>,
KAMEZAWA Hiroyuki <kamezawa.hiroyu@...fujitsu.com>,
"Rafael J. Wysocki" <rjw@...k.pl>, Tejun Heo <tj@...nel.org>,
Rusty Russell <rusty@...tcorp.com.au>
Subject: Re: [PATCH 1/2] oom: do not live lock on frozen tasks
On Mon, 26 Sep 2011, Michal Hocko wrote:
> diff --git a/mm/oom_kill.c b/mm/oom_kill.c
> index 626303b..b9774f3 100644
> --- a/mm/oom_kill.c
> +++ b/mm/oom_kill.c
> @@ -32,6 +32,7 @@
> #include <linux/mempolicy.h>
> #include <linux/security.h>
> #include <linux/ptrace.h>
> +#include <linux/freezer.h>
>
> int sysctl_panic_on_oom;
> int sysctl_oom_kill_allocating_task;
> @@ -451,6 +452,9 @@ static int oom_kill_task(struct task_struct *p, struct mem_cgroup *mem)
> task_pid_nr(q), q->comm);
> task_unlock(q);
> force_sig(SIGKILL, q);
> +
> + if (frozen(q))
> + thaw_process(q);
> }
>
> set_tsk_thread_flag(p, TIF_MEMDIE);
This is in the wrong place, oom_kill_task() iterates over all threads that
are _not_ in the same thread group as the chosen thread and kills them
without giving them access to memory reserves. The chosen task, p, could
still be frozen and may not exit.
Once that's fixed, feel free to add my
Acked-by: David Rientjes <rientjes@...gle.com>
once Rafael sends his acked-by or reviewed-by.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists