[REFACTOR] new interface get_uprobe()
authorVyacheslav Cherkashin <v.cherkashin@samsung.com>
Mon, 1 Apr 2013 08:08:32 +0000 (12:08 +0400)
committerVyacheslav Cherkashin <v.cherkashin@samsung.com>
Mon, 1 Apr 2013 08:08:32 +0000 (12:08 +0400)
-struct kprobe *get_uprobe(kprobe_opcode_t *addr, pid_t tgid)
+struct uprobe *get_uprobe(kprobe_opcode_t *addr, pid_t tgid)

uprobe/arch/asm-arm/swap_uprobes.c
uprobe/swap_uprobes.c
uprobe/swap_uprobes.h

index 2e68936..eefe833 100644 (file)
@@ -687,7 +687,7 @@ static int uprobe_handler(struct pt_regs *regs)
        pid_t tgid = task->tgid;
        struct kprobe *p;
 
-       p = get_uprobe(addr, tgid);
+       p = &get_uprobe(addr, tgid)->kp;
 
        if (p && (check_validity_insn(p, regs, task) != 0)) {
                printk("no_uprobe live\n");
index 99cfbba..f1fd201 100644 (file)
@@ -276,7 +276,7 @@ static void init_uretprobe_inst_table(void)
        }
 }
 
-struct kprobe *get_uprobe(kprobe_opcode_t *addr, pid_t tgid)
+struct uprobe *get_uprobe(kprobe_opcode_t *addr, pid_t tgid)
 {
        struct hlist_head *head;
        struct hlist_node *node;
@@ -285,7 +285,7 @@ struct kprobe *get_uprobe(kprobe_opcode_t *addr, pid_t tgid)
        head = &uprobe_table[hash_ptr(addr, UPROBE_HASH_BITS)];
        hlist_for_each_entry_rcu(p, node, head, hlist) {
                if (p->addr == addr && p->tgid == tgid) {
-                       return p;
+                       return container_of(p, struct uprobe, kp);
                }
        }
 
@@ -539,7 +539,7 @@ int dbi_register_uprobe(struct uprobe *up, int atomic)
 #endif
 
        // get the first item
-       old_p = get_uprobe(p->addr, p->tgid);
+       old_p = &get_uprobe(p->addr, p->tgid)->kp;
        if (old_p) {
 #ifdef CONFIG_ARM
                p->safe_arm = old_p->safe_arm;
@@ -579,7 +579,7 @@ void dbi_unregister_uprobe(struct uprobe *up, int atomic)
        int cleanup_p;
 
        p = &up->kp;
-       old_p = get_uprobe(p->addr, p->tgid);
+       old_p = &get_uprobe(p->addr, p->tgid)->kp;
        if (unlikely(!old_p)) {
                return;
        }
index 1d96dcc..cafc9e1 100644 (file)
@@ -92,7 +92,7 @@ void dbi_unregister_uretprobe(struct uretprobe *rp, int atomic);
 void dbi_unregister_all_uprobes(struct task_struct *task, int atomic);
 
 void dbi_uprobe_return(void);
-struct kprobe *get_uprobe(kprobe_opcode_t *addr, pid_t tgid);
+struct uprobe *get_uprobe(kprobe_opcode_t *addr, pid_t tgid);
 
 void disarm_uprobe(struct kprobe *p, struct task_struct *task);