hle: service: sm: GetService: Reserve session resource when we create a KSession.

This commit is contained in:
bunnei 2021-05-10 16:12:01 -07:00
parent 21671d05a3
commit 49c4c329f6

View file

@ -133,9 +133,16 @@ void SM::GetService(Kernel::HLERequestContext& ctx) {
auto* port = result.Unwrap(); auto* port = result.Unwrap();
Kernel::KScopedResourceReservation session_reservation(
kernel.CurrentProcess()->GetResourceLimit(), Kernel::LimitableResource::Sessions);
R_UNLESS(session_reservation.Succeeded(), Kernel::ResultLimitReached);
auto* session = Kernel::KSession::Create(kernel); auto* session = Kernel::KSession::Create(kernel);
session->Initialize(&port->GetClientPort(), std::move(name)); session->Initialize(&port->GetClientPort(), std::move(name));
// Commit the session reservation.
session_reservation.Commit();
if (port->GetServerPort().GetHLEHandler()) { if (port->GetServerPort().GetHLEHandler()) {
port->GetServerPort().GetHLEHandler()->ClientConnected(&session->GetServerSession()); port->GetServerPort().GetHLEHandler()->ClientConnected(&session->GetServerSession());
} else { } else {