From: Daisuke Nishimura <nishimura@mxp.nes.nec.co.jp>
To: Johannes Weiner <hannes@cmpxchg.org>
Cc: Andrew Morton <akpm@linux-foundation.org>,
KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>,
Balbir Singh <balbir@linux.vnet.ibm.com>,
linux-mm@kvack.org, linux-kernel@vger.kernel.org,
Daisuke Nishimura <nishimura@mxp.nes.nec.co.jp>
Subject: Re: [patch rfc] memcg: correctly order reading PCG_USED and pc->mem_cgroup
Date: Thu, 20 Jan 2011 10:52:51 +0900 [thread overview]
Message-ID: <20110120105251.f0384f8d.nishimura@mxp.nes.nec.co.jp> (raw)
In-Reply-To: <20110119120319.GA2232@cmpxchg.org>
On Wed, 19 Jan 2011 13:03:19 +0100
Johannes Weiner <hannes@cmpxchg.org> wrote:
> The placement of the read-side barrier is confused: the writer first
> sets pc->mem_cgroup, then PCG_USED. The read-side barrier has to be
> between testing PCG_USED and reading pc->mem_cgroup.
>
> Signed-off-by: Johannes Weiner <hannes@cmpxchg.org>
> ---
> mm/memcontrol.c | 27 +++++++++------------------
> 1 files changed, 9 insertions(+), 18 deletions(-)
>
> I am a bit dumbfounded as to why this has never had any impact. I see
> two scenarios where charging can race with LRU operations:
>
> One is shmem pages on swapoff. They are on the LRU when charged as
> page cache, which could race with isolation/putback. This seems
> sufficiently rare.
>
> The other case is a swap cache page being charged while somebody else
> had it isolated. mem_cgroup_lru_del_before_commit_swapcache() would
> see the page isolated and skip it. The commit then has to race with
> putback, which could see PCG_USED but not pc->mem_cgroup, and crash
> with a NULL pointer dereference. This does sound a bit more likely.
>
> Any idea? Am I missing something?
>
pc->mem_cgroup is not cleared even when the page is freed, so NULL pointer
dereference can happen only when it's the first time the page is used.
But yes, even if it's not the first time, this means pc->mem_cgroup may be wrong.
Anyway, I welcome this patch.
Acked-by: Daisuke Nishimura <nishimura@mxp.nes.nec.co.jp>
Thanks,
Daisuke Nishimura.
--
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/ .
Fight unfair telecom policy in Canada: sign http://dissolvethecrtc.ca/
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
prev parent reply other threads:[~2011-01-20 1:56 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-01-19 12:03 [patch rfc] memcg: correctly order reading PCG_USED and pc->mem_cgroup Johannes Weiner
2011-01-20 1:06 ` KAMEZAWA Hiroyuki
2011-01-20 10:49 ` Johannes Weiner
2011-01-20 1:52 ` Daisuke Nishimura [this message]
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=20110120105251.f0384f8d.nishimura@mxp.nes.nec.co.jp \
--to=nishimura@mxp.nes.nec.co.jp \
--cc=akpm@linux-foundation.org \
--cc=balbir@linux.vnet.ibm.com \
--cc=hannes@cmpxchg.org \
--cc=kamezawa.hiroyu@jp.fujitsu.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
/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