Kernel: Make Process::start_tracing_from API OOM safe

Modify the API so it's possible to propagate error on OOM failure.
NonnullOwnPtr<T> is not appropriate for the ThreadTracer::create() API,
so switch to OwnPtr<T>, use adopt_own_if_nonnull() to handle creation.
This commit is contained in:
Brian Gianforcaro 2021-05-12 21:44:07 -07:00 committed by Andreas Kling
commit 956314f0a1
Notes: sideshowbarker 2024-07-18 18:14:58 +09:00
4 changed files with 12 additions and 6 deletions

View file

@ -51,7 +51,9 @@ static KResultOr<u32> handle_ptrace(const Kernel::Syscall::SC_ptrace_params& par
if (peer_process.tracer()) {
return EBUSY;
}
peer_process.start_tracing_from(caller.pid());
auto result = peer_process.start_tracing_from(caller.pid());
if (result.is_error())
return result.error();
ScopedSpinLock lock(peer->get_lock());
if (peer->state() != Thread::State::Stopped) {
peer->send_signal(SIGSTOP, &caller);