memory.c (6b16f5d12202a23d875915349cc031c07fe1b3ec) | memory.c (2cf855837b89d92996cf264713f3bed2bf9b0b4f) |
---|---|
1/* 2 * linux/mm/memory.c 3 * 4 * Copyright (C) 1991, 1992, 1993, 1994 Linus Torvalds 5 */ 6 7/* 8 * demand-loading started 01.12.91 - seems it is high on the list of --- 2489 unchanged lines hidden (view full) --- 2498 } else { 2499 new_page = alloc_page_vma(GFP_HIGHUSER_MOVABLE, vma, 2500 vmf->address); 2501 if (!new_page) 2502 goto oom; 2503 cow_user_page(new_page, old_page, vmf->address, vma); 2504 } 2505 | 1/* 2 * linux/mm/memory.c 3 * 4 * Copyright (C) 1991, 1992, 1993, 1994 Linus Torvalds 5 */ 6 7/* 8 * demand-loading started 01.12.91 - seems it is high on the list of --- 2489 unchanged lines hidden (view full) --- 2498 } else { 2499 new_page = alloc_page_vma(GFP_HIGHUSER_MOVABLE, vma, 2500 vmf->address); 2501 if (!new_page) 2502 goto oom; 2503 cow_user_page(new_page, old_page, vmf->address, vma); 2504 } 2505 |
2506 if (mem_cgroup_try_charge(new_page, mm, GFP_KERNEL, &memcg, false)) | 2506 if (mem_cgroup_try_charge_delay(new_page, mm, GFP_KERNEL, &memcg, false)) |
2507 goto oom_free_new; 2508 2509 __SetPageUptodate(new_page); 2510 2511 mmu_notifier_invalidate_range_start(mm, mmun_start, mmun_end); 2512 2513 /* 2514 * Re-check the pte - we dropped the lock --- 483 unchanged lines hidden (view full) --- 2998 2999 page = ksm_might_need_to_copy(page, vma, vmf->address); 3000 if (unlikely(!page)) { 3001 ret = VM_FAULT_OOM; 3002 page = swapcache; 3003 goto out_page; 3004 } 3005 | 2507 goto oom_free_new; 2508 2509 __SetPageUptodate(new_page); 2510 2511 mmu_notifier_invalidate_range_start(mm, mmun_start, mmun_end); 2512 2513 /* 2514 * Re-check the pte - we dropped the lock --- 483 unchanged lines hidden (view full) --- 2998 2999 page = ksm_might_need_to_copy(page, vma, vmf->address); 3000 if (unlikely(!page)) { 3001 ret = VM_FAULT_OOM; 3002 page = swapcache; 3003 goto out_page; 3004 } 3005 |
3006 if (mem_cgroup_try_charge(page, vma->vm_mm, GFP_KERNEL, 3007 &memcg, false)) { | 3006 if (mem_cgroup_try_charge_delay(page, vma->vm_mm, GFP_KERNEL, 3007 &memcg, false)) { |
3008 ret = VM_FAULT_OOM; 3009 goto out_page; 3010 } 3011 3012 /* 3013 * Back out if somebody else already faulted in this pte. 3014 */ 3015 vmf->pte = pte_offset_map_lock(vma->vm_mm, vmf->pmd, vmf->address, --- 144 unchanged lines hidden (view full) --- 3160 3161 /* Allocate our own private page. */ 3162 if (unlikely(anon_vma_prepare(vma))) 3163 goto oom; 3164 page = alloc_zeroed_user_highpage_movable(vma, vmf->address); 3165 if (!page) 3166 goto oom; 3167 | 3008 ret = VM_FAULT_OOM; 3009 goto out_page; 3010 } 3011 3012 /* 3013 * Back out if somebody else already faulted in this pte. 3014 */ 3015 vmf->pte = pte_offset_map_lock(vma->vm_mm, vmf->pmd, vmf->address, --- 144 unchanged lines hidden (view full) --- 3160 3161 /* Allocate our own private page. */ 3162 if (unlikely(anon_vma_prepare(vma))) 3163 goto oom; 3164 page = alloc_zeroed_user_highpage_movable(vma, vmf->address); 3165 if (!page) 3166 goto oom; 3167 |
3168 if (mem_cgroup_try_charge(page, vma->vm_mm, GFP_KERNEL, &memcg, false)) | 3168 if (mem_cgroup_try_charge_delay(page, vma->vm_mm, GFP_KERNEL, &memcg, 3169 false)) |
3169 goto oom_free_page; 3170 3171 /* 3172 * The memory barrier inside __SetPageUptodate makes sure that 3173 * preceeding stores to the page contents become visible before 3174 * the set_pte_at() write. 3175 */ 3176 __SetPageUptodate(page); --- 479 unchanged lines hidden (view full) --- 3656 3657 if (unlikely(anon_vma_prepare(vma))) 3658 return VM_FAULT_OOM; 3659 3660 vmf->cow_page = alloc_page_vma(GFP_HIGHUSER_MOVABLE, vma, vmf->address); 3661 if (!vmf->cow_page) 3662 return VM_FAULT_OOM; 3663 | 3170 goto oom_free_page; 3171 3172 /* 3173 * The memory barrier inside __SetPageUptodate makes sure that 3174 * preceeding stores to the page contents become visible before 3175 * the set_pte_at() write. 3176 */ 3177 __SetPageUptodate(page); --- 479 unchanged lines hidden (view full) --- 3657 3658 if (unlikely(anon_vma_prepare(vma))) 3659 return VM_FAULT_OOM; 3660 3661 vmf->cow_page = alloc_page_vma(GFP_HIGHUSER_MOVABLE, vma, vmf->address); 3662 if (!vmf->cow_page) 3663 return VM_FAULT_OOM; 3664 |
3664 if (mem_cgroup_try_charge(vmf->cow_page, vma->vm_mm, GFP_KERNEL, | 3665 if (mem_cgroup_try_charge_delay(vmf->cow_page, vma->vm_mm, GFP_KERNEL, |
3665 &vmf->memcg, false)) { 3666 put_page(vmf->cow_page); 3667 return VM_FAULT_OOM; 3668 } 3669 3670 ret = __do_fault(vmf); 3671 if (unlikely(ret & (VM_FAULT_ERROR | VM_FAULT_NOPAGE | VM_FAULT_RETRY))) 3672 goto uncharge_out; --- 1060 unchanged lines hidden --- | 3666 &vmf->memcg, false)) { 3667 put_page(vmf->cow_page); 3668 return VM_FAULT_OOM; 3669 } 3670 3671 ret = __do_fault(vmf); 3672 if (unlikely(ret & (VM_FAULT_ERROR | VM_FAULT_NOPAGE | VM_FAULT_RETRY))) 3673 goto uncharge_out; --- 1060 unchanged lines hidden --- |