From: Linus Torvalds Date: Mon, 12 Apr 2010 00:15:03 +0000 (-0700) Subject: anon_vma: clone the anon_vma chain in the right order X-Git-Tag: v2.6.34-rc4~1^2~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=646d87b481dab4ba8301716600dfd276605b0ab0;p=profile%2Fcommon%2Fkernel-common.git anon_vma: clone the anon_vma chain in the right order We want to walk the chain in reverse order when cloning it, so that the order of the result chain will be the same as the order in the source chain. When we add entries to the chain, they go at the head of the chain, so we want to add the source head last. Reviewed-by: Rik van Riel Acked-by: Johannes Weiner Tested-by: Borislav Petkov [ "No, it still oopses" ] Signed-off-by: Linus Torvalds --- diff --git a/mm/rmap.c b/mm/rmap.c index eaa7a09..ee97d38 100644 --- a/mm/rmap.c +++ b/mm/rmap.c @@ -182,7 +182,7 @@ int anon_vma_clone(struct vm_area_struct *dst, struct vm_area_struct *src) { struct anon_vma_chain *avc, *pavc; - list_for_each_entry(pavc, &src->anon_vma_chain, same_vma) { + list_for_each_entry_reverse(pavc, &src->anon_vma_chain, same_vma) { avc = anon_vma_chain_alloc(); if (!avc) goto enomem_failure;