[FIX] NULL pointer dereference 09/41909/1
authorVyacheslav Cherkashin <v.cherkashin@samsung.com>
Fri, 19 Jun 2015 05:43:14 +0000 (08:43 +0300)
committerVyacheslav Cherkashin <v.cherkashin@samsung.com>
Fri, 19 Jun 2015 06:27:55 +0000 (09:27 +0300)
when wrong probe type

Change-Id: I581a7e56a6dc5a1692d6607ef7aeea277c374234
Signed-off-by: Vyacheslav Cherkashin <v.cherkashin@samsung.com>
us_manager/sspt/sspt.h
us_manager/sspt/sspt_page.c

index 6524776..3199ae7 100644 (file)
@@ -58,6 +58,7 @@ static inline int sspt_register_usprobe(struct us_ip *ip)
                return -EINVAL;
        }
 
+       up->kp.addr = (kprobe_opcode_t *)ip->orig_addr;
        up->task = ip->page->file->proc->task;
        up->sm = ip->page->file->proc->sm;
 
index 40413a2..a701ecf 100644 (file)
@@ -141,8 +141,6 @@ int sspt_register_page(struct sspt_page *page, struct sspt_file *file)
        int err = 0;
        struct us_ip *ip, *n;
        struct list_head ip_list_tmp;
-       struct uprobe *up;
-       unsigned long addr;
 
        spin_lock(&page->lock);
        if (list_empty(&page->ip_list_no_inst)) {
@@ -160,12 +158,8 @@ int sspt_register_page(struct sspt_page *page, struct sspt_file *file)
        spin_unlock(&page->lock);
 
        list_for_each_entry_safe(ip, n, &ip_list_tmp, list) {
-               /* set uprobe address */
-               addr = file->vm_start + page->offset + ip->offset;
-
-               ip->orig_addr = addr;
-               up = probe_info_get_uprobe(ip->info, ip);
-               up->kp.addr = (kprobe_opcode_t *)addr;
+               /* set virtual address */
+               ip->orig_addr = file->vm_start + page->offset + ip->offset;
 
                err = sspt_register_usprobe(ip);
                if (err) {