Prechádzať zdrojové kódy

Kernel: Use the templated copy_from_user where possible

Now that the templated version of copy_from_user exists
their is normally no reason to use the version which
takes the number of bytes to copy. Move to the templated
version where possible.
Brian Gianforcaro 5 rokov pred
rodič
commit
02704a73e9
1 zmenil súbory, kde vykonal 15 pridanie a 15 odobranie
  1. 15 15
      Kernel/Process.cpp

+ 15 - 15
Kernel/Process.cpp

@@ -217,7 +217,7 @@ int Process::sys$set_mmap_name(const Syscall::SC_set_mmap_name_params* user_para
         return -EFAULT;
         return -EFAULT;
 
 
     Syscall::SC_set_mmap_name_params params;
     Syscall::SC_set_mmap_name_params params;
-    copy_from_user(&params, user_params, sizeof(params));
+    copy_from_user(&params, user_params);
 
 
     auto name = validate_and_copy_string_from_user(params.name);
     auto name = validate_and_copy_string_from_user(params.name);
     if (name.is_null())
     if (name.is_null())
@@ -288,7 +288,7 @@ void* Process::sys$mmap(const Syscall::SC_mmap_params* user_params)
         return (void*)-EFAULT;
         return (void*)-EFAULT;
 
 
     Syscall::SC_mmap_params params;
     Syscall::SC_mmap_params params;
-    copy_from_user(&params, user_params, sizeof(params));
+    copy_from_user(&params, user_params);
 
 
     void* addr = (void*)params.addr;
     void* addr = (void*)params.addr;
     size_t size = params.size;
     size_t size = params.size;
@@ -934,7 +934,7 @@ int Process::sys$execve(const Syscall::SC_execve_params* user_params)
     Syscall::SC_execve_params params;
     Syscall::SC_execve_params params;
     if (!validate_read_typed(user_params))
     if (!validate_read_typed(user_params))
         return -EFAULT;
         return -EFAULT;
-    copy_from_user(&params, user_params, sizeof(params));
+    copy_from_user(&params, user_params);
 
 
     if (params.arguments.length > ARG_MAX || params.environment.length > ARG_MAX)
     if (params.arguments.length > ARG_MAX || params.environment.length > ARG_MAX)
         return -E2BIG;
         return -E2BIG;
@@ -1493,7 +1493,7 @@ int Process::sys$utime(const char* user_path, size_t path_length, const utimbuf*
         return path.error();
         return path.error();
     utimbuf buf;
     utimbuf buf;
     if (user_buf) {
     if (user_buf) {
-        copy_from_user(&buf, user_buf, sizeof(buf));
+        copy_from_user(&buf, user_buf);
     } else {
     } else {
         auto now = kgettimeofday();
         auto now = kgettimeofday();
         buf = { now.tv_sec, now.tv_sec };
         buf = { now.tv_sec, now.tv_sec };
@@ -1631,7 +1631,7 @@ int Process::sys$readlink(const Syscall::SC_readlink_params* user_params)
     if (!validate_read_typed(user_params))
     if (!validate_read_typed(user_params))
         return -EFAULT;
         return -EFAULT;
     Syscall::SC_readlink_params params;
     Syscall::SC_readlink_params params;
-    copy_from_user(&params, user_params, sizeof(params));
+    copy_from_user(&params, user_params);
 
 
     if (!validate(params.buffer))
     if (!validate(params.buffer))
         return -EFAULT;
         return -EFAULT;
@@ -1719,7 +1719,7 @@ int Process::sys$open(const Syscall::SC_open_params* user_params)
         return -EFAULT;
         return -EFAULT;
 
 
     Syscall::SC_open_params params;
     Syscall::SC_open_params params;
-    copy_from_user(&params, user_params, sizeof(params));
+    copy_from_user(&params, user_params);
     auto options = params.options;
     auto options = params.options;
     auto mode = params.mode;
     auto mode = params.mode;
 
 
@@ -1761,7 +1761,7 @@ int Process::sys$openat(const Syscall::SC_openat_params* user_params)
         return -EFAULT;
         return -EFAULT;
 
 
     Syscall::SC_openat_params params;
     Syscall::SC_openat_params params;
-    copy_from_user(&params, user_params, sizeof(params));
+    copy_from_user(&params, user_params);
     int dirfd = params.dirfd;
     int dirfd = params.dirfd;
     int options = params.options;
     int options = params.options;
     u16 mode = params.mode;
     u16 mode = params.mode;
@@ -2357,7 +2357,7 @@ int Process::sys$sigprocmask(int how, const sigset_t* set, sigset_t* old_set)
         if (!validate_read_typed(set))
         if (!validate_read_typed(set))
             return -EFAULT;
             return -EFAULT;
         sigset_t set_value;
         sigset_t set_value;
-        copy_from_user(&set_value, set, sizeof(set_value));
+        copy_from_user(&set_value, set);
         switch (how) {
         switch (how) {
         case SIG_BLOCK:
         case SIG_BLOCK:
             current->m_signal_mask &= ~set_value;
             current->m_signal_mask &= ~set_value;
@@ -2399,7 +2399,7 @@ int Process::sys$sigaction(int signum, const sigaction* act, sigaction* old_act)
         copy_to_user(&old_act->sa_flags, &action.flags, sizeof(action.flags));
         copy_to_user(&old_act->sa_flags, &action.flags, sizeof(action.flags));
         copy_to_user(&old_act->sa_sigaction, &action.handler_or_sigaction, sizeof(action.handler_or_sigaction));
         copy_to_user(&old_act->sa_sigaction, &action.handler_or_sigaction, sizeof(action.handler_or_sigaction));
     }
     }
-    copy_from_user(&action.flags, &act->sa_flags, sizeof(action.flags));
+    copy_from_user(&action.flags, &act->sa_flags);
     copy_from_user(&action.handler_or_sigaction, &act->sa_sigaction, sizeof(action.flags));
     copy_from_user(&action.handler_or_sigaction, &act->sa_sigaction, sizeof(action.flags));
     return 0;
     return 0;
 }
 }
@@ -2457,7 +2457,7 @@ int Process::sys$realpath(const Syscall::SC_realpath_params* user_params)
         return -EFAULT;
         return -EFAULT;
 
 
     Syscall::SC_realpath_params params;
     Syscall::SC_realpath_params params;
-    copy_from_user(&params, user_params, sizeof(params));
+    copy_from_user(&params, user_params);
 
 
     if (!validate_write(params.buffer.data, params.buffer.size))
     if (!validate_write(params.buffer.data, params.buffer.size))
         return -EFAULT;
         return -EFAULT;
@@ -2660,7 +2660,7 @@ int Process::sys$link(const Syscall::SC_link_params* user_params)
     if (!validate_read_typed(user_params))
     if (!validate_read_typed(user_params))
         return -EFAULT;
         return -EFAULT;
     Syscall::SC_link_params params;
     Syscall::SC_link_params params;
-    copy_from_user(&params, user_params, sizeof(params));
+    copy_from_user(&params, user_params);
     auto old_path = validate_and_copy_string_from_user(params.old_path);
     auto old_path = validate_and_copy_string_from_user(params.old_path);
     auto new_path = validate_and_copy_string_from_user(params.new_path);
     auto new_path = validate_and_copy_string_from_user(params.new_path);
     if (old_path.is_null() || new_path.is_null())
     if (old_path.is_null() || new_path.is_null())
@@ -2753,7 +2753,7 @@ int Process::sys$chown(const Syscall::SC_chown_params* user_params)
     if (!validate_read_typed(user_params))
     if (!validate_read_typed(user_params))
         return -EFAULT;
         return -EFAULT;
     Syscall::SC_chown_params params;
     Syscall::SC_chown_params params;
-    copy_from_user(&params, user_params, sizeof(params));
+    copy_from_user(&params, user_params);
     auto path = get_syscall_path_argument(params.path);
     auto path = get_syscall_path_argument(params.path);
     if (path.is_error())
     if (path.is_error())
         return path.error();
         return path.error();
@@ -4253,7 +4253,7 @@ int Process::sys$futex(const Syscall::SC_futex_params* user_params)
         return -EFAULT;
         return -EFAULT;
 
 
     Syscall::SC_futex_params params;
     Syscall::SC_futex_params params;
-    copy_from_user(&params, user_params, sizeof(params));
+    copy_from_user(&params, user_params);
 
 
     i32* userspace_address = params.userspace_address;
     i32* userspace_address = params.userspace_address;
     int futex_op = params.futex_op;
     int futex_op = params.futex_op;
@@ -4268,13 +4268,13 @@ int Process::sys$futex(const Syscall::SC_futex_params* user_params)
 
 
     timespec timeout { 0, 0 };
     timespec timeout { 0, 0 };
     if (user_timeout)
     if (user_timeout)
-        copy_from_user(&timeout, user_timeout, sizeof(timeout));
+        copy_from_user(&timeout, user_timeout);
 
 
     i32 user_value;
     i32 user_value;
 
 
     switch (futex_op) {
     switch (futex_op) {
     case FUTEX_WAIT:
     case FUTEX_WAIT:
-        copy_from_user(&user_value, userspace_address, sizeof(user_value));
+        copy_from_user(&user_value, userspace_address);
         if (user_value != value)
         if (user_value != value)
             return -EAGAIN;
             return -EAGAIN;
         // FIXME: This is supposed to be interruptible by a signal, but right now WaitQueue cannot be interrupted.
         // FIXME: This is supposed to be interruptible by a signal, but right now WaitQueue cannot be interrupted.