kern: add new KCapability checks before creating process

This commit is contained in:
Michael Scire 2022-03-22 14:45:29 -07:00 committed by SciresM
parent 14e768cd10
commit 8cb3cfd835
3 changed files with 48 additions and 5 deletions

View file

@ -116,7 +116,7 @@ namespace ams::kern {
};
enum class RegionType : u32 {
None = 0,
NoMapping = 0,
KernelTraceBuffer = 1,
OnMemoryBootImage = 2,
DTB = 3,
@ -219,6 +219,10 @@ namespace ams::kern {
Result SetHandleTableCapability(const util::BitPack32 cap);
Result SetDebugFlagsCapability(const util::BitPack32 cap);
template<typename F>
static Result ProcessMapRegionCapability(const util::BitPack32 cap, F f);
static Result CheckMapRegion(const util::BitPack32 cap);
Result SetCapability(const util::BitPack32 cap, u32 &set_flags, u32 &set_svc, KProcessPageTable *page_table);
Result SetCapabilities(const u32 *caps, s32 num_caps, KProcessPageTable *page_table);
Result SetCapabilities(svc::KUserPointer<const u32 *> user_caps, s32 num_caps, KProcessPageTable *page_table);
@ -229,6 +233,8 @@ namespace ams::kern {
Result Initialize(const u32 *caps, s32 num_caps, KProcessPageTable *page_table);
Result Initialize(svc::KUserPointer<const u32 *> user_caps, s32 num_caps, KProcessPageTable *page_table);
static Result CheckCapabilities(svc::KUserPointer<const u32 *> user_caps, s32 num_caps);
constexpr u64 GetCoreMask() const { return m_core_mask; }
constexpr u64 GetPriorityMask() const { return m_priority_mask; }
constexpr s32 GetHandleTableSize() const { return m_handle_table_size; }