hle: service: sm: Fix GetService setup of session & port.

This commit is contained in:
bunnei 2021-06-09 22:29:18 -07:00
parent 2aa6a8d889
commit ec5674a6ad
2 changed files with 5 additions and 5 deletions

View File

@ -66,7 +66,7 @@ ResultCode KClientPort::CreateSession(KClientSession** out,
// Update the session counts. // Update the session counts.
{ {
// Atomically increment the number of sessions. // Atomically increment the number of sessions.
s32 new_sessions; s32 new_sessions{};
{ {
const auto max = max_sessions; const auto max = max_sessions;
auto cur_sessions = num_sessions.load(std::memory_order_acquire); auto cur_sessions = num_sessions.load(std::memory_order_acquire);

View File

@ -164,18 +164,18 @@ ResultVal<Kernel::KClientSession*> SM::GetServiceImpl(Kernel::HLERequestContext&
R_UNLESS(session_reservation.Succeeded(), Kernel::ResultLimitReached); R_UNLESS(session_reservation.Succeeded(), Kernel::ResultLimitReached);
// Create a new session. // Create a new session.
auto* session = Kernel::KSession::Create(kernel); Kernel::KClientSession* session{};
session->Initialize(&port->GetClientPort(), std::move(name)); port->GetClientPort().CreateSession(std::addressof(session));
// Commit the session reservation. // Commit the session reservation.
session_reservation.Commit(); session_reservation.Commit();
// Enqueue the session with the named port. // Enqueue the session with the named port.
port->EnqueueSession(&session->GetServerSession()); port->EnqueueSession(&session->GetParent()->GetServerSession());
LOG_DEBUG(Service_SM, "called service={} -> session={}", name, session->GetId()); LOG_DEBUG(Service_SM, "called service={} -> session={}", name, session->GetId());
return MakeResult(&session->GetClientSession()); return MakeResult(session);
} }
void SM::RegisterService(Kernel::HLERequestContext& ctx) { void SM::RegisterService(Kernel::HLERequestContext& ctx) {