> > > diff --git a/mm/vmalloc.c b/mm/vmalloc.c
> > > index d475e52110e4a..6e0dec73107a7 100644
> > > --- a/mm/vmalloc.c
> > > +++ b/mm/vmalloc.c
> > > @@ -558,8 +558,10 @@ void vunmap_range(unsigned long addr, unsigned long
> > > end)
> > >
> > > static int vmap_pages_pte_range(pmd_t *pmd, unsigned long addr,
> > > unsigned long end, pgprot_t prot, struct page **pages, int
> > > *nr,
> > > - pgtbl_mod_mask *mask)
> > > + pgtbl_mod_mask *mask, unsigned int shift)
> > > {
> > > + unsigned long pfn, size;
> > > + unsigned int steps;
> > > int err = 0;
> > > pte_t *pte;
> > >
> > > @@ -590,9 +592,10 @@ static int vmap_pages_pte_range(pmd_t *pmd, unsigned
> > > long addr,
> > > break;
> > > }
> > >
> > > - set_pte_at(&init_mm, addr, pte, mk_pte(page, prot));
> > > - (*nr)++;
> > > - } while (pte++, addr += PAGE_SIZE, addr != end);
> > > + pfn = page_to_pfn(page);
> > > + size = vmap_set_ptes(pte, addr, end, pfn, prot, shift);
> > > + steps = PFN_DOWN(size);
> > > + } while (pte += steps, *nr += steps, addr += size, addr != end);
> > >
> > nr_mapped_pages?
> >
>
> As noted in the patch 6 reply, I'll rename steps to nr_pages here as well.
>
Thank you!
> > > +
> > > + if (vmap_try_huge_pmd(pmd, addr, next, phys_addr,
> > > prot, shift)) {
> > > + *mask |= PGTBL_PMD_MODIFIED;
> > > + *nr += 1 << (PMD_SHIFT - PAGE_SHIFT);
> > >
> > *nr += 1 << (PMD_SHIFT - PAGE_SHIFT); ---> *nr += 1U << (PMD_SHIFT -
> > PAGE_SHIFT);
> > as it used to be?
> >
>
> Agreed, I'll use 1U.
>
Thank you. With noted modifications:
Reviewed-by: Uladzislau Rezki (Sony) <[email protected]>
> > >
> > This is not about this patch but probably on that WARN_ON we should bail out
> > early.
> >
>
> I'll send a separate cleanup patch changing it to:
>
> if (WARN_ON_ONCE(page_shift < PAGE_SHIFT))
> return -EINVAL;
>
Sounds good.
--
Uladzislau Rezki