FIX func 'kretprobe_assert'
authorVyacheslav Cherkashin <v.cherkashin@samsung.com>
Tue, 5 Feb 2013 14:23:02 +0000 (18:23 +0400)
committerVyacheslav Cherkashin <v.cherkashin@samsung.com>
Tue, 5 Feb 2013 14:23:02 +0000 (18:23 +0400)
kprobe/dbi_kprobes.c

index 995ca6d..880a0c8 100644 (file)
@@ -88,9 +88,25 @@ atomic_t kprobe_count;
 
 void kretprobe_assert (struct kretprobe_instance *ri, unsigned long orig_ret_address, unsigned long trampoline_address)
 {
-       if (!orig_ret_address || (orig_ret_address == trampoline_address))
+       if (!orig_ret_address || (orig_ret_address == trampoline_address)) {
+               struct task_struct *task;
+               if (ri == NULL) {
+                       panic ("kretprobe BUG!: ri = NULL\n");
+               }
+
+               task = ri->task;
+
+               if (task == NULL) {
+                       panic ("kretprobe BUG!: task = NULL\n");
+               }
+
+               if (ri->rp == NULL) {
+                       panic ("kretprobe BUG!: ri->rp = NULL\n");
+               }
+
                panic ("kretprobe BUG!: Processing kretprobe %p @ %p (%d/%d - %s)\n",
-                               ri->rp, ri->rp->kp.addr, ri->task->tgid, ri->task->pid, ri->task->comm);
+                       ri->rp, ri->rp->kp.addr, ri->task->tgid, ri->task->pid, ri->task->comm);
+       }
 }