From 7c8343087163326f93e2774c0fd14942d8ceca17 Mon Sep 17 00:00:00 2001 From: Vasiliy Ulyanov Date: Wed, 30 Jan 2013 13:44:40 +0400 Subject: [PATCH] MEC: redesign for swap_backtracer module usage --- kprobe/arch/asm-arm/dbi_kprobes.h | 9 ++------- kprobe/arch/asm-x86/dbi_kprobes.h | 8 ++------ 2 files changed, 4 insertions(+), 13 deletions(-) diff --git a/kprobe/arch/asm-arm/dbi_kprobes.h b/kprobe/arch/asm-arm/dbi_kprobes.h index 42ca319..7c4b0a6 100644 --- a/kprobe/arch/asm-arm/dbi_kprobes.h +++ b/kprobe/arch/asm-arm/dbi_kprobes.h @@ -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)) diff --git a/kprobe/arch/asm-x86/dbi_kprobes.h b/kprobe/arch/asm-x86/dbi_kprobes.h index 0797e87..e08d6b1 100644 --- a/kprobe/arch/asm-x86/dbi_kprobes.h +++ b/kprobe/arch/asm-x86/dbi_kprobes.h @@ -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)) -- 2.7.4