[PATCH] mm/vmalloc: bail out early on invalid page_shift in __vmap_pages_range_noflush()
From: Wen Jiang
Date: Sat Oct 03 2026 - 05:05:06 EST
__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.
Suggested-by: Uladzislau Rezki (Sony) <urezki@xxxxxxxxx>
Signed-off-by: Wen Jiang <jiangwen6@xxxxxxxxxx>
---
mm/vmalloc.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/mm/vmalloc.c b/mm/vmalloc.c
index bea9f76ed7e7..838c8e0ccfe9 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)
--
2.34.1