On Sun, Dec 13, 2020 at 11:45:34PM +0800, Muchun Song wrote:
>  static inline unsigned int free_vmemmap_pages_per_hpage(struct hstate *h)
>  {
> -     return h->nr_free_vmemmap_pages;
> +     return h->nr_free_vmemmap_pages && is_power_of_2(sizeof(struct page));

This is wrong as it will return either true or false, but not what we want:

        static inline unsigned long free_vmemmap_pages_size_per_hpage(struct 
hstate *h)
        {
                return (unsigned long)free_vmemmap_pages_per_hpage(h) << 
PAGE_SHIFT;
        }

the above will compute to 4096, which is wrong for obvious reasons.

-- 
Oscar Salvador
SUSE L3

Reply via email to