revert: still using workqueue for allowlist
This commit is contained in:
@@ -92,7 +92,10 @@ static uint8_t allow_list_bitmap[PAGE_SIZE] __read_mostly __aligned(PAGE_SIZE);
|
|||||||
|
|
||||||
#define KERNEL_SU_ALLOWLIST "/data/adb/ksu/.allowlist"
|
#define KERNEL_SU_ALLOWLIST "/data/adb/ksu/.allowlist"
|
||||||
|
|
||||||
void save_allow_list(void);
|
static struct work_struct ksu_save_work;
|
||||||
|
static struct work_struct ksu_load_work;
|
||||||
|
|
||||||
|
bool persistent_allow_list(void);
|
||||||
|
|
||||||
void ksu_show_allow_list(void)
|
void ksu_show_allow_list(void)
|
||||||
{
|
{
|
||||||
@@ -252,7 +255,7 @@ out:
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (persist)
|
if (persist)
|
||||||
save_allow_list();
|
persistent_allow_list();
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@@ -352,8 +355,7 @@ bool ksu_get_allow_list(int *array, int *length, bool allow)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// make sure allow list works cross boot
|
void do_save_allow_list(struct work_struct *work)
|
||||||
void save_allow_list(void)
|
|
||||||
{
|
{
|
||||||
u32 magic = FILE_MAGIC;
|
u32 magic = FILE_MAGIC;
|
||||||
u32 version = FILE_FORMAT_VERSION;
|
u32 version = FILE_FORMAT_VERSION;
|
||||||
@@ -395,7 +397,7 @@ exit:
|
|||||||
filp_close(fp, 0);
|
filp_close(fp, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ksu_load_allow_list()
|
void do_load_allow_list(struct work_struct *work)
|
||||||
{
|
{
|
||||||
loff_t off = 0;
|
loff_t off = 0;
|
||||||
ssize_t ret = 0;
|
ssize_t ret = 0;
|
||||||
@@ -480,10 +482,21 @@ void ksu_prune_allowlist(bool (*is_uid_valid)(uid_t, char *, void *), void *data
|
|||||||
mutex_unlock(&allowlist_mutex);
|
mutex_unlock(&allowlist_mutex);
|
||||||
|
|
||||||
if (modified) {
|
if (modified) {
|
||||||
save_allow_list();
|
persistent_allow_list();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// make sure allow list works cross boot
|
||||||
|
bool persistent_allow_list(void)
|
||||||
|
{
|
||||||
|
return ksu_queue_work(&ksu_save_work);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool ksu_load_allow_list(void)
|
||||||
|
{
|
||||||
|
return ksu_queue_work(&ksu_load_work);
|
||||||
|
}
|
||||||
|
|
||||||
void ksu_allowlist_init(void)
|
void ksu_allowlist_init(void)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
@@ -496,6 +509,9 @@ void ksu_allowlist_init(void)
|
|||||||
|
|
||||||
INIT_LIST_HEAD(&allow_list);
|
INIT_LIST_HEAD(&allow_list);
|
||||||
|
|
||||||
|
INIT_WORK(&ksu_save_work, do_save_allow_list);
|
||||||
|
INIT_WORK(&ksu_load_work, do_load_allow_list);
|
||||||
|
|
||||||
init_default_profiles();
|
init_default_profiles();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -504,7 +520,7 @@ void ksu_allowlist_exit(void)
|
|||||||
struct perm_data *np = NULL;
|
struct perm_data *np = NULL;
|
||||||
struct perm_data *n = NULL;
|
struct perm_data *n = NULL;
|
||||||
|
|
||||||
save_allow_list();
|
do_save_allow_list(NULL);
|
||||||
|
|
||||||
// free allowlist
|
// free allowlist
|
||||||
mutex_lock(&allowlist_mutex);
|
mutex_lock(&allowlist_mutex);
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ void ksu_allowlist_init(void);
|
|||||||
|
|
||||||
void ksu_allowlist_exit(void);
|
void ksu_allowlist_exit(void);
|
||||||
|
|
||||||
void ksu_load_allow_list(void);
|
bool ksu_load_allow_list(void);
|
||||||
|
|
||||||
void ksu_show_allow_list(void);
|
void ksu_show_allow_list(void);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user