mm/various: give up if pte_offset_map[_lock]() fails
[platform/kernel/linux-starfive.git] / mm / memcontrol.c
index caf6ab5..77d8d2d 100644 (file)
@@ -6021,9 +6021,9 @@ static int mem_cgroup_count_precharge_pte_range(pmd_t *pmd,
                return 0;
        }
 
-       if (pmd_trans_unstable(pmd))
-               return 0;
        pte = pte_offset_map_lock(vma->vm_mm, pmd, addr, &ptl);
+       if (!pte)
+               return 0;
        for (; addr != end; pte++, addr += PAGE_SIZE)
                if (get_mctgt_type(vma, addr, *pte, NULL))
                        mc.precharge++; /* increment precharge temporarily */
@@ -6241,10 +6241,10 @@ static int mem_cgroup_move_charge_pte_range(pmd_t *pmd,
                return 0;
        }
 
-       if (pmd_trans_unstable(pmd))
-               return 0;
 retry:
        pte = pte_offset_map_lock(vma->vm_mm, pmd, addr, &ptl);
+       if (!pte)
+               return 0;
        for (; addr != end; addr += PAGE_SIZE) {
                pte_t ptent = *(pte++);
                bool device = false;