From b27b22a68c095daaa2a7f32a4b6cac3659cbb10e Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Fri, 28 Jan 2022 15:05:59 +0100 Subject: [PATCH] Kernel: Allocate entire SelectBlocker::FDVector at once Use try_ensure_capacity() + unchecked_append() instead of repeatedly doing try_append(). --- Kernel/Syscalls/poll.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Kernel/Syscalls/poll.cpp b/Kernel/Syscalls/poll.cpp index 8c63ee51c2..3619b7bb10 100644 --- a/Kernel/Syscalls/poll.cpp +++ b/Kernel/Syscalls/poll.cpp @@ -45,6 +45,8 @@ ErrorOr Process::sys$poll(Userspace use } Thread::SelectBlocker::FDVector fds_info; + TRY(fds_info.try_ensure_capacity(params.nfds)); + for (size_t i = 0; i < params.nfds; i++) { auto& pfd = fds_copy[i]; auto description = TRY(fds().open_file_description(pfd.fd)); @@ -57,7 +59,7 @@ ErrorOr Process::sys$poll(Userspace use block_flags |= BlockFlags::ReadPriority; if (pfd.events & POLLWRBAND) block_flags |= BlockFlags::WritePriority; - TRY(fds_info.try_append({ move(description), block_flags })); + fds_info.unchecked_append({ move(description), block_flags }); } auto* current_thread = Thread::current();