mirror of
https://github.com/Atmosphere-NX/Atmosphere.git
synced 2025-05-15 23:54:24 -04:00
kern: support null resource limit in KSecureSystemResource
This commit is contained in:
parent
2e204ccbaf
commit
86e4bed056
2 changed files with 15 additions and 6 deletions
|
@ -94,7 +94,11 @@ namespace ams::kern {
|
||||||
static void PostDestroy(uintptr_t arg) { MESOSPHERE_UNUSED(arg); /* ... */ }
|
static void PostDestroy(uintptr_t arg) { MESOSPHERE_UNUSED(arg); /* ... */ }
|
||||||
|
|
||||||
ALWAYS_INLINE size_t CalculateRequiredSecureMemorySize() const {
|
ALWAYS_INLINE size_t CalculateRequiredSecureMemorySize() const {
|
||||||
return CalculateRequiredSecureMemorySize(m_resource_size, m_resource_pool);
|
if (m_resource_limit != nullptr) {
|
||||||
|
return CalculateRequiredSecureMemorySize(m_resource_size, m_resource_pool);
|
||||||
|
} else {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ALWAYS_INLINE size_t GetSize() const { return m_resource_size; }
|
ALWAYS_INLINE size_t GetSize() const { return m_resource_size; }
|
||||||
|
|
|
@ -59,7 +59,9 @@ namespace ams::kern {
|
||||||
memory_reservation.Commit();
|
memory_reservation.Commit();
|
||||||
|
|
||||||
/* Open reference to our resource limit. */
|
/* Open reference to our resource limit. */
|
||||||
m_resource_limit->Open();
|
if (m_resource_limit != nullptr) {
|
||||||
|
m_resource_limit->Open();
|
||||||
|
}
|
||||||
|
|
||||||
/* Set ourselves as initialized. */
|
/* Set ourselves as initialized. */
|
||||||
m_is_initialized = true;
|
m_is_initialized = true;
|
||||||
|
@ -76,11 +78,14 @@ namespace ams::kern {
|
||||||
/* Free our secure memory. */
|
/* Free our secure memory. */
|
||||||
KSystemControl::FreeSecureMemory(m_resource_address, m_resource_size, m_resource_pool);
|
KSystemControl::FreeSecureMemory(m_resource_address, m_resource_size, m_resource_pool);
|
||||||
|
|
||||||
/* Release the memory reservation. */
|
/* Clean up our resource usage. */
|
||||||
m_resource_limit->Release(ams::svc::LimitableResource_PhysicalMemoryMax, this->CalculateRequiredSecureMemorySize());
|
if (m_resource_limit != nullptr) {
|
||||||
|
/* Release the memory reservation. */
|
||||||
|
m_resource_limit->Release(ams::svc::LimitableResource_PhysicalMemoryMax, this->CalculateRequiredSecureMemorySize());
|
||||||
|
|
||||||
/* Close reference to our resource limit. */
|
/* Close reference to our resource limit. */
|
||||||
m_resource_limit->Close();
|
m_resource_limit->Close();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t KSecureSystemResource::CalculateRequiredSecureMemorySize(size_t size, KMemoryManager::Pool pool) {
|
size_t KSecureSystemResource::CalculateRequiredSecureMemorySize(size_t size, KMemoryManager::Pool pool) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue