From 0b26d09319b3cccb41dfb3102dd4e72fd8f4b919 Mon Sep 17 00:00:00 2001 From: Oleg Nesterov Date: Fri, 23 Apr 2010 13:18:01 -0400 Subject: [PATCH] --- yaml --- r: 190199 b: refs/heads/master c: 31f2b0ebc01fd332cb0997f7ce9f9cde29af9e20 h: refs/heads/master i: 190197: ddf7e58b9ad191abcc1db1b5e4da725c63306412 190195: ce66d2d1feaa01bb9f79036f6355390dbdfdfe73 190191: a18ae87e48c36cf21abb282542b67496b3d9c1be v: v3 --- [refs] | 2 +- trunk/mm/rmap.c | 9 +++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/[refs] b/[refs] index f6078afce60d..4764a9bdc150 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 93b4a44f3ad69520d605aace3f3486b8eb754b96 +refs/heads/master: 31f2b0ebc01fd332cb0997f7ce9f9cde29af9e20 diff --git a/trunk/mm/rmap.c b/trunk/mm/rmap.c index 526704e8215d..07fc94758799 100644 --- a/trunk/mm/rmap.c +++ b/trunk/mm/rmap.c @@ -133,8 +133,8 @@ int anon_vma_prepare(struct vm_area_struct *vma) goto out_enomem_free_avc; allocated = anon_vma; } - spin_lock(&anon_vma->lock); + spin_lock(&anon_vma->lock); /* page_table_lock to protect against threads */ spin_lock(&mm->page_table_lock); if (likely(!vma->anon_vma)) { @@ -144,14 +144,15 @@ int anon_vma_prepare(struct vm_area_struct *vma) list_add(&avc->same_vma, &vma->anon_vma_chain); list_add(&avc->same_anon_vma, &anon_vma->head); allocated = NULL; + avc = NULL; } spin_unlock(&mm->page_table_lock); - spin_unlock(&anon_vma->lock); - if (unlikely(allocated)) { + + if (unlikely(allocated)) anon_vma_free(allocated); + if (unlikely(avc)) anon_vma_chain_free(avc); - } } return 0;