From 1f550794885b9ab35207912edf47b85c773293dc Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Sun, 16 Feb 2020 00:30:00 +0100 Subject: [PATCH] Kernel: Remove SmapDisabler in sys$getgroups() --- Kernel/Process.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/Kernel/Process.cpp b/Kernel/Process.cpp index 51e68d979e..1419c4d379 100644 --- a/Kernel/Process.cpp +++ b/Kernel/Process.cpp @@ -2600,7 +2600,7 @@ int Process::sys$sigaction(int signum, const sigaction* act, sigaction* old_act) return 0; } -int Process::sys$getgroups(ssize_t count, gid_t* gids) +int Process::sys$getgroups(ssize_t count, gid_t* user_gids) { REQUIRE_PROMISE(stdio); if (count < 0) @@ -2609,12 +2609,14 @@ int Process::sys$getgroups(ssize_t count, gid_t* gids) return m_extra_gids.size(); if (count != (int)m_extra_gids.size()) return -EINVAL; - if (!validate_write_typed(gids, m_extra_gids.size())) + if (!validate_write_typed(user_gids, m_extra_gids.size())) return -EFAULT; - size_t i = 0; - SmapDisabler disabler; + + Vector gids; for (auto gid : m_extra_gids) - gids[i++] = gid; + gids.append(gid); + + copy_to_user(user_gids, gids.data(), sizeof(gid_t) * count); return 0; }