mirror of
				https://git.tardis.systems/mirrors/yuzu
				synced 2025-10-31 18:54:14 +01:00 
			
		
		
		
	kernel: fix resource limit imbalance
This commit is contained in:
		
							parent
							
								
									db7b2bc8f1
								
							
						
					
					
						commit
						c57ae803a6
					
				| @ -58,8 +58,8 @@ Result KClientPort::CreateSession(KClientSession** out) { | ||||
|     KSession* session{}; | ||||
| 
 | ||||
|     // Reserve a new session from the resource limit.
 | ||||
|     KScopedResourceReservation session_reservation( | ||||
|         GetCurrentProcessPointer(m_kernel)->GetResourceLimit(), LimitableResource::SessionCountMax); | ||||
|     KScopedResourceReservation session_reservation(GetCurrentProcessPointer(m_kernel), | ||||
|                                                    LimitableResource::SessionCountMax); | ||||
|     R_UNLESS(session_reservation.Succeeded(), ResultLimitReached); | ||||
| 
 | ||||
|     // Allocate a session normally.
 | ||||
|  | ||||
| @ -151,8 +151,8 @@ public: | ||||
|         if (manager->IsDomain()) { | ||||
|             context->AddDomainObject(std::move(iface)); | ||||
|         } else { | ||||
|             kernel.ApplicationProcess()->GetResourceLimit()->Reserve( | ||||
|                 Kernel::LimitableResource::SessionCountMax, 1); | ||||
|             ASSERT(Kernel::GetCurrentProcess(kernel).GetResourceLimit()->Reserve( | ||||
|                 Kernel::LimitableResource::SessionCountMax, 1)); | ||||
| 
 | ||||
|             auto* session = Kernel::KSession::Create(kernel); | ||||
|             session->Initialize(nullptr, 0); | ||||
|  | ||||
| @ -28,7 +28,6 @@ void Controller::ConvertCurrentObjectToDomain(HLERequestContext& ctx) { | ||||
| void Controller::CloneCurrentObject(HLERequestContext& ctx) { | ||||
|     LOG_DEBUG(Service, "called"); | ||||
| 
 | ||||
|     auto& process = *ctx.GetThread().GetOwnerProcess(); | ||||
|     auto session_manager = ctx.GetManager(); | ||||
| 
 | ||||
|     // FIXME: this is duplicated from the SVC, it should just call it instead
 | ||||
| @ -36,11 +35,11 @@ void Controller::CloneCurrentObject(HLERequestContext& ctx) { | ||||
| 
 | ||||
|     // Reserve a new session from the process resource limit.
 | ||||
|     Kernel::KScopedResourceReservation session_reservation( | ||||
|         &process, Kernel::LimitableResource::SessionCountMax); | ||||
|         Kernel::GetCurrentProcessPointer(kernel), Kernel::LimitableResource::SessionCountMax); | ||||
|     ASSERT(session_reservation.Succeeded()); | ||||
| 
 | ||||
|     // Create the session.
 | ||||
|     Kernel::KSession* session = Kernel::KSession::Create(system.Kernel()); | ||||
|     Kernel::KSession* session = Kernel::KSession::Create(kernel); | ||||
|     ASSERT(session != nullptr); | ||||
| 
 | ||||
|     // Initialize the session.
 | ||||
| @ -50,7 +49,7 @@ void Controller::CloneCurrentObject(HLERequestContext& ctx) { | ||||
|     session_reservation.Commit(); | ||||
| 
 | ||||
|     // Register the session.
 | ||||
|     Kernel::KSession::Register(system.Kernel(), session); | ||||
|     Kernel::KSession::Register(kernel, session); | ||||
| 
 | ||||
|     // Register with server manager.
 | ||||
|     session_manager->GetServerManager().RegisterSession(&session->GetServerSession(), | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user