From f4090d46de6e7b10d817aa67add21c37e26f4c9a Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Sun, 27 Jun 2021 10:46:47 +0200 Subject: [PATCH] Kernel: Don't kmalloc() for small (<=1024) dbgputstr() syscalls --- Kernel/Syscalls/debug.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/Kernel/Syscalls/debug.cpp b/Kernel/Syscalls/debug.cpp index 9f17265148..38bf5591f9 100644 --- a/Kernel/Syscalls/debug.cpp +++ b/Kernel/Syscalls/debug.cpp @@ -28,10 +28,18 @@ KResultOr Process::sys$dbgputstr(Userspace characters, size_t if (size == 0) return 0; + if (size <= 1024) { + char buffer[1024]; + if (!copy_from_user(buffer, characters, size)) + return EFAULT; + dbgputstr(buffer, size); + return size; + } + auto result = try_copy_kstring_from_user(reinterpret_cast(characters.unsafe_userspace_ptr()), size); if (result.is_error()) return result.error(); - dbgputstr(reinterpret_cast(result.value()->characters()), size); + dbgputstr(result.value()->characters(), size); return size; }