Kernel: Improved permission tracking logic when dynamic signature manager existence checks are enabled

- Fixed a panic issue caused by repeated scans in certain cases where dynamic signatures were not enabled

Revert: setup.sh: cleanup symlink & config logic (#338)
This commit is contained in:
ShirkNeko
2025-08-19 18:16:09 +08:00
parent f10de68deb
commit 106c10d6f8
2 changed files with 12 additions and 19 deletions

View File

@@ -386,8 +386,10 @@ void track_throne()
struct uid_data *np;
struct uid_data *n;
// Check if any manager exists (traditional or dynamic)
// first, check if manager_uid exist!
bool manager_exist = false;
bool dynamic_manager_exist = false;
list_for_each_entry (np, &uid_list, list) {
// if manager is installed in work profile, the uid in packages.list is still equals main profile
// don't delete it in this case!
@@ -399,10 +401,10 @@ void track_throne()
}
// Check for dynamic managers
if (!manager_exist && ksu_is_dynamic_sign_enabled()) {
if (!dynamic_manager_exist && ksu_is_dynamic_sign_enabled()) {
list_for_each_entry (np, &uid_list, list) {
if (ksu_is_any_manager(np->uid)) {
manager_exist = true;
dynamic_manager_exist = true;
break;
}
}
@@ -417,11 +419,11 @@ void track_throne()
pr_info("Searching manager...\n");
search_manager("/data/app", 2, &uid_list);
pr_info("Search manager finished\n");
} else {
} else if (!dynamic_manager_exist && ksu_is_dynamic_sign_enabled()) {
// Always perform search when called from dynamic sign rescan
pr_info("Performing manager search (may be from dynamic sign rescan)\n");
pr_info("Dynamic sign enabled, Searching manager...\n");
search_manager("/data/app", 2, &uid_list);
pr_info("Manager search completed\n");
pr_info("Search Dynamic sign manager finished\n");
}
prune: