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 ---