Messages in this thread | | | Date | Tue, 6 Aug 2019 12:02:57 +0200 | From | Oleg Nesterov <> | Subject | Re: [PATCH v4 1/2] khugepaged: enable collapse pmd for pte-mapped THP |
| |
On 08/02, Song Liu wrote: > > +void collapse_pte_mapped_thp(struct mm_struct *mm, unsigned long addr) > +{ > + unsigned long haddr = addr & HPAGE_PMD_MASK; > + struct vm_area_struct *vma = find_vma(mm, haddr); > + pmd_t *pmd = mm_find_pmd(mm, haddr); > + struct page *hpage = NULL; > + spinlock_t *ptl; > + int count = 0; > + pmd_t _pmd; > + int i; > + > + if (!vma || !vma->vm_file || !pmd || > + vma->vm_start > haddr || vma->vm_end < haddr + HPAGE_PMD_SIZE) > + return;
I still can't understand why is it safe to blindly use mm_find_pmd().
Say, what pmd_offset(pud, address) will return to this function if pud_huge() == T? IIUC, this is possible if is_file_hugepages(vm_file). How the code below can use this result?
I think you need something like hugepage_vma_check() or even hugepage_vma_revalidate().
Oleg.
| |