diff --git a/Kernel/Process.cpp b/Kernel/Process.cpp index f7e8034f63..fbad68adc1 100644 --- a/Kernel/Process.cpp +++ b/Kernel/Process.cpp @@ -156,7 +156,7 @@ RefPtr Process::create_user_process(RefPtr& first_thread, const if (!cwd) cwd = VirtualFileSystem::the().root_custody(); - auto process = Process::create(first_thread, parts.take_last(), uid, gid, parent_pid, false, move(cwd), nullptr, tty); + auto process = Process::try_create(first_thread, parts.take_last(), uid, gid, parent_pid, false, move(cwd), nullptr, tty); if (!first_thread) return {}; if (!process->m_fds.try_resize(process->m_fds.max_open())) { @@ -197,7 +197,7 @@ RefPtr Process::create_user_process(RefPtr& first_thread, const RefPtr Process::create_kernel_process(RefPtr& first_thread, String&& name, void (*entry)(void*), void* entry_data, u32 affinity, RegisterProcess do_register) { - auto process = Process::create(first_thread, move(name), UserID(0), GroupID(0), ProcessID(0), true); + auto process = Process::try_create(first_thread, move(name), UserID(0), GroupID(0), ProcessID(0), true); if (!first_thread || !process) return {}; first_thread->regs().set_ip((FlatPtr)entry); @@ -230,7 +230,7 @@ void Process::unprotect_data() }); } -RefPtr Process::create(RefPtr& first_thread, const String& name, UserID uid, GroupID gid, ProcessID ppid, bool is_kernel_process, RefPtr cwd, RefPtr executable, TTY* tty, Process* fork_parent) +RefPtr Process::try_create(RefPtr& first_thread, const String& name, UserID uid, GroupID gid, ProcessID ppid, bool is_kernel_process, RefPtr cwd, RefPtr executable, TTY* tty, Process* fork_parent) { auto space = Memory::AddressSpace::try_create(fork_parent ? &fork_parent->address_space() : nullptr); if (!space) diff --git a/Kernel/Process.h b/Kernel/Process.h index 698b1d431f..fdcf24f33d 100644 --- a/Kernel/Process.h +++ b/Kernel/Process.h @@ -519,7 +519,7 @@ private: bool remove_thread(Thread&); Process(const String& name, UserID, GroupID, ProcessID ppid, bool is_kernel_process, RefPtr cwd, RefPtr executable, TTY* tty); - static RefPtr create(RefPtr& first_thread, const String& name, UserID, GroupID, ProcessID ppid, bool is_kernel_process, RefPtr cwd = nullptr, RefPtr executable = nullptr, TTY* = nullptr, Process* fork_parent = nullptr); + static RefPtr try_create(RefPtr& first_thread, String const& name, UserID, GroupID, ProcessID ppid, bool is_kernel_process, RefPtr cwd = nullptr, RefPtr executable = nullptr, TTY* = nullptr, Process* fork_parent = nullptr); KResult attach_resources(NonnullOwnPtr&&, RefPtr& first_thread, Process* fork_parent); static ProcessID allocate_pid(); diff --git a/Kernel/Syscalls/fork.cpp b/Kernel/Syscalls/fork.cpp index ee3c7ca2a6..80932b76dd 100644 --- a/Kernel/Syscalls/fork.cpp +++ b/Kernel/Syscalls/fork.cpp @@ -18,7 +18,7 @@ KResultOr Process::sys$fork(RegisterState& regs) VERIFY_PROCESS_BIG_LOCK_ACQUIRED(this); REQUIRE_PROMISE(proc); RefPtr child_first_thread; - auto child = Process::create(child_first_thread, m_name, uid(), gid(), pid(), m_is_kernel_process, m_cwd, m_executable, m_tty, this); + auto child = Process::try_create(child_first_thread, m_name, uid(), gid(), pid(), m_is_kernel_process, m_cwd, m_executable, m_tty, this); if (!child || !child_first_thread) return ENOMEM; child->m_veil_state = m_veil_state;