From: Andrew Morton <akpm@linux-foundation.org>
To: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Cc: Geert Uytterhoeven <geert@linux-m68k.org>,
Michal Hocko <mhocko@suse.com>, Oleg Nesterov <oleg@redhat.com>,
linux-mm@kvack.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH/RFC] mm, oom: Fix uninitialized ret in task_will_free_mem()
Date: Thu, 4 Aug 2016 14:46:49 -0700 [thread overview]
Message-ID: <20160804144649.7ac4727ad0d93097c4055610@linux-foundation.org> (raw)
In-Reply-To: <178c5e9b-b92d-b62b-40a9-ee98b10d6bce@I-love.SAKURA.ne.jp>
On Thu, 4 Aug 2016 21:28:13 +0900 Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp> wrote:
> >
> > Fixes: 1af8bb43269563e4 ("mm, oom: fortify task_will_free_mem()")
> > Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
> > ---
> > Untested. I'm not familiar with the code, hence the default value of
> > true was deducted from the logic in the loop (return false as soon as
> > __task_will_free_mem() has returned false).
>
> I think ret = true is correct. Andrew, please send to linux.git.
task_will_free_mem() is too hard to understand.
We're examining task "A":
: for_each_process(p) {
: if (!process_shares_mm(p, mm))
: continue;
: if (same_thread_group(task, p))
: continue;
So here, we've found a process `p' which shares A's mm and which does
not share A's thread group.
: ret = __task_will_free_mem(p);
And here we check to see if killing `p' would free up memory.
: if (!ret)
: break;
If killing `p' will not free memory then give up the scan of all
processes because <reasons>, and we decide that killing `A' will
not free memory either, because some other task is holding onto
A's memory anyway.
: }
And if no task is found to be sharing A's mm while not sharing A's
thread group then fall through and decide to kill A. In which case the
patch to return `true' is correct.
Correctish? Maybe. Can we please get some comments in there to
demystify the decision-making?
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2016-08-04 21:46 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-08-03 20:19 Geert Uytterhoeven
2016-08-04 12:28 ` Tetsuo Handa
2016-08-04 21:46 ` Andrew Morton [this message]
2016-08-08 11:59 ` Tetsuo Handa
2016-08-11 8:11 ` Michal Hocko
2016-08-11 7:54 ` Michal Hocko
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20160804144649.7ac4727ad0d93097c4055610@linux-foundation.org \
--to=akpm@linux-foundation.org \
--cc=geert@linux-m68k.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mhocko@suse.com \
--cc=oleg@redhat.com \
--cc=penguin-kernel@I-love.SAKURA.ne.jp \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox