um: fix MAX_ORDER usage in linux_main()
authorKirill A. Shutemov <kirill.shutemov@linux.intel.com>
Wed, 15 Mar 2023 11:31:25 +0000 (14:31 +0300)
committerAndrew Morton <akpm@linux-foundation.org>
Thu, 6 Apr 2023 02:42:44 +0000 (19:42 -0700)
MAX_ORDER is not inclusive: the maximum allocation order buddy allocator
can deliver is MAX_ORDER-1.

Fix MAX_ORDER usage in linux_main().

Link: https://lkml.kernel.org/r/20230315113133.11326-3-kirill.shutemov@linux.intel.com
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Acked-by: Mike Rapoport (IBM) <rppt@kernel.org>
Cc: Richard Weinberger <richard@nod.at>
Cc: Anton Ivanov <anton.ivanov@cambridgegreys.com>
Cc: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
arch/um/kernel/um_arch.c

index 8dcda61..5e5a9c8 100644 (file)
@@ -368,10 +368,10 @@ int __init linux_main(int argc, char **argv)
        max_physmem = TASK_SIZE - uml_physmem - iomem_size - MIN_VMALLOC;
 
        /*
-        * Zones have to begin on a 1 << MAX_ORDER page boundary,
+        * Zones have to begin on a 1 << MAX_ORDER-1 page boundary,
         * so this makes sure that's true for highmem
         */
-       max_physmem &= ~((1 << (PAGE_SHIFT + MAX_ORDER)) - 1);
+       max_physmem &= ~((1 << (PAGE_SHIFT + MAX_ORDER - 1)) - 1);
        if (physmem_size + iomem_size > max_physmem) {
                highmem = physmem_size + iomem_size - max_physmem;
                physmem_size -= highmem;