On Wed, Nov 16, 2011 at 09:12:38AM -0500, Steven Rostedt wrote: > On Wed, 2011-11-16 at 17:16 +0800, Yong Zhang wrote: > > Looking at commit 4799401f [memcg: Fix race condition in > > memcg_check_events() with this_cpu usage], we just want > > to disable migration. So use the right API in -rt. This > > will cure below warning. > > > > > mm/memcontrol.c | 4 ++-- > > 1 files changed, 2 insertions(+), 2 deletions(-) > > > > diff --git a/mm/memcontrol.c b/mm/memcontrol.c > > index 6aff93c..afa1954 100644 > > --- a/mm/memcontrol.c > > +++ b/mm/memcontrol.c > > @@ -722,7 +722,7 @@ static void __mem_cgroup_target_update(struct mem_cgroup *memcg, int target) > > */ > > static void memcg_check_events(struct mem_cgroup *memcg, struct page *page) > > { > > - preempt_disable(); > > + migrate_disable(); > > No this won't work. Not even for -rt. If we disable migration but not > preemption, then two tasks can take this path. And the checks in > __memcg_event_check() will be corrupted because nothing is protecting > the updates from two tasks going into the same path. I assumed that we only care about migration, but obviously I'm wrong. > > Perhaps a local_lock would work. Yeah, will try tglx's patch later. Thanks, Yong -- To unsubscribe from this list: send the line "unsubscribe linux-rt-users" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html