[FEATURE] Put event at trace when insn can't be instrumented
authorDmitry Kovalenko <d.kovalenko@samsung.com>
Fri, 22 Mar 2013 06:56:57 +0000 (10:56 +0400)
committerDmitry Kovalenko <d.kovalenko@samsung.com>
Fri, 22 Mar 2013 06:56:57 +0000 (10:56 +0400)
driver/us_proc_inst.c
kprobe/arch/asm-arm/dbi_kprobes.c

index 6ca87b9..c0f7d46 100644 (file)
@@ -1232,6 +1232,11 @@ int register_usprobe(struct task_struct *task, struct us_ip *ip, int atomic)
        ip->jprobe.priv_arg = ip;
        ret = dbi_register_ujprobe(task, &ip->jprobe, atomic);
        if (ret) {
+               if (ret == -ENOEXEC) {
+                       pack_event_info(ERR_MSG_ID, RECORD_ENTRY, "dp",
+                                       0x1,
+                                       ip->jprobe.kp.addr);
+               }
                DPRINTF ("dbi_register_ujprobe() failure %d", ret);
                return ret;
        }
index eace6cd..db765c4 100644 (file)
@@ -672,7 +672,7 @@ int arch_prepare_uprobe (struct kprobe *p, struct task_struct *task, int atomic)
                        panic ("Failed to write memory %p!\n", p->addr);
                free_insn_slot(&uprobe_insn_pages, task, p->ainsn.insn_arm);
                free_insn_slot(&uprobe_insn_pages, task, p->ainsn.insn_thumb);
-               return -EFAULT;
+               return -ENOEXEC;
        }
        return ret;
 }