]> git.proxmox.com Git - mirror_ubuntu-focal-kernel.git/blobdiff - mm/page_alloc.c
mm: fix negative left shift count when PAGE_SHIFT > 20
[mirror_ubuntu-focal-kernel.git] / mm / page_alloc.c
index c2b59dbda196dcaaffcd44f367143e3e83a15c0f..116bab1c2cf5d88495da2e245d4f873302d9bb3c 100644 (file)
@@ -5745,9 +5745,10 @@ void *__init alloc_large_system_hash(const char *tablename,
        if (!numentries) {
                /* round applicable memory size up to nearest megabyte */
                numentries = nr_kernel_pages;
-               numentries += (1UL << (20 - PAGE_SHIFT)) - 1;
-               numentries >>= 20 - PAGE_SHIFT;
-               numentries <<= 20 - PAGE_SHIFT;
+
+               /* It isn't necessary when PAGE_SIZE >= 1MB */
+               if (PAGE_SHIFT < 20)
+                       numentries = round_up(numentries, (1<<20)/PAGE_SIZE);
 
                /* limit to 1 bucket per 2^scale bytes of low memory */
                if (scale > PAGE_SHIFT)