We leak a page in do_no_page() if pte_chain_alloc fails.
*/
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);
spin_unlock(&mm->page_table_lock);
goto out;
oom:
+ page_cache_release(new_page);
ret = VM_FAULT_OOM;
out:
pte_chain_free(pte_chain);