diff --git a/re_kernel/README.md b/re_kernel/README.md index 06d97bd..dcc9062 100644 --- a/re_kernel/README.md +++ b/re_kernel/README.md @@ -4,7 +4,8 @@ ## 更新记录 ### pre -同步LKM +同步LKM
+保留最早的异步消息 ### 6.0.8 由于 4.x 和 5.x 版本差异过大, 去除 /proc/rekernel/ 的读写权限
更加小心的清理过时消息
diff --git a/re_kernel/re_kernel.c b/re_kernel/re_kernel.c index ccab0a5..be28969 100644 --- a/re_kernel/re_kernel.c +++ b/re_kernel/re_kernel.c @@ -118,11 +118,9 @@ binder_proc_alloc_offset = UZERO, binder_proc_context_offset = UZERO, binder_pro binder_alloc_pid_offset = UZERO, binder_alloc_buffer_size_offset = UZERO, binder_alloc_free_async_space_offset = UZERO, binder_alloc_vma_offset = UZERO, // 实际上会被编译器优化为 bool binder_transaction_buffer_release_ver6 = UZERO, binder_transaction_buffer_release_ver5 = UZERO, binder_transaction_buffer_release_ver4 = UZERO; -#include "re_offsets.c" -static struct sock* rekernel_netlink; -static unsigned long rekernel_netlink_unit = UZERO, trace = UZERO; -static struct proc_dir_entry* rekernel_dir, * rekernel_unit_entry; +static unsigned long trace = UZERO; +#include "re_offsets.c" // binder_node_lock static inline void binder_node_lock(struct binder_node* node) { @@ -163,6 +161,9 @@ static inline bool frozen_task_group(struct task_struct* task) { } // 创建 netlink 服务 +static struct sock* rekernel_netlink; +static unsigned long rekernel_netlink_unit = UZERO; +static struct proc_dir_entry* rekernel_dir, * rekernel_unit_entry; static const struct file_operations rekernel_unit_fops = {}; static int start_rekernel_server(void) { @@ -347,7 +348,7 @@ static struct binder_transaction* binder_find_outdated_transaction_ilocked(struc struct binder_work* w; bool second = false; - list_for_each_entry(w, target_list, entry) { + list_for_each_entry_reverse(w, target_list, entry) { if (w->type != BINDER_WORK_TRANSACTION) continue; struct binder_transaction* t_queued = container_of(w, struct binder_transaction, work); @@ -443,7 +444,7 @@ static void do_send_sig_info_before(hook_fargs4_t* args, void* udata) { struct task_struct* dst = (struct task_struct*)args->arg2; if (sig == SIGKILL || sig == SIGTERM || sig == SIGABRT || sig == SIGQUIT) { - rekernel_report(SIGNAL, sig, task_tgid(current), current, task_tgid(dst), dst, NULL); + rekernel_report(SIGNAL, sig, task_tgid(current), current, task_tgid(dst), dst, false); } }