From 4743afeaf466b7ae718a96ca71be46305c51a793 Mon Sep 17 00:00:00 2001 From: Brian Gianforcaro Date: Sun, 21 Feb 2021 08:03:03 -0800 Subject: [PATCH] Kernel: Use already computed nfds_checked value when copying from user mode. - We've already computed the number of fds * sizeof(pollfd), so use it instead of needlessly doing it again. - Use fds_copy.data() instead off address of indexing the vector. --- Kernel/Syscalls/select.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Kernel/Syscalls/select.cpp b/Kernel/Syscalls/select.cpp index 8010e37248..6d464d1f58 100644 --- a/Kernel/Syscalls/select.cpp +++ b/Kernel/Syscalls/select.cpp @@ -169,7 +169,7 @@ int Process::sys$poll(Userspace user_params) if (nfds_checked.has_overflow()) return -EFAULT; fds_copy.resize(params.nfds); - if (!copy_from_user(&fds_copy[0], ¶ms.fds[0], params.nfds * sizeof(pollfd))) + if (!copy_from_user(fds_copy.data(), ¶ms.fds[0], nfds_checked.value())) return -EFAULT; } @@ -242,7 +242,7 @@ int Process::sys$poll(Userspace user_params) fds_with_revents++; } - if (params.nfds > 0 && !copy_to_user(¶ms.fds[0], &fds_copy[0], params.nfds * sizeof(pollfd))) + if (params.nfds > 0 && !copy_to_user(¶ms.fds[0], fds_copy.data(), params.nfds * sizeof(pollfd))) return -EFAULT; return fds_with_revents;