kernel: add multi-manager support

This commit is contained in:
ShirkNeko
2025-07-05 21:26:04 +08:00
parent 4840540038
commit 42b883240e
4 changed files with 438 additions and 17 deletions

View File

@@ -8,6 +8,11 @@
extern uid_t ksu_manager_uid; // DO NOT DIRECT USE
extern bool ksu_is_any_manager(uid_t uid);
extern void ksu_add_manager(uid_t uid, int signature_index);
extern void ksu_remove_manager(uid_t uid);
extern int ksu_get_manager_signature_index(uid_t uid);
static inline bool ksu_is_manager_uid_valid()
{
return ksu_manager_uid != KSU_INVALID_UID;
@@ -15,7 +20,7 @@ static inline bool ksu_is_manager_uid_valid()
static inline bool is_manager()
{
return unlikely(ksu_manager_uid == current_uid().val);
return unlikely(ksu_is_any_manager(current_uid().val) || ksu_manager_uid == current_uid().val);
}
static inline uid_t ksu_get_manager_uid()
@@ -33,4 +38,4 @@ static inline void ksu_invalidate_manager_uid()
ksu_manager_uid = KSU_INVALID_UID;
}
#endif
#endif