From: Andrea Arcangeli Date: Wed, 22 Sep 2010 20:05:12 +0000 (-0700) Subject: mmap: call unlink_anon_vmas() in __split_vma() in case of error X-Git-Tag: v2.6.35.6~41 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e675865c92e66331dba733c544eb53b3d6c45eaa;p=thirdparty%2Fkernel%2Fstable.git mmap: call unlink_anon_vmas() in __split_vma() in case of error commit 2aeadc30de45a72648f271603203ab392b80f607 upstream. If __split_vma fails because of an out of memory condition the anon_vma_chain isn't teardown and freed potentially leading to rmap walks accessing freed vma information plus there's a memleak. Signed-off-by: Andrea Arcangeli Acked-by: Johannes Weiner Acked-by: Rik van Riel Acked-by: Hugh Dickins Cc: Marcelo Tosatti Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds Signed-off-by: Greg Kroah-Hartman --- diff --git a/mm/mmap.c b/mm/mmap.c index 3867cfc21cc79..12d38bf4f5b0f 100644 --- a/mm/mmap.c +++ b/mm/mmap.c @@ -1997,6 +1997,7 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma, removed_exe_file_vma(mm); fput(new->vm_file); } + unlink_anon_vmas(new); out_free_mpol: mpol_put(pol); out_free_vma: