[PATCH] mm: debug_page_alloc: fix NULL buf in debug_guardpage_minorder_setup

Ye Liu <[email protected]>
Newsgroups gmane.linux.kernel,gmane.linux.kernel.mm
Message-ID <[email protected]>
From: Ye Liu <[email protected]>

If the kernel command line includes "debug_guardpage_minorder" without
an equals sign (i.e., no value is provided), the early parameter
parser passes a NULL buf pointer to the setup function.

kstrtouint() does not perform a NULL check on its input and calls
directly into kstrtoull() which dereferences s[0] unconditionally,
leading to a NULL pointer dereference and early boot crash.

Additionally, the error path's pr_err("%s", buf) would also crash with
a NULL format argument.

Signed-off-by: Ye Liu <[email protected]>
---
 mm/debug_page_alloc.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/mm/debug_page_alloc.c b/mm/debug_page_alloc.c
index 41e3d1f1ad96..fd2664c3c86a 100644
--- a/mm/debug_page_alloc.c
+++ b/mm/debug_page_alloc.c
@@ -22,8 +22,8 @@ static int __init debug_guardpage_minorder_setup(char *buf)
 {
 	unsigned int res;
 
-	if (kstrtouint(buf, 10, &res) < 0 ||  res > MAX_PAGE_ORDER / 2) {
-		pr_err("Bad debug_guardpage_minorder value: %s\n", buf);
+	if (!buf || kstrtouint(buf, 10, &res) < 0 || res > MAX_PAGE_ORDER / 2) {
+		pr_err("Bad debug_guardpage_minorder value: %s\n", buf ?: "(missing)");
 		return 0;
 	}
 	_debug_guardpage_minorder = res;
-- 
2.25.1
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.