kernel: Fixed an issue where scanning could cause the application to freeze.

This commit is contained in:
ShirkNeko
2025-09-14 21:49:26 +08:00
parent f8abf097d7
commit 6892a23c6a

View File

@@ -652,32 +652,24 @@ static void track_throne_function(void)
if (ksu_is_manager_uid_valid()) {
pr_info("manager is uninstalled, invalidate it!\n");
ksu_invalidate_manager_uid();
goto prune;
}
pr_info("Searching manager...\n");
search_manager("/data/app", 2, &uid_list);
pr_info("Search manager finished\n");
goto prune;
}
// Always perform search when called from dynamic manager rescan
if (ksu_is_dynamic_manager_enabled() && !dynamic_manager_exist) {
// Always perform search when called from dynamic manager rescan
} else if (!dynamic_manager_exist && ksu_is_dynamic_manager_enabled()) {
pr_info("Dynamic sign enabled, Searching manager...\n");
search_manager("/data/app", 2, &uid_list);
pr_info("Search Dynamic sign manager finished\n");
}
// If traditional manager exists but no dynamic manager instances found, do a full search
if (manager_exist && ksu_is_dynamic_manager_enabled() && !dynamic_manager_exist) {
pr_info("Searching manager...\n");
search_manager("/data/app", 2, &uid_list);
pr_info("Search manager finished\n");
}
prune:
// then prune the allowlist
ksu_prune_allowlist(is_uid_exist, &uid_list);
out:
// free uid_list
list_for_each_entry_safe (np, n, &uid_list, list) {
list_for_each_entry_safe(np, n, &uid_list, list) {
list_del(&np->list);
kfree(np);
}