From b7c2ea8d468136ae5d8865b5b42d05b24129577f Mon Sep 17 00:00:00 2001 From: Bananymous Date: Sun, 23 Apr 2023 14:46:18 +0300 Subject: [PATCH] Kernel: Fix possible dead lock in Process::read() --- kernel/kernel/Process.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/kernel/kernel/Process.cpp b/kernel/kernel/Process.cpp index 0ef607ee..bcdc4d34 100644 --- a/kernel/kernel/Process.cpp +++ b/kernel/kernel/Process.cpp @@ -201,10 +201,13 @@ namespace Kernel BAN::ErrorOr Process::read(int fd, void* buffer, size_t count) { - m_lock.lock(); - TRY(validate_fd(fd)); - auto open_fd_copy = open_file_description(fd); - m_lock.unlock(); + OpenFileDescription open_fd_copy; + + { + LockGuard _(m_lock); + TRY(validate_fd(fd)); + open_fd_copy = open_file_description(fd); + } if (!(open_fd_copy.flags & O_RDONLY)) return BAN::Error::from_errno(EBADF);