From bf033d04366e1375698b01f77f8cf3fa6d039679 Mon Sep 17 00:00:00 2001 From: Wen Jiang Date: Sun, 4 Oct 2026 15:16:39 +0800 Subject: [PATCH] mm/vmalloc: bail out early on invalid page_shift in __vmap_pages_range_noflush() __vmap_pages_range_noflush() currently only warns when page_shift is smaller than PAGE_SHIFT, then continues with the invalid shift. Return -EINVAL instead so the bogus argument is caught immediately. Link: https://lore.kernel.org/20261004071639.119857-1-jiangwenxiaomi@gmail.com Signed-off-by: Wen Jiang Signed-off-by: Andrew Morton Suggested-by: Uladzislau Rezki (Sony) Reviewed-by: Barry Song Reviewed-by: Uladzislau Rezki (Sony) Reviewed-by: Vishal Moola (Fractile) Cc: Dev Jain --- mm/vmalloc.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mm/vmalloc.c b/mm/vmalloc.c index 64411d9140c2..f7aa4686fe5b 100644 --- a/mm/vmalloc.c +++ b/mm/vmalloc.c @@ -684,7 +684,8 @@ int __vmap_pages_range_noflush(unsigned long addr, unsigned long end, { unsigned int i, nr = (end - addr) >> PAGE_SHIFT; - WARN_ON(page_shift < PAGE_SHIFT); + if (WARN_ON_ONCE(page_shift < PAGE_SHIFT)) + return -EINVAL; if (!IS_ENABLED(CONFIG_HAVE_ARCH_HUGE_VMALLOC) || page_shift == PAGE_SHIFT)