From: Leo Stone <leocstone@gmail.com>
Date: Mon, 16 Dec 2024 04:27:51 +0000 (-0800)
Subject: mm: huge_memory: handle strsep not finding delimiter
X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=d3ac65d274b3a93cf9cf9559fd1473ab65e00e10;p=users%2Fdwmw2%2Flinux.git

mm: huge_memory: handle strsep not finding delimiter

split_huge_pages_write() does not handle the case where strsep finds no
delimiter in the given string and sets the input buffer to NULL, which
allows this reproducer to trigger a protection fault.

Link: https://lkml.kernel.org/r/20241216042752.257090-2-leocstone@gmail.com
Signed-off-by: Leo Stone <leocstone@gmail.com>
Reported-by: syzbot+8a3da2f1bbf59227c289@syzkaller.appspotmail.com
Closes: https://syzkaller.appspot.com/bug?extid=8a3da2f1bbf59227c289
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---

diff --git a/mm/huge_memory.c b/mm/huge_memory.c
index df0c4988dd88b..e53d83b3e5cf9 100644
--- a/mm/huge_memory.c
+++ b/mm/huge_memory.c
@@ -4169,7 +4169,7 @@ static ssize_t split_huge_pages_write(struct file *file, const char __user *buf,
 		size_t input_len = strlen(input_buf);
 
 		tok = strsep(&buf, ",");
-		if (tok) {
+		if (tok && buf) {
 			strscpy(file_path, tok);
 		} else {
 			ret = -EINVAL;