printk("failed to uninstall IPs (%d)!\n", ret);
}
- dbi_unregister_all_uprobes(task, 1);
+ dbi_unregister_all_uprobes(task);
}
out:
static inline int register_usprobe_my(struct task_struct *task, struct us_ip *ip)
{
- return register_usprobe(task, ip, 1);
+ return register_usprobe(task, ip);
}
static inline int unregister_usprobe_my(struct task_struct *task, struct us_ip *ip, enum US_FLAGS flag)
switch (flag) {
case US_UNREGS_PROBE:
- err = unregister_usprobe(task, ip, 1);
+ err = unregister_usprobe(task, ip);
break;
case US_DISARM:
disarm_uprobe(&ip->jprobe.up.kp, task);
EPRINTF ("failed to uninstall IPs (%d)!", ret);
}
- dbi_unregister_all_uprobes(task, 1);
+ dbi_unregister_all_uprobes(task);
}
}
}
put_task_struct (task);
printk("### 1 ### dbi_unregister_all_uprobes:\n");
- dbi_unregister_all_uprobes(task, 1);
+ dbi_unregister_all_uprobes(task);
us_proc_info.tgid = 0;
for(i = 0; i < us_proc_info.libs_count; i++)
us_proc_info.p_libs[i].loaded = 0;
return 0;
}
-int register_usprobe(struct task_struct *task, struct us_ip *ip, int atomic)
+int register_usprobe(struct task_struct *task, struct us_ip *ip)
{
int ret = 0;
ip->jprobe.priv_arg = ip;
ip->jprobe.up.task = task;
ip->jprobe.up.sm = ip->page->file->procs->sm;
- ret = dbi_register_ujprobe(&ip->jprobe, atomic);
+ ret = dbi_register_ujprobe(&ip->jprobe);
if (ret) {
if (ret == -ENOEXEC) {
pack_event_info(ERR_MSG_ID, RECORD_ENTRY, "dp",
ip->retprobe.priv_arg = ip;
ip->retprobe.up.task = task;
ip->retprobe.up.sm = ip->page->file->procs->sm;
- ret = dbi_register_uretprobe(&ip->retprobe, atomic);
+ ret = dbi_register_uretprobe(&ip->retprobe);
if (ret) {
EPRINTF ("dbi_register_uretprobe() failure %d", ret);
return ret;
return 0;
}
-int unregister_usprobe(struct task_struct *task, struct us_ip *ip, int atomic)
+int unregister_usprobe(struct task_struct *task, struct us_ip *ip)
{
- dbi_unregister_ujprobe(&ip->jprobe, atomic);
+ dbi_unregister_ujprobe(&ip->jprobe);
if (ip->flag_retprobe) {
- dbi_unregister_uretprobe(&ip->retprobe, atomic);
+ dbi_unregister_uretprobe(&ip->retprobe);
}
return 0;
int is_libonly(void);
int is_us_instrumentation(void);
-int register_usprobe(struct task_struct *task, struct us_ip *ip, int atomic);
-int unregister_usprobe(struct task_struct *task, struct us_ip *ip, int atomic);
+int register_usprobe(struct task_struct *task, struct us_ip *ip);
+int unregister_usprobe(struct task_struct *task, struct us_ip *ip);
struct dentry *dentry_by_path(const char *path);
int install_otg_ip(unsigned long addr,
return 0;
}
-int arch_prepare_uprobe(struct uprobe *up, struct hlist_head *page_list, int atomic)
+int arch_prepare_uprobe(struct uprobe *up, struct hlist_head *page_list)
{
int ret = 0;
struct kprobe *p = &up->kp;
{
}
-int arch_prepare_uprobe(struct uprobe *up, struct hlist_head *page_list, int atomic);
+int arch_prepare_uprobe(struct uprobe *up, struct hlist_head *page_list);
int setjmp_upre_handler(struct kprobe *p, struct pt_regs *regs);
static inline int longjmp_break_uhandler(struct kprobe *p, struct pt_regs *regs)
}
// ===================================================================
-int dbi_register_uprobe(struct uprobe *up, int atomic)
+int dbi_register_uprobe(struct uprobe *up)
{
int ret = 0;
struct kprobe *p, *old_p;
goto out;
}
- ret = arch_prepare_uprobe(up, &uprobe_insn_pages, atomic);
+ ret = arch_prepare_uprobe(up, &uprobe_insn_pages);
if (ret) {
DBPRINTF("goto out\n", ret);
goto out;
return ret;
}
-void dbi_unregister_uprobe(struct uprobe *up, int atomic)
+void dbi_unregister_uprobe(struct uprobe *up)
{
struct kprobe *p, *old_p, *list_p;
int cleanup_p;
}
}
-int dbi_register_ujprobe(struct ujprobe *jp, int atomic)
+int dbi_register_ujprobe(struct ujprobe *jp)
{
int ret = 0;
jp->up.kp.pre_handler = setjmp_upre_handler;
jp->up.kp.break_handler = longjmp_break_uhandler;
- ret = dbi_register_uprobe(&jp->up, atomic);
+ ret = dbi_register_uprobe(&jp->up);
return ret;
}
-void dbi_unregister_ujprobe(struct ujprobe *jp, int atomic)
+void dbi_unregister_ujprobe(struct ujprobe *jp)
{
- dbi_unregister_uprobe(&jp->up, atomic);
+ dbi_unregister_uprobe(&jp->up);
/*
* Here is an attempt to unregister even those probes that have not been
* installed (hence not added to the hlist).
return 0;
}
-int dbi_register_uretprobe(struct uretprobe *rp, int atomic)
+int dbi_register_uretprobe(struct uretprobe *rp)
{
int i, ret = 0;
struct uretprobe_instance *inst;
rp->nmissed = 0;
/* Establish function entry probe point */
- ret = dbi_register_uprobe(&rp->up, atomic);
+ ret = dbi_register_uprobe(&rp->up);
if (ret) {
free_urp_inst(rp);
goto out;
}
EXPORT_SYMBOL_GPL(dbi_disarm_urp_inst_for_task);
-void dbi_unregister_uretprobe(struct uretprobe *rp, int atomic)
+void dbi_unregister_uretprobe(struct uretprobe *rp)
{
unsigned long flags;
struct uretprobe_instance *ri;
spin_unlock_irqrestore(&uretprobe_lock, flags);
free_urp_inst(rp);
- dbi_unregister_uprobe(&rp->up, atomic);
+ dbi_unregister_uprobe(&rp->up);
}
-void dbi_unregister_all_uprobes(struct task_struct *task, int atomic)
+void dbi_unregister_all_uprobes(struct task_struct *task)
{
struct hlist_head *head;
struct hlist_node *node, *tnode;
struct uprobe *up = container_of(p, struct uprobe, kp);
printk("dbi_unregister_all_uprobes: delete uprobe at %p[%lx] for %s/%d\n",
p->addr, (unsigned long)p->opcode, task->comm, task->pid);
- dbi_unregister_uprobe(up, atomic);
+ dbi_unregister_uprobe(up);
}
}
}
struct task_struct *task;
};
-int dbi_register_uprobe(struct uprobe *p, int atomic);
-void dbi_unregister_uprobe(struct uprobe *p, int atomic);
+int dbi_register_uprobe(struct uprobe *p);
+void dbi_unregister_uprobe(struct uprobe *p);
-int dbi_register_ujprobe(struct ujprobe *jp, int atomic);
-void dbi_unregister_ujprobe(struct ujprobe *jp, int atomic);
+int dbi_register_ujprobe(struct ujprobe *jp);
+void dbi_unregister_ujprobe(struct ujprobe *jp);
-int dbi_register_uretprobe(struct uretprobe *rp, int atomic);
-void dbi_unregister_uretprobe(struct uretprobe *rp, int atomic);
+int dbi_register_uretprobe(struct uretprobe *rp);
+void dbi_unregister_uretprobe(struct uretprobe *rp);
-void dbi_unregister_all_uprobes(struct task_struct *task, int atomic);
+void dbi_unregister_all_uprobes(struct task_struct *task);
void dbi_uprobe_return(void);
struct kprobe *get_ukprobe(void *addr, pid_t tgid);