1. Wrapper for creds:
* Some older kernel does not have {.val}, so, for nicer compatibility support and clean code,
make some wrapper for credential use.
* After this change, do not use current_uid().val, instead, use ksu_current_uid(). For more
info, check kernel/include/ksu_creds.h.
2. Refine disable_seccomp (need to add k6.11+ support)
https://github.com/tiann/KernelSU/pull/2708
https://github.com/tiann/KernelSU/issues/2706
3. Revert "Handle unmount for isolated process correctly"
Reason: https://github.com/tiann/KernelSU/pull/2696#issuecomment-3181866301
Co-authored-by: Wang Han <416810799@qq.com>
Co-authored-by: rsuntk <rsuntk@yukiprjkt.my.id>
42 lines
900 B
C
42 lines
900 B
C
#ifndef __KSU_H_KSU_MANAGER
|
|
#define __KSU_H_KSU_MANAGER
|
|
|
|
#include <linux/cred.h>
|
|
#include <linux/types.h>
|
|
#include "include/ksu_creds.h"
|
|
|
|
#define KSU_INVALID_UID -1
|
|
|
|
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;
|
|
}
|
|
|
|
static inline bool ksu_is_manager()
|
|
{
|
|
return unlikely(ksu_is_any_manager(ksu_current_uid()) || ksu_manager_uid == ksu_current_uid());
|
|
}
|
|
|
|
static inline uid_t ksu_get_manager_uid()
|
|
{
|
|
return ksu_manager_uid;
|
|
}
|
|
|
|
static inline void ksu_set_manager_uid(uid_t uid)
|
|
{
|
|
ksu_manager_uid = uid;
|
|
}
|
|
|
|
static inline void ksu_invalidate_manager_uid()
|
|
{
|
|
ksu_manager_uid = KSU_INVALID_UID;
|
|
}
|
|
|
|
#endif |