From bcf2a7632c97c0ebc3dc82d1c51d720894892e98 Mon Sep 17 00:00:00 2001 From: Ylarod Date: Thu, 6 Nov 2025 21:29:56 +0800 Subject: [PATCH] add mutex for sucompat mark --- kernel/sucompat.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/kernel/sucompat.c b/kernel/sucompat.c index 12a16c56..5f550796 100644 --- a/kernel/sucompat.c +++ b/kernel/sucompat.c @@ -1,4 +1,5 @@ #include "linux/compiler.h" +#include "linux/printk.h" #include "selinux/selinux.h" #include #include @@ -501,9 +502,11 @@ static struct kprobe *pts_kp = NULL; #ifdef CONFIG_KRETPROBES static int tracepoint_reg_count = 0; +static DEFINE_MUTEX(tracepoint_reg_mutex); static int syscall_regfunc_handler(struct kretprobe_instance *ri, struct pt_regs *regs) { + mutex_lock(&tracepoint_reg_mutex); if (tracepoint_reg_count < 1) { // while install our tracepoint, mark our processes unmark_all_process(); @@ -513,11 +516,13 @@ static int syscall_regfunc_handler(struct kretprobe_instance *ri, struct pt_regs mark_all_process(); } tracepoint_reg_count++; + mutex_unlock(&tracepoint_reg_mutex); return 0; } static int syscall_unregfunc_handler(struct kretprobe_instance *ri, struct pt_regs *regs) { + mutex_lock(&tracepoint_reg_mutex); if (tracepoint_reg_count <= 1) { // while uninstall our tracepoint, unmark all processes unmark_all_process(); @@ -527,6 +532,7 @@ static int syscall_unregfunc_handler(struct kretprobe_instance *ri, struct pt_re ksu_mark_running_process(); } tracepoint_reg_count--; + mutex_unlock(&tracepoint_reg_mutex); return 0; }