From 04ca981e4d696809468e135dea91c0983f820ae2 Mon Sep 17 00:00:00 2001 From: 5ec1cff <56485584+5ec1cff@users.noreply.github.com> Date: Sat, 15 Nov 2025 17:19:45 +0800 Subject: [PATCH] kernel: no need to remark process on post-fs-data and boot-completed - Remark on post-fs-data may unmark zygote unexpectedly, and there is no necessity to remark on these stages, so simply remove them. --- kernel/ksud.c | 10 +--------- kernel/syscall_hook_manager.c | 5 +++-- 2 files changed, 4 insertions(+), 11 deletions(-) diff --git a/kernel/ksud.c b/kernel/ksud.c index 8f093016..4431231e 100644 --- a/kernel/ksud.c +++ b/kernel/ksud.c @@ -23,7 +23,6 @@ #include "klog.h" // IWYU pragma: keep #include "ksud.h" #include "selinux/selinux.h" -#include "syscall_hook_manager.h" #include "throne_tracker.h" bool ksu_module_mounted __read_mostly = false; @@ -81,8 +80,6 @@ void on_post_fs_data(void) done = true; pr_info("on_post_fs_data!\n"); ksu_load_allow_list(); - pr_info("mark tif for running process\n"); - ksu_mark_running_process(); ksu_observer_init(); // sanity check, this may influence the performance stop_input_hook(); @@ -128,9 +125,6 @@ void on_boot_completed(void){ ksu_boot_completed = true; pr_info("on_boot_completed!\n"); track_throne(true); - // remark process, we don't want to mark other init - // forked process excepte zygote and adbd - ksu_mark_running_process(); } #define MAX_ARG_STRINGS 0x7FFFFFFF @@ -327,7 +321,6 @@ int ksu_handle_execveat_ksud(int *fd, struct filename **filename_ptr, task_work_add(init_task, &on_post_fs_data_cb, TWA_RESUME); } rcu_read_unlock(); - ksu_set_task_tracepoint_flag(current); // we are zygote! stop_execve_hook(); } @@ -662,6 +655,5 @@ void ksu_ksud_exit() // unregister_kprobe(&vfs_read_kp); unregister_kprobe(&input_event_kp); #endif - is_boot_phase = false; -} \ No newline at end of file +} diff --git a/kernel/syscall_hook_manager.c b/kernel/syscall_hook_manager.c index 65430600..14d258aa 100644 --- a/kernel/syscall_hook_manager.c +++ b/kernel/syscall_hook_manager.c @@ -242,7 +242,7 @@ static inline bool check_syscall_fastpath(int nr) } } -// Unmark init's child that are not zygote or adbd +// Unmark init's child that are not zygote, adbd or ksud int ksu_handle_init_mark_tracker(const char __user **filename_user) { char path[64]; @@ -253,7 +253,8 @@ int ksu_handle_init_mark_tracker(const char __user **filename_user) memset(path, 0, sizeof(path)); strncpy_from_user_nofault(path, *filename_user, sizeof(path)); - if (likely(strstr(path, "/app_process") == NULL && strstr(path, "/adbd") == NULL)) { + if (likely(strstr(path, "/app_process") == NULL && strstr(path, "/adbd") == NULL && strstr(path, "/ksud") == NULL)) { + pr_info("hook_manager: unmark %d exec %s", current->pid, path); ksu_clear_task_tracepoint_flag_if_needed(current); }