summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--kprobe/arch/dbi_kprobes.c4
-rw-r--r--kprobe/dbi_kprobes.c3
-rw-r--r--kprobe/dbi_kprobes_deps.c1
-rw-r--r--kprobe/dbi_kprobes_deps.h1
4 files changed, 8 insertions, 1 deletions
diff --git a/kprobe/arch/dbi_kprobes.c b/kprobe/arch/dbi_kprobes.c
index 3b6cac5a..bcf2bf0e 100644
--- a/kprobe/arch/dbi_kprobes.c
+++ b/kprobe/arch/dbi_kprobes.c
@@ -109,12 +109,14 @@ int arch_init_module_dependencies(void)
exit_addr = swap_ksyms("do_exit");
sys_exit_group_addr = swap_ksyms("sys_exit_group");
do_group_exit_addr = swap_ksyms("do_group_exit");
+ sys_exit_addr = swap_ksyms("sys_exit");
if ((void *)sched_addr == NULL ||
(void *)fork_addr == NULL ||
(void *)exit_addr == NULL ||
(void *)sys_exit_group_addr == NULL ||
- (void *)do_group_exit_addr == NULL) {
+ (void *)do_group_exit_addr == NULL ||
+ (void *)sys_exit_addr == NULL) {
return -ESRCH;
}
diff --git a/kprobe/dbi_kprobes.c b/kprobe/dbi_kprobes.c
index 3ef525da..c0519f29 100644
--- a/kprobe/dbi_kprobes.c
+++ b/kprobe/dbi_kprobes.c
@@ -713,6 +713,9 @@ int dbi_register_kretprobe (struct kretprobe *rp)
} else if ((unsigned long)rp->kp.addr == sys_exit_group_addr) {
rp->kp.pre_handler = NULL;
rp->maxactive = 0;
+ } else if ((unsigned long)rp->kp.addr == sys_exit_addr) {
+ rp->kp.pre_handler = NULL;
+ rp->maxactive = 0;
} else if (rp->maxactive <= 0) {
#if 1//def CONFIG_PREEMPT
rp->maxactive = max (COMMON_RP_NR, 2 * NR_CPUS);
diff --git a/kprobe/dbi_kprobes_deps.c b/kprobe/dbi_kprobes_deps.c
index 87421e21..4f0fa7a1 100644
--- a/kprobe/dbi_kprobes_deps.c
+++ b/kprobe/dbi_kprobes_deps.c
@@ -41,6 +41,7 @@ unsigned long fork_addr;
unsigned long exit_addr;
unsigned long sys_exit_group_addr;
unsigned long do_group_exit_addr;
+unsigned long sys_exit_addr;
#if LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 29)
/* kernel define 'pgd_offset_k' redefinition */
diff --git a/kprobe/dbi_kprobes_deps.h b/kprobe/dbi_kprobes_deps.h
index 706a1ef8..2fb4b12f 100644
--- a/kprobe/dbi_kprobes_deps.h
+++ b/kprobe/dbi_kprobes_deps.h
@@ -104,6 +104,7 @@ extern unsigned long fork_addr;
extern unsigned long exit_addr;
extern unsigned long sys_exit_group_addr;
extern unsigned long do_group_exit_addr;
+extern unsigned long sys_exit_addr;
DECLARE_MOD_DEP_WRAPPER (__flush_anon_page, \
void, struct vm_area_struct *vma, \