vmemmap_populate_address() no longer has any callers that need the returned PTE. Its only remaining user just checks whether the call succeeded.
Inline it back into vmemmap_populate_basepages() and return -ENOMEM directly on failure. Signed-off-by: Muchun Song <[email protected]> --- mm/sparse-vmemmap.c | 46 +++++++++++++++++++-------------------------- 1 file changed, 19 insertions(+), 27 deletions(-) diff --git a/mm/sparse-vmemmap.c b/mm/sparse-vmemmap.c index 9811c92ad258..5d5cd5f73365 100644 --- a/mm/sparse-vmemmap.c +++ b/mm/sparse-vmemmap.c @@ -234,8 +234,8 @@ static pgd_t * __meminit vmemmap_pgd_populate(unsigned long addr, int node) return pgd; } -static pte_t * __meminit vmemmap_populate_address(unsigned long addr, int node, - struct vmem_altmap *altmap) +int __meminit vmemmap_populate_basepages(unsigned long start, unsigned long end, + int node, struct vmem_altmap *altmap) { pgd_t *pgd; p4d_t *p4d; @@ -243,32 +243,24 @@ static pte_t * __meminit vmemmap_populate_address(unsigned long addr, int node, pmd_t *pmd; pte_t *pte; - pgd = vmemmap_pgd_populate(addr, node); - if (!pgd) - return NULL; - p4d = vmemmap_p4d_populate(pgd, addr, node); - if (!p4d) - return NULL; - pud = vmemmap_pud_populate(p4d, addr, node); - if (!pud) - return NULL; - pmd = vmemmap_pmd_populate(pud, addr, node); - if (!pmd) - return NULL; - pte = vmemmap_pte_populate(pmd, addr, node, altmap); - if (!pte) - return NULL; - vmemmap_verify(pte, node, addr, addr + PAGE_SIZE); - - return pte; -} - -int __meminit vmemmap_populate_basepages(unsigned long start, unsigned long end, - int node, struct vmem_altmap *altmap) -{ - for (; start < end; start += PAGE_SIZE) - if (!vmemmap_populate_address(start, node, altmap)) + for (; start < end; start += PAGE_SIZE) { + pgd = vmemmap_pgd_populate(start, node); + if (!pgd) + return -ENOMEM; + p4d = vmemmap_p4d_populate(pgd, start, node); + if (!p4d) return -ENOMEM; + pud = vmemmap_pud_populate(p4d, start, node); + if (!pud) + return -ENOMEM; + pmd = vmemmap_pmd_populate(pud, start, node); + if (!pmd) + return -ENOMEM; + pte = vmemmap_pte_populate(pmd, start, node, altmap); + if (!pte) + return -ENOMEM; + vmemmap_verify(pte, node, start, start + PAGE_SIZE); + } return 0; } -- 2.54.0
