소스 검색

Merge branch 'kprobes' of git://git.linaro.org/people/nico/linux into fixes

Russell King 14 년 전
부모
커밋
408133e9dc
3개의 변경된 파일452개의 추가작업 그리고 223개의 파일을 삭제
  1. 3 0
      arch/arm/include/asm/kprobes.h
  2. 447 222
      arch/arm/kernel/kprobes-decode.c
  3. 2 1
      arch/arm/kernel/kprobes.c

+ 3 - 0
arch/arm/include/asm/kprobes.h

@@ -39,10 +39,13 @@ typedef u32 kprobe_opcode_t;
 struct kprobe;
 typedef void (kprobe_insn_handler_t)(struct kprobe *, struct pt_regs *);
 
+typedef unsigned long (kprobe_check_cc)(unsigned long);
+
 /* Architecture specific copy of original instruction. */
 struct arch_specific_insn {
 	kprobe_opcode_t		*insn;
 	kprobe_insn_handler_t	*insn_handler;
+	kprobe_check_cc		*insn_check_cc;
 };
 
 struct prev_kprobe {

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 447 - 222
arch/arm/kernel/kprobes-decode.c


+ 2 - 1
arch/arm/kernel/kprobes.c

@@ -134,7 +134,8 @@ static void __kprobes singlestep(struct kprobe *p, struct pt_regs *regs,
 				 struct kprobe_ctlblk *kcb)
 {
 	regs->ARM_pc += 4;
-	p->ainsn.insn_handler(p, regs);
+	if (p->ainsn.insn_check_cc(regs->ARM_cpsr))
+		p->ainsn.insn_handler(p, regs);
 }
 
 /*

이 변경점에서 너무 많은 파일들이 변경되어 몇몇 파일들은 표시되지 않았습니다.