On Tue, Nov 10, 2020 at 2:33 PM Oscar Salvador <osalvador@xxxxxxx> wrote: > > On Tue, Nov 10, 2020 at 02:08:46PM +0800, Muchun Song wrote: > > The check should be added here. > > > > if (!pgtable) > > return NULL; > > > > Just like my previous v2 patch does. In this case, we can drop those > > checks. What do you think? > > It is too early for me, so bear with me. > > page_huge_pte will only return NULL in case we did not get to preallocate > any pgtable right? The page_huge_pte only returns NULL when we did consume the page tables. Not each HugeTLB page need to split the vmemmap page tables. We preallocate page tables for each HugeTLB page, if we do not need to split PMD. We should free the preallocated page tables. Maybe you can see the comments of the other thread. [PATCH v3 09/21] mm/hugetlb: Free the vmemmap pages associated with each hugetlb page Thanks. > > What I was talimg about is that > > > > > page_huge_pte(page) = list_first_entry_or_null(&pgtable->lru, > > > struct page, lru); > > here we will get the either a pgtable entry or NULL in case we already consumed > all entries from the list. > If that is the case, we can return NULL and let the caller known that we > are done. > > Am I missing anything? > > > -- > Oscar Salvador > SUSE L3 -- Yours, Muchun