diff --git a/mm/shmem.c b/mm/shmem.c index 34981c7aad14570994ca4e96acc5d6132d1144cc..e300395fe308c6febcfee534ee27db45f085f88f 100644 --- a/mm/shmem.c +++ b/mm/shmem.c @@ -2464,8 +2464,6 @@ static int shmem_mfill_atomic_pte(struct mm_struct *dst_mm, if (ret) goto out_release_uncharge; - mem_cgroup_commit_charge(page, memcg, false, false); - _dst_pte = mk_pte(page, dst_vma->vm_page_prot); if (dst_vma->vm_flags & VM_WRITE) _dst_pte = pte_mkwrite(pte_mkdirty(_dst_pte)); @@ -2491,6 +2489,8 @@ static int shmem_mfill_atomic_pte(struct mm_struct *dst_mm, if (!pte_none(*dst_pte)) goto out_release_uncharge_unlock; + mem_cgroup_commit_charge(page, memcg, false, false); + lru_cache_add_anon(page); spin_lock_irq(&info->lock);