From b588978a22ff7daae00afd7b30be97c69197e4cc Mon Sep 17 00:00:00 2001 From: Qingqing Zhou Date: Fri, 3 Jan 2020 20:08:43 +0800 Subject: [PATCH] mm/vmalloc.c: increase vm area range in __vmalloc_node When the CONFIG_ENABLE_VMALLOC_SAVING is enabled, even though the unused lowmem is used as vmalloc space, but __vmalloc_node() still uses VMALLOC_START as the start point to allocate vm area, but the range [VMALLOC_START, VMALLOC_END] is limited, this may cause vmalloc allocation failure. Change the start point to allocate the vm area from VMALLOC_START to PAGE_OFFSET to make that allocation can be chosen from [PAGE_OFFSET, VMALLOC_START) also. Change-Id: I89c099484846c4bcd9b607c1925f253c165d0dd9 Signed-off-by: Qingqing Zhou --- mm/vmalloc.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/mm/vmalloc.c b/mm/vmalloc.c index 7b14761cde8b..66e394d0b8a0 100644 --- a/mm/vmalloc.c +++ b/mm/vmalloc.c @@ -2631,8 +2631,13 @@ static void *__vmalloc_node(unsigned long size, unsigned long align, gfp_t gfp_mask, pgprot_t prot, int node, const void *caller) { +#ifdef CONFIG_ENABLE_VMALLOC_SAVING + return __vmalloc_node_range(size, align, PAGE_OFFSET, VMALLOC_END, + gfp_mask, prot, 0, node, caller); +#else return __vmalloc_node_range(size, align, VMALLOC_START, VMALLOC_END, gfp_mask, prot, 0, node, caller); +#endif } void *__vmalloc(unsigned long size, gfp_t gfp_mask, pgprot_t prot)