From 5addc56513fedccceaf2fc1291a2946792f277eb Mon Sep 17 00:00:00 2001 From: Andrew Morton Date: Mon, 19 Jan 2004 05:09:20 -0800 Subject: [PATCH] [PATCH] do_no_page leak fix We leak a page in do_no_page() if pte_chain_alloc fails. --- mm/memory.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/mm/memory.c b/mm/memory.c index 7d8a8ed531438..f1c49a218663d 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -1433,10 +1433,8 @@ retry: */ if (write_access && !(vma->vm_flags & VM_SHARED)) { struct page * page = alloc_page(GFP_HIGHUSER); - if (!page) { - page_cache_release(new_page); + if (!page) goto oom; - } copy_user_highpage(page, new_page, address); page_cache_release(new_page); lru_cache_add_active(page); @@ -1493,6 +1491,7 @@ retry: spin_unlock(&mm->page_table_lock); goto out; oom: + page_cache_release(new_page); ret = VM_FAULT_OOM; out: pte_chain_free(pte_chain); -- 2.53.0