Kernel: Don't kmalloc() for small (<=1024) dbgputstr() syscalls

This commit is contained in:
Andreas Kling 2021-06-27 10:46:47 +02:00
parent a9906cfcd1
commit f4090d46de
Notes: sideshowbarker 2024-07-18 11:27:52 +09:00

View File

@ -28,10 +28,18 @@ KResultOr<size_t> Process::sys$dbgputstr(Userspace<const u8*> 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<char const*>(characters.unsafe_userspace_ptr()), size);
if (result.is_error())
return result.error();
dbgputstr(reinterpret_cast<const char*>(result.value()->characters()), size);
dbgputstr(result.value()->characters(), size);
return size;
}