[ARM] prevent the vmalloc cmdline argument from eating all memory
authorNicolas Pitre <nico@cam.org>
Fri, 19 Sep 2008 14:43:06 +0000 (10:43 -0400)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Fri, 28 Nov 2008 15:36:47 +0000 (15:36 +0000)
Commit 8d5796d2ec6b5a4e7a52861144e63af438d6f8f7 allows for the vmalloc
area to be resized from the kernel cmdline.  Make sure it cannot overlap
with RAM entirely.

Signed-off-by: Nicolas Pitre <nico@marvell.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
arch/arm/mm/mmu.c

index ab511d9..636cf8f 100644 (file)
@@ -646,6 +646,13 @@ static void __init early_vmalloc(char **arg)
                        "vmalloc area too small, limiting to %luMB\n",
                        vmalloc_reserve >> 20);
        }
+
+       if (vmalloc_reserve > VMALLOC_END - (PAGE_OFFSET + SZ_32M)) {
+               vmalloc_reserve = VMALLOC_END - (PAGE_OFFSET + SZ_32M);
+               printk(KERN_WARNING
+                       "vmalloc area is too big, limiting to %luMB\n",
+                       vmalloc_reserve >> 20);
+       }
 }
 __early_param("vmalloc=", early_vmalloc);