Hi Kefeng, kernel test robot noticed the following build errors: [auto build test ERROR on akpm-mm/mm-everything] url: https://github.com/intel-lab-lkp/linux/commits/Kefeng-Wang/mm-memory-move-mem_cgroup_charge-into-alloc_anon_folio/20240116-151640 base: https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git mm-everything patch link: https://lore.kernel.org/r/20240116071302.2282230-1-wangkefeng.wang%40huawei.com patch subject: [PATCH] mm: memory: move mem_cgroup_charge() into alloc_anon_folio() config: i386-buildonly-randconfig-002-20240116 (https://download.01.org/0day-ci/archive/20240117/202401170708.XjVa9Trj-lkp@xxxxxxxxx/config) compiler: ClangBuiltLinux clang version 17.0.6 (https://github.com/llvm/llvm-project 6009708b4367171ccdbf4b5905cb6a803753fe18) reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240117/202401170708.XjVa9Trj-lkp@xxxxxxxxx/reproduce) If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <lkp@xxxxxxxxx> | Closes: https://lore.kernel.org/oe-kbuild-all/202401170708.XjVa9Trj-lkp@xxxxxxxxx/ All errors (new ones prefixed by >>): >> mm/memory.c:4223:24: error: use of undeclared identifier 'vma' 4223 | return folio_prealloc(vma->vm_mm, vma, vmf->address, true); | ^ mm/memory.c:4223:36: error: use of undeclared identifier 'vma' 4223 | return folio_prealloc(vma->vm_mm, vma, vmf->address, true); | ^ 2 errors generated. vim +/vma +4223 mm/memory.c 4153 4154 static struct folio *alloc_anon_folio(struct vm_fault *vmf) 4155 { 4156 #ifdef CONFIG_TRANSPARENT_HUGEPAGE 4157 struct vm_area_struct *vma = vmf->vma; 4158 unsigned long orders; 4159 struct folio *folio; 4160 unsigned long addr; 4161 pte_t *pte; 4162 gfp_t gfp; 4163 int order; 4164 4165 /* 4166 * If uffd is active for the vma we need per-page fault fidelity to 4167 * maintain the uffd semantics. 4168 */ 4169 if (unlikely(userfaultfd_armed(vma))) 4170 goto fallback; 4171 4172 /* 4173 * Get a list of all the (large) orders below PMD_ORDER that are enabled 4174 * for this vma. Then filter out the orders that can't be allocated over 4175 * the faulting address and still be fully contained in the vma. 4176 */ 4177 orders = thp_vma_allowable_orders(vma, vma->vm_flags, false, true, true, 4178 BIT(PMD_ORDER) - 1); 4179 orders = thp_vma_suitable_orders(vma, vmf->address, orders); 4180 4181 if (!orders) 4182 goto fallback; 4183 4184 pte = pte_offset_map(vmf->pmd, vmf->address & PMD_MASK); 4185 if (!pte) 4186 return ERR_PTR(-EAGAIN); 4187 4188 /* 4189 * Find the highest order where the aligned range is completely 4190 * pte_none(). Note that all remaining orders will be completely 4191 * pte_none(). 4192 */ 4193 order = highest_order(orders); 4194 while (orders) { 4195 addr = ALIGN_DOWN(vmf->address, PAGE_SIZE << order); 4196 if (pte_range_none(pte + pte_index(addr), 1 << order)) 4197 break; 4198 order = next_order(&orders, order); 4199 } 4200 4201 pte_unmap(pte); 4202 4203 /* Try allocating the highest of the remaining orders. */ 4204 gfp = vma_thp_gfp_mask(vma); 4205 while (orders) { 4206 addr = ALIGN_DOWN(vmf->address, PAGE_SIZE << order); 4207 folio = vma_alloc_folio(gfp, order, vma, addr, true); 4208 if (folio) { 4209 if (mem_cgroup_charge(folio, vma->vm_mm, gfp)) { 4210 folio_put(folio); 4211 goto next; 4212 } 4213 folio_throttle_swaprate(folio, gfp); 4214 clear_huge_page(&folio->page, vmf->address, 1 << order); 4215 return folio; 4216 } 4217 next: 4218 order = next_order(&orders, order); 4219 } 4220 4221 fallback: 4222 #endif > 4223 return folio_prealloc(vma->vm_mm, vma, vmf->address, true); 4224 } 4225 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki