[PATCH v2] mm/vmalloc: bail out early on invalid page_shift in __vmap_pages_range_noflush()
From: Wen Jiang
Date: Sun Oct 04 2026 - 03:16:54 EST
From: Wen Jiang <jiangwen6@xxxxxxxxxx>
__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>
Reviewed-by: Barry Song <baohua@xxxxxxxxxx>
Reviewed-by: Uladzislau Rezki (Sony) <urezki@xxxxxxxxx>
---
Changes since v1:
- Use jiangwen6@xxxxxxxxxx for both the author and Signed-off-by.
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