return ret;
}
-void unregister_helper(void)
+void unregister_helper_top(void)
{
/* uninstall kretprobe with 'handle_mm_fault' */
dbi_unregister_kretprobe(&mf_kretprobe);
+}
+void unregister_helper_bottom(void)
+{
/* uninstall kretprobe with 'do_mmap_pgoff' */
dbi_unregister_kretprobe(&mmap_kretprobe);
void uninit_helper(void);
int register_helper(void);
-void unregister_helper(void);
+void unregister_helper_top(void);
+void unregister_helper_bottom(void);
#endif /* _HELPER_H */
struct task_struct *task = proc->task;
struct pf_group *pfg;
struct pl_struct *pls;
- int i;
list_for_each_entry(pfg, &pfg_list, list) {
pls = find_pl_struct(pfg, task);
}
task_lock(task);
- for (i = 0; task->mm == NULL; ++i) {
- task_unlock(task);
- if (i >= 10)
- BUG();
-
- schedule();
- task_lock(task);
- }
-
+ BUG_ON(task->mm == NULL);
sspt_proc_uninstall(proc, task, US_UNREGS_PROBE);
task_unlock(task);
static void do_usm_stop(void)
{
- unregister_helper();
+ unregister_helper_top();
uninstall_all();
+ unregister_helper_bottom();
sspt_proc_free_all();
}