From 3803196edb9fc4434e777c01aa16412185fab8c4 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Tue, 10 Mar 2020 13:34:24 +0100 Subject: [PATCH] Kernel: Get rid of SmapDisabler in sys$fstat() --- Kernel/FileSystem/FileDescription.cpp | 1 - Kernel/Process.cpp | 10 +++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/Kernel/FileSystem/FileDescription.cpp b/Kernel/FileSystem/FileDescription.cpp index f159f30d92..dfe169f582 100644 --- a/Kernel/FileSystem/FileDescription.cpp +++ b/Kernel/FileSystem/FileDescription.cpp @@ -76,7 +76,6 @@ FileDescription::~FileDescription() KResult FileDescription::fstat(stat& buffer) { - SmapDisabler disabler; if (is_fifo()) { memset(&buffer, 0, sizeof(buffer)); buffer.st_mode = 001000; diff --git a/Kernel/Process.cpp b/Kernel/Process.cpp index beaa98c4e7..c141e62be2 100644 --- a/Kernel/Process.cpp +++ b/Kernel/Process.cpp @@ -1818,15 +1818,19 @@ int Process::sys$fcntl(int fd, int cmd, u32 arg) return 0; } -int Process::sys$fstat(int fd, stat* statbuf) +int Process::sys$fstat(int fd, stat* user_statbuf) { REQUIRE_PROMISE(stdio); - if (!validate_write_typed(statbuf)) + if (!validate_write_typed(user_statbuf)) return -EFAULT; auto description = file_description(fd); if (!description) return -EBADF; - return description->fstat(*statbuf); + stat buffer; + memset(&buffer, 0, sizeof(buffer)); + int rc = description->fstat(buffer); + copy_to_user(user_statbuf, &buffer); + return rc; } int Process::sys$stat(const Syscall::SC_stat_params* user_params)