diff --git a/kernel/setup.sh b/kernel/setup.sh index bd2ccb98..fe1c672c 100755 --- a/kernel/setup.sh +++ b/kernel/setup.sh @@ -30,7 +30,7 @@ perform_cleanup() { echo "[+] Cleaning up..." [ -L "$DRIVER_DIR/kernelsu" ] && rm "$DRIVER_DIR/kernelsu" && echo "[-] Symlink removed." grep -q "kernelsu" "$DRIVER_MAKEFILE" && sed -i '/kernelsu/d' "$DRIVER_MAKEFILE" && echo "[-] Makefile reverted." - grep -q "drivers/kernelsu/Kconfig" "$DRIVER_KCONFIG" && sed -i '/drivers\/kernelsu\/Kconfig/d' "$DRIVER_KCONFIG" && echo "[-] Kconfig reverted." + grep -q "kernelsu" "$DRIVER_KCONFIG" && sed -i '/kernelsu/d' "$DRIVER_KCONFIG" && echo "[-] Kconfig reverted." if [ -d "$KERNEL_ROOT/KernelSU" ]; then rm -rf "$KERNEL_ROOT/KernelSU" && echo "[-] KernelSU directory deleted." fi @@ -56,20 +56,11 @@ setup_kernelsu() { git checkout "$1" && echo "[-] Checked out $1." || echo "[-] Checkout default branch" fi cd "$DRIVER_DIR" - [ -L "kernelsu" ] || ln -sf "$(realpath --relative-to="$DRIVER_DIR" "$KERNEL_ROOT/KernelSU/kernel")" "kernelsu" && echo "[+] Symlink created." + ln -sf "$(realpath --relative-to="$DRIVER_DIR" "$KERNEL_ROOT/KernelSU/kernel")" "kernelsu" && echo "[+] Symlink created." # Add entries in Makefile and Kconfig if not already existing - if grep -q "kernelsu" "$DRIVER_MAKEFILE" 2>/dev/null; then - echo "[=] Makefile already configured." - else - echo 'obj-$(CONFIG_KSU) += kernelsu/' >> "$DRIVER_MAKEFILE" && echo "[+] Modified Makefile." - fi - - if grep -q 'source "drivers/kernelsu/Kconfig"' "$DRIVER_KCONFIG" 2>/dev/null; then - echo "[=] Kconfig already configured." - else - sed -i '/endmenu/i\source "drivers/kernelsu/Kconfig"' "$DRIVER_KCONFIG" && echo "[+] Modified Kconfig." - fi + grep -q "kernelsu" "$DRIVER_MAKEFILE" || echo 'obj-$(CONFIG_KSU) += kernelsu/' >> "$DRIVER_MAKEFILE" && echo "[+] Modified Makefile." + grep -q 'source "drivers/kernelsu/Kconfig"' "$DRIVER_KCONFIG" || sed -i '/endmenu/i\source "drivers/kernelsu/Kconfig"' "$DRIVER_KCONFIG" && echo "[+] Modified Kconfig." echo '[+] Done.' } diff --git a/kernel/throne_tracker.c b/kernel/throne_tracker.c index 5a05d521..d72de583 100644 --- a/kernel/throne_tracker.c +++ b/kernel/throne_tracker.c @@ -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: