From 05381753c2364ca42542b516a8fd64fbc0e45c9e Mon Sep 17 00:00:00 2001 From: Hendiadyoin1 Date: Wed, 9 Feb 2022 15:37:40 +0100 Subject: [PATCH] Kernel: Bail out earlier from Process::lookup_stacks_directory --- Kernel/ProcessSpecificExposed.cpp | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/Kernel/ProcessSpecificExposed.cpp b/Kernel/ProcessSpecificExposed.cpp index b64ebdf0a8..8d93ad4944 100644 --- a/Kernel/ProcessSpecificExposed.cpp +++ b/Kernel/ProcessSpecificExposed.cpp @@ -59,21 +59,20 @@ ErrorOr Process::traverse_stacks_directory(FileSystemID fsid, Function> Process::lookup_stacks_directory(const ProcFS& procfs, StringView name) const { - ErrorOr> thread_stack_inode { ENOENT }; + auto maybe_needle = name.to_uint(); + if (!maybe_needle.has_value()) + return ENOENT; + auto needle = maybe_needle.release_value(); - // FIXME: Try to exit the loop earlier + ErrorOr> thread_stack_inode { ENOENT }; for_each_thread([&](const Thread& thread) { int tid = thread.tid().value(); VERIFY(!(tid < 0)); - if (name.to_int() == tid) { - auto maybe_inode = ProcFSProcessPropertyInode::try_create_for_thread_stack(procfs, thread.tid(), pid()); - if (maybe_inode.is_error()) { - thread_stack_inode = maybe_inode.release_error(); - return; - } - - thread_stack_inode = maybe_inode.release_value(); + if (needle == (unsigned)tid) { + thread_stack_inode = ProcFSProcessPropertyInode::try_create_for_thread_stack(procfs, thread.tid(), pid()); + return IterationDecision::Break; } + return IterationDecision::Continue; }); if (thread_stack_inode.is_error())