Merge branch 'akpm' (patches from Andrew)
Merge more updates from Andrew Morton: "More mm/ work, plenty more to come Subsystems affected by this patch series: slub, memcg, gup, kasan, pagealloc, hugetlb, vmscan, tools, mempolicy, memblock, hugetlbfs, thp, mmap, kconfig" * akpm: (131 commits) arm64: mm: use ARCH_HAS_DEBUG_WX instead of arch defined x86: mm: use ARCH_HAS_DEBUG_WX instead of arch defined riscv: support DEBUG_WX mm: add DEBUG_WX support drivers/base/memory.c: cache memory blocks in xarray to accelerate lookup mm/thp: rename pmd_mknotpresent() as pmd_mkinvalid() powerpc/mm: drop platform defined pmd_mknotpresent() mm: thp: don't need to drain lru cache when splitting and mlocking THP hugetlbfs: get unmapped area below TASK_UNMAPPED_BASE for hugetlbfs sparc32: register memory occupied by kernel as memblock.memory include/linux/memblock.h: fix minor typo and unclear comment mm, mempolicy: fix up gup usage in lookup_node tools/vm/page_owner_sort.c: filter out unneeded line mm: swap: memcg: fix memcg stats for huge pages mm: swap: fix vmstats for huge pages mm: vmscan: limit the range of LRU type balancing mm: vmscan: reclaim writepage is IO cost mm: vmscan: determine anon/file pressure balance at the reclaim root mm: balance LRU lists based on relative thrashing mm: only count actual rotations as LRU reclaim cost ...
This commit is contained in:
@@ -162,14 +162,12 @@ static int __replace_page(struct vm_area_struct *vma, unsigned long addr,
|
||||
};
|
||||
int err;
|
||||
struct mmu_notifier_range range;
|
||||
struct mem_cgroup *memcg;
|
||||
|
||||
mmu_notifier_range_init(&range, MMU_NOTIFY_CLEAR, 0, vma, mm, addr,
|
||||
addr + PAGE_SIZE);
|
||||
|
||||
if (new_page) {
|
||||
err = mem_cgroup_try_charge(new_page, vma->vm_mm, GFP_KERNEL,
|
||||
&memcg, false);
|
||||
err = mem_cgroup_charge(new_page, vma->vm_mm, GFP_KERNEL);
|
||||
if (err)
|
||||
return err;
|
||||
}
|
||||
@@ -179,17 +177,13 @@ static int __replace_page(struct vm_area_struct *vma, unsigned long addr,
|
||||
|
||||
mmu_notifier_invalidate_range_start(&range);
|
||||
err = -EAGAIN;
|
||||
if (!page_vma_mapped_walk(&pvmw)) {
|
||||
if (new_page)
|
||||
mem_cgroup_cancel_charge(new_page, memcg, false);
|
||||
if (!page_vma_mapped_walk(&pvmw))
|
||||
goto unlock;
|
||||
}
|
||||
VM_BUG_ON_PAGE(addr != pvmw.address, old_page);
|
||||
|
||||
if (new_page) {
|
||||
get_page(new_page);
|
||||
page_add_new_anon_rmap(new_page, vma, addr, false);
|
||||
mem_cgroup_commit_charge(new_page, memcg, false, false);
|
||||
lru_cache_add_active_or_unevictable(new_page, vma);
|
||||
} else
|
||||
/* no new page, just dec_mm_counter for old_page */
|
||||
|
Reference in New Issue
Block a user