lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Mon, 9 Sep 2013 13:07:08 -0700 (PDT) From: David Rientjes <rientjes@...gle.com> To: Sergey Dyasly <dserrg@...il.com> cc: linux-kernel@...r.kernel.org, linux-mm@...ck.org, Andrew Morton <akpm@...ux-foundation.org>, Michal Hocko <mhocko@...e.cz>, Rusty Russell <rusty@...tcorp.com.au>, Sha Zhengju <handai.szj@...bao.com>, Oleg Nesterov <oleg@...hat.com> Subject: Re: [PATCH] OOM killer: wait for tasks with pending SIGKILL to exit On Mon, 9 Sep 2013, Sergey Dyasly wrote: > diff --git a/mm/oom_kill.c b/mm/oom_kill.c > index 98e75f2..ef83b81 100644 > --- a/mm/oom_kill.c > +++ b/mm/oom_kill.c > @@ -275,13 +275,16 @@ enum oom_scan_t oom_scan_process_thread(struct task_struct *task, > if (oom_task_origin(task)) > return OOM_SCAN_SELECT; > > - if (task->flags & PF_EXITING && !force_kill) { > + if ((task->flags & PF_EXITING || fatal_signal_pending(task)) && > + !force_kill) { This makes sense. > /* > * If this task is not being ptraced on exit, then wait for it > * to finish before killing some other task unnecessarily. > */ > - if (!(task->group_leader->ptrace & PT_TRACE_EXIT)) > + if (!(task->group_leader->ptrace & PT_TRACE_EXIT)) { > + set_tsk_thread_flag(task, TIF_MEMDIE); This does not, we do not give access to memory reserves unless the process needs it to allocate memory. The task here, which is not current, can call into the oom killer and be granted memory reserves if necessary. > return OOM_SCAN_ABORT; > + } > } > return OOM_SCAN_OK; > } > @@ -412,16 +415,6 @@ void oom_kill_process(struct task_struct *p, gfp_t gfp_mask, int order, > static DEFINE_RATELIMIT_STATE(oom_rs, DEFAULT_RATELIMIT_INTERVAL, > DEFAULT_RATELIMIT_BURST); > > - /* > - * If the task is already exiting, don't alarm the sysadmin or kill > - * its children or threads, just set TIF_MEMDIE so it can die quickly > - */ > - if (p->flags & PF_EXITING) { > - set_tsk_thread_flag(p, TIF_MEMDIE); > - put_task_struct(p); > - return; > - } I think you misunderstood the point of this; if a selected process is already in the exit path then this is simply avoiding dumping oom kill lines to the kernel log. We want to keep doing that. > - > if (__ratelimit(&oom_rs)) > dump_header(p, gfp_mask, order, memcg, nodemask); > -- 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