fixed 'ip->offset'
authorVyacheslav Cherkashin <v.cherkashin@samsung.com>
Wed, 14 Nov 2012 09:47:33 +0000 (13:47 +0400)
committerVyacheslav Cherkashin <v.cherkashin@samsung.com>
Wed, 14 Nov 2012 09:47:33 +0000 (13:47 +0400)
driver/new_dpf.h
kprobe/arch/asm-arm/dbi_kprobes.c

index 917da86..aee2496 100644 (file)
@@ -143,6 +143,7 @@ struct page_probes *page_p_copy(const struct page_probes *page_p)
 
 void page_p_add_ip(struct page_probes *page_p, us_proc_ip_t *ip)
 {
+       ip->offset &= ~PAGE_MASK;
        INIT_LIST_HEAD(&ip->list);
        list_add(&ip->list, &page_p->ip_list);
 }
@@ -336,29 +337,6 @@ static void sort_libs(us_proc_lib_t *p_libs)
 
 #include "storage.h"
 
-static struct page_probes *get_page_p_of_ips(unsigned long page, unsigned long min_index, unsigned long max_index, us_proc_ip_t *p_ips)
-{
-       us_proc_ip_t *ip;
-       unsigned long idx;
-       struct page_probes *page_p = page_p_new(page);
-
-       if (page_p == NULL) {
-               // TODO: error
-               return NULL;
-       }
-
-       for (idx = min_index; idx < max_index; ++idx) {
-               ip = kmalloc(sizeof(*ip), GFP_ATOMIC);
-               memset(ip, 0, sizeof(*ip));
-               ip->offset = p_ips[idx].offset & ~PAGE_MASK;;
-               ip->jprobe = p_ips[idx].jprobe;
-               ip->retprobe = p_ips[idx].retprobe;
-               page_p_add_ip(page_p, ip);
-       }
-
-       return page_p;
-}
-
 static void print_proc_probes(const struct proc_probes *proc_p);
 
 struct proc_probes *get_file_probes(const inst_us_proc_t *task_inst_info)
index f413986..d091871 100644 (file)
@@ -651,7 +651,7 @@ int arch_prepare_uprobe (struct kprobe *p, struct task_struct *task, int atomic)
                return -EINVAL;
        }
        if (!read_proc_vm_atomic (task, (unsigned long) p->addr, &insn, MAX_INSN_SIZE * sizeof(kprobe_opcode_t)))
-               panic ("Failed to read memory tgid=%u %p!\n", task->tgid, p->addr);
+               panic ("Failed to read memory task[tgid=%u, comm=%s] %p!\n", task->tgid, task->comm, p->addr);
        p->opcode = insn[0];
        p->ainsn.insn_arm = get_insn_slot(task, atomic);
        if (!p->ainsn.insn_arm) {