From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756868AbYKUI4R (ORCPT ); Fri, 21 Nov 2008 03:56:17 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1754569AbYKUIwx (ORCPT ); Fri, 21 Nov 2008 03:52:53 -0500 Received: from cn.fujitsu.com ([222.73.24.84]:60927 "EHLO song.cn.fujitsu.com" rhost-flags-OK-FAIL-OK-OK) by vger.kernel.org with ESMTP id S1754499AbYKUIww (ORCPT ); Fri, 21 Nov 2008 03:52:52 -0500 Message-ID: <49267627.80103@cn.fujitsu.com> Date: Fri, 21 Nov 2008 16:49:43 +0800 From: Lai Jiangshan User-Agent: Thunderbird 2.0.0.17 (Windows/20080914) MIME-Version: 1.0 To: Andrew Morton , Paul Menage , Linux Kernel Mailing List , Linux Containers , KAMEZAWA Hiroyuki Subject: [PATCH] memcontrol: rcu_read_lock() to protect mm_match_cgroup() Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org mm_match_cgroup() calls cgroup_subsys_state(). we must use rcu_read_lock() to protect cgroup_subsys_state(). Signed-off-by: Lai Jiangshan --- diff --git a/include/linux/memcontrol.h b/include/linux/memcontrol.h index 1fbe14d..ce89ff0 100644 --- a/include/linux/memcontrol.h +++ b/include/linux/memcontrol.h @@ -47,8 +47,15 @@ int task_in_mem_cgroup(struct task_struct *task, const struct mem_cgroup *mem); extern struct mem_cgroup *mem_cgroup_from_task(struct task_struct *p); -#define mm_match_cgroup(mm, cgroup) \ - ((cgroup) == mem_cgroup_from_task((mm)->owner)) +static inline +int mm_match_cgroup(const struct mm_struct *mm, const struct mem_cgroup *cgroup) +{ + struct mem_cgroup *mem; + rcu_read_lock(); + mem = mem_cgroup_from_task((mm)->owner); + rcu_read_unlock(); + return cgroup == mem; +} extern int mem_cgroup_prepare_migration(struct page *page, struct page *newpage);