MEC: redesign for swap_backtracer module usage
authorVasiliy Ulyanov <v.ulyanov@samsung.com>
Wed, 30 Jan 2013 09:44:40 +0000 (13:44 +0400)
committerVasiliy Ulyanov <v.ulyanov@samsung.com>
Wed, 30 Jan 2013 09:44:40 +0000 (13:44 +0400)
kprobe/arch/asm-arm/dbi_kprobes.h
kprobe/arch/asm-x86/dbi_kprobes.h

index 42ca319..7c4b0a6 100644 (file)
@@ -108,21 +108,16 @@ static inline int dbi_fp_backtrace(struct task_struct *task, unsigned long *buf,
                int max_cnt)
 {
        int i = 0;
+       struct pt_regs *regs;
 
        struct {
                unsigned long next;
                unsigned long raddr;
        } frame;
 
-       struct pt_regs *regs = task_pt_regs(task);
-
-       /* no frame pointer */
-       if (regs->ARM_fp == 0)
-               return -EFAULT;
-
+       regs = task_pt_regs(task);
        frame.next = regs->ARM_fp;
        frame.raddr = dbi_get_ret_addr(regs);
-       buf[i++] = frame.raddr;
 
        while (frame.next && i < max_cnt) {
                if (read_proc_vm_atomic(task, frame.next - 4, &frame, sizeof(frame))
index 0797e87..e08d6b1 100644 (file)
@@ -141,21 +141,17 @@ static inline int dbi_fp_backtrace(struct task_struct *task, unsigned long *buf,
                int max_cnt)
 {
        int i = 0;
+       struct pt_regs *regs;
 
        struct {
                unsigned long next;
                unsigned long raddr;
        } frame;
 
-       struct pt_regs *regs = task_pt_regs(task);
-
-       /* no frame pointer */
-       if (regs->EREG(bp) == 0)
-               return -EFAULT;
 
+       regs = task_pt_regs(task);
        frame.next = regs->EREG(bp);
        frame.raddr = dbi_get_ret_addr(regs);
-       buf[i++] = frame.raddr;
 
        while (frame.next && i < max_cnt) {
                if (read_proc_vm_atomic(task, frame.next, &frame, sizeof(frame))