From: Igor Mammedov <imammedo@redhat.com> To: Michal Hocko <mhocko@suse.cz> Cc: linux-kernel@vger.kernel.org, kamezawa.hiroyu@jp.fujitsu.com, balbir@linux.vnet.ibm.com, akpm@linux-foundation.org, linux-mm@kvack.org Subject: Re: [PATCH] memcg: do not expose uninitialized mem_cgroup_per_node to world Date: Wed, 01 Jun 2011 15:07:40 +0200 [thread overview] Message-ID: <4DE6399C.8070802@redhat.com> (raw) In-Reply-To: <20110601123913.GC4266@tiehlicka.suse.cz> On 06/01/2011 02:39 PM, Michal Hocko wrote: > On Wed 01-06-11 12:44:04, Igor Mammedov wrote: >> Freshly allocated 'mem_cgroup_per_node' list entries must be >> initialized before the rest of the kernel can see them. Otherwise >> zero initialized list fields can lead to race condition at >> mem_cgroup_force_empty_list: >> pc = list_entry(list->prev, struct page_cgroup, lru); >> where 'pc' will be something like 0xfffffffc if list->prev is 0 >> and cause page fault later when 'pc' is dereferenced. > Have you ever seen such a race? I do not see how this could happen. > mem_cgroup_force_empty_list is called only from > mem_cgroup_force_empty_write (aka echo whatever> group/force_empty) > or mem_cgroup_pre_destroy when the group is destroyed. > > The initialization code is, however, called before a group is > given for use AFICS. > > I am not saying tha the change is bad, I like it, but I do not think it > is a fix for potential race condition. > Yes I've seen it (RHBZ#700565). It causes random crashes in virt env ocasionally. It's easier to reproduce if you overcommit cpu. >> Signed-off-by: Igor Mammedov<imammedo@redhat.com> >> --- >> mm/memcontrol.c | 2 +- >> 1 files changed, 1 insertions(+), 1 deletions(-) >> >> diff --git a/mm/memcontrol.c b/mm/memcontrol.c >> index bd9052a..ee7cb4c 100644 >> --- a/mm/memcontrol.c >> +++ b/mm/memcontrol.c >> @@ -4707,7 +4707,6 @@ static int alloc_mem_cgroup_per_zone_info(struct mem_cgroup *mem, int node) >> if (!pn) >> return 1; >> >> - mem->info.nodeinfo[node] = pn; >> for (zone = 0; zone< MAX_NR_ZONES; zone++) { >> mz =&pn->zoneinfo[zone]; >> for_each_lru(l) >> @@ -4716,6 +4715,7 @@ static int alloc_mem_cgroup_per_zone_info(struct mem_cgroup *mem, int node) >> mz->on_tree = false; >> mz->mem = mem; >> } >> + mem->info.nodeinfo[node] = pn; >> return 0; >> } >> >> -- >> 1.7.1 >> >> -- >> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in >> the body of a message to majordomo@vger.kernel.org >> More majordomo info at http://vger.kernel.org/majordomo-info.html >> Please read the FAQ at http://www.tux.org/lkml/
WARNING: multiple messages have this Message-ID (diff)
From: Igor Mammedov <imammedo@redhat.com> To: Michal Hocko <mhocko@suse.cz> Cc: linux-kernel@vger.kernel.org, kamezawa.hiroyu@jp.fujitsu.com, balbir@linux.vnet.ibm.com, akpm@linux-foundation.org, linux-mm@kvack.org Subject: Re: [PATCH] memcg: do not expose uninitialized mem_cgroup_per_node to world Date: Wed, 01 Jun 2011 15:07:40 +0200 [thread overview] Message-ID: <4DE6399C.8070802@redhat.com> (raw) In-Reply-To: <20110601123913.GC4266@tiehlicka.suse.cz> On 06/01/2011 02:39 PM, Michal Hocko wrote: > On Wed 01-06-11 12:44:04, Igor Mammedov wrote: >> Freshly allocated 'mem_cgroup_per_node' list entries must be >> initialized before the rest of the kernel can see them. Otherwise >> zero initialized list fields can lead to race condition at >> mem_cgroup_force_empty_list: >> pc = list_entry(list->prev, struct page_cgroup, lru); >> where 'pc' will be something like 0xfffffffc if list->prev is 0 >> and cause page fault later when 'pc' is dereferenced. > Have you ever seen such a race? I do not see how this could happen. > mem_cgroup_force_empty_list is called only from > mem_cgroup_force_empty_write (aka echo whatever> group/force_empty) > or mem_cgroup_pre_destroy when the group is destroyed. > > The initialization code is, however, called before a group is > given for use AFICS. > > I am not saying tha the change is bad, I like it, but I do not think it > is a fix for potential race condition. > Yes I've seen it (RHBZ#700565). It causes random crashes in virt env ocasionally. It's easier to reproduce if you overcommit cpu. >> Signed-off-by: Igor Mammedov<imammedo@redhat.com> >> --- >> mm/memcontrol.c | 2 +- >> 1 files changed, 1 insertions(+), 1 deletions(-) >> >> diff --git a/mm/memcontrol.c b/mm/memcontrol.c >> index bd9052a..ee7cb4c 100644 >> --- a/mm/memcontrol.c >> +++ b/mm/memcontrol.c >> @@ -4707,7 +4707,6 @@ static int alloc_mem_cgroup_per_zone_info(struct mem_cgroup *mem, int node) >> if (!pn) >> return 1; >> >> - mem->info.nodeinfo[node] = pn; >> for (zone = 0; zone< MAX_NR_ZONES; zone++) { >> mz =&pn->zoneinfo[zone]; >> for_each_lru(l) >> @@ -4716,6 +4715,7 @@ static int alloc_mem_cgroup_per_zone_info(struct mem_cgroup *mem, int node) >> mz->on_tree = false; >> mz->mem = mem; >> } >> + mem->info.nodeinfo[node] = pn; >> return 0; >> } >> >> -- >> 1.7.1 >> >> -- >> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in >> the body of a message to majordomo@vger.kernel.org >> More majordomo info at http://vger.kernel.org/majordomo-info.html >> Please read the FAQ at http://www.tux.org/lkml/ -- 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 internet charges in Canada: sign http://stopthemeter.ca/ Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2011-06-01 13:08 UTC|newest] Thread overview: 85+ messages / expand[flat|nested] mbox.gz Atom feed top 2011-06-01 10:44 [PATCH] memcg: do not expose uninitialized mem_cgroup_per_node to world Igor Mammedov 2011-06-01 12:39 ` Michal Hocko 2011-06-01 12:39 ` Michal Hocko 2011-06-01 13:07 ` Igor Mammedov [this message] 2011-06-01 13:07 ` Igor Mammedov [not found] ` <4DE6399C.8070802-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> 2011-06-01 13:41 ` Michal Hocko 2011-06-01 13:41 ` Michal Hocko 2011-06-01 13:41 ` Michal Hocko [not found] ` <20110601134149.GD4266-VqjxzfR4DlwKmadIfiO5sKVXKuFTiq87@public.gmane.org> 2011-06-01 14:39 ` Igor Mammedov 2011-06-01 14:39 ` Igor Mammedov 2011-06-01 14:39 ` Igor Mammedov 2011-06-01 15:20 ` Michal Hocko 2011-06-01 15:20 ` Michal Hocko [not found] ` <20110601152039.GG4266-VqjxzfR4DlwKmadIfiO5sKVXKuFTiq87@public.gmane.org> 2011-06-01 16:42 ` Igor Mammedov 2011-06-01 16:42 ` Igor Mammedov 2011-06-01 23:10 ` Hiroyuki Kamezawa 2011-06-01 23:10 ` Hiroyuki Kamezawa [not found] ` <BANLkTimbqHPeUdue=_Z31KVdPwcXtbLpeg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 2011-06-03 12:35 ` Igor Mammedov 2011-06-03 12:35 ` Igor Mammedov 2011-06-03 12:35 ` Igor Mammedov 2011-06-03 13:00 ` Hiroyuki Kamezawa 2011-06-03 13:00 ` Hiroyuki Kamezawa 2011-06-07 13:25 ` Igor Mammedov 2011-06-07 13:25 ` Igor Mammedov [not found] ` <4DEE26E7.2060201-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> 2011-06-08 3:35 ` KAMEZAWA Hiroyuki 2011-06-08 3:35 ` KAMEZAWA Hiroyuki 2011-06-08 3:35 ` KAMEZAWA Hiroyuki 2011-06-08 21:09 ` Andrew Morton 2011-06-08 21:09 ` Andrew Morton 2011-06-08 23:44 ` KAMEZAWA Hiroyuki 2011-06-08 23:44 ` KAMEZAWA Hiroyuki [not found] ` <20110608140951.115ab1dd.akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org> 2011-06-08 23:44 ` KAMEZAWA Hiroyuki 2011-06-10 16:57 ` Igor Mammedov 2011-06-10 16:57 ` Igor Mammedov 2011-06-10 16:57 ` Igor Mammedov 2011-07-26 21:17 ` Andrew Morton 2011-07-26 21:17 ` Andrew Morton [not found] ` <20110726141754.c69b96c6.akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org> 2011-07-27 7:58 ` Michal Hocko 2011-07-27 7:58 ` Michal Hocko 2011-07-27 7:58 ` Michal Hocko 2011-07-27 9:30 ` Igor Mammedov 2011-07-27 9:30 ` Igor Mammedov 2011-07-27 9:57 ` Michal Hocko 2011-07-27 9:57 ` Michal Hocko [not found] ` <4E2FDAA0.5020702-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> 2011-07-27 9:57 ` Michal Hocko [not found] ` <20110727075845.GA4024-VqjxzfR4DlwKmadIfiO5sKVXKuFTiq87@public.gmane.org> 2011-07-27 9:30 ` Igor Mammedov [not found] ` <4DF24D04.1080802-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> 2011-07-26 21:17 ` Andrew Morton [not found] ` <20110608123527.479e6991.kamezawa.hiroyu-+CUm20s59erQFUHtdCDX3A@public.gmane.org> 2011-06-08 21:09 ` Andrew Morton 2011-06-09 8:11 ` Igor Mammedov 2011-06-09 8:11 ` Igor Mammedov 2011-06-09 8:11 ` Igor Mammedov 2011-06-09 12:40 ` Possible shadow bug (was: Re: [PATCH] memcg: do not expose uninitialized mem_cgroup_per_node to world) Stefano Stabellini 2011-06-09 12:40 ` Stefano Stabellini 2011-06-09 12:40 ` Stefano Stabellini 2011-06-09 15:01 ` [Xen-devel] " Tim Deegan 2011-06-09 15:01 ` Tim Deegan 2011-06-09 15:01 ` Tim Deegan 2011-06-09 16:47 ` [Xen-devel] Possible shadow bug Igor Mammedov 2011-06-09 16:47 ` Igor Mammedov 2011-06-10 10:01 ` Tim Deegan 2011-06-10 10:01 ` Tim Deegan 2011-06-10 10:10 ` Tim Deegan 2011-06-10 10:10 ` Tim Deegan [not found] ` <20110610101011.GH5098-uBdcGoUfBNNYtxbxJUhB2Dgeux46jI+i@public.gmane.org> 2011-06-10 11:48 ` Pasi Kärkkäinen 2011-06-10 13:55 ` Igor Mammedov 2011-06-10 11:48 ` Pasi Kärkkäinen 2011-06-10 11:48 ` Pasi Kärkkäinen 2011-06-10 12:40 ` Tim Deegan 2011-06-10 12:40 ` Tim Deegan 2011-06-10 15:38 ` Igor Mammedov 2011-06-10 15:38 ` Igor Mammedov [not found] ` <20110610124034.GI5098-uBdcGoUfBNNYtxbxJUhB2Dgeux46jI+i@public.gmane.org> 2011-06-10 15:38 ` Igor Mammedov [not found] ` <20110610114821.GB32595-GxtO3QLqHcLR7s880joybQ@public.gmane.org> 2011-06-10 12:40 ` Tim Deegan 2011-06-10 13:55 ` Igor Mammedov 2011-06-10 13:55 ` Igor Mammedov [not found] ` <20110610100139.GG5098-uBdcGoUfBNNYtxbxJUhB2Dgeux46jI+i@public.gmane.org> 2011-06-10 10:10 ` Tim Deegan [not found] ` <4DF0F90D.4010900-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> 2011-06-10 10:01 ` Tim Deegan [not found] ` <20110609150133.GF5098-uBdcGoUfBNNYtxbxJUhB2Dgeux46jI+i@public.gmane.org> 2011-06-09 16:47 ` Igor Mammedov [not found] ` <4DF0801F.9050908-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> 2011-06-09 12:40 ` Possible shadow bug (was: Re: [PATCH] memcg: do not expose uninitialized mem_cgroup_per_node to world) Stefano Stabellini [not found] ` <BANLkTinMamg_qesEffGxKu3QkT=zyQ2MRQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 2011-06-07 13:25 ` [PATCH] memcg: do not expose uninitialized mem_cgroup_per_node to world Igor Mammedov [not found] ` <4DE8D50F.1090406-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> 2011-06-03 13:00 ` Hiroyuki Kamezawa [not found] ` <4DE66BEB.7040502-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> 2011-06-01 23:10 ` Hiroyuki Kamezawa [not found] ` <4DE64F0C.3050203-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> 2011-06-01 15:20 ` Michal Hocko 2011-06-01 13:49 ` Igor Mammedov 2011-06-01 13:49 ` Igor Mammedov
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=4DE6399C.8070802@redhat.com \ --to=imammedo@redhat.com \ --cc=akpm@linux-foundation.org \ --cc=balbir@linux.vnet.ibm.com \ --cc=kamezawa.hiroyu@jp.fujitsu.com \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-mm@kvack.org \ --cc=mhocko@suse.cz \ /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: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.