Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0498b635 authored by Ananth N Mavinakayanahalli's avatar Ananth N Mavinakayanahalli Committed by Linus Torvalds
Browse files

[PATCH] kprobes: fix build breakage



The following patch (against 2.6.15-rc5-mm3) fixes a kprobes build break
due to changes introduced in the kprobe locking in 2.6.15-rc5-mm3.  In
addition, the patch reverts back the open-coding of kprobe_mutex.

Signed-off-by: default avatarAnanth N Mavinakayanahalli <ananth@in.ibm.com>
Acked-by: default avatarAnil S Keshavamurthy <anil.s.keshavamurthy@intel.com>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent e597c298
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -80,11 +80,11 @@ void __kprobes arch_disarm_kprobe(struct kprobe *p)
			   (unsigned long) p->addr + sizeof(kprobe_opcode_t));
}

void __kprobes arch_remove_kprobe(struct kprobe *p, struct semaphore *s)
void __kprobes arch_remove_kprobe(struct kprobe *p)
{
	down(s);
	down(&kprobe_mutex);
	free_insn_slot(p->ainsn.insn);
	up(s);
	up(&kprobe_mutex);
}

static inline void prepare_singlestep(struct kprobe *p, struct pt_regs *regs)
+3 −3
Original line number Diff line number Diff line
@@ -220,11 +220,11 @@ void __kprobes arch_disarm_kprobe(struct kprobe *p)
			   (unsigned long) p->addr + sizeof(kprobe_opcode_t));
}

void __kprobes arch_remove_kprobe(struct kprobe *p, struct semaphore *s)
void __kprobes arch_remove_kprobe(struct kprobe *p)
{
	down(s);
	down(&kprobe_mutex);
	free_insn_slot(p->ainsn.insn);
	up(s);
	up(&kprobe_mutex);
}

static inline void save_previous_kprobe(struct kprobe_ctlblk *kcb)
+1 −1
Original line number Diff line number Diff line
@@ -40,7 +40,7 @@ typedef u8 kprobe_opcode_t;

#define JPROBE_ENTRY(pentry)	(kprobe_opcode_t *)pentry
#define ARCH_SUPPORTS_KRETPROBES
#define arch_remove_kprobe(p, s)	do { } while(0)
#define arch_remove_kprobe(p)	do {} while (0)

void kretprobe_trampoline(void);

+1 −1
Original line number Diff line number Diff line
@@ -89,7 +89,7 @@ struct kprobe_ctlblk {
#define IP_RELATIVE_PREDICT_OPCODE	(7)
#define LONG_BRANCH_OPCODE		(0xC)
#define LONG_CALL_OPCODE		(0xD)
#define arch_remove_kprobe(p, s)	do { } while(0)
#define arch_remove_kprobe(p)		do {} while (0)

typedef struct kprobe_opcode {
	bundle_t bundle;
+2 −1
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@
#define  __ARCH_WANT_KPROBES_INSN_SLOT

struct pt_regs;
struct kprobe;

typedef unsigned int kprobe_opcode_t;
#define BREAKPOINT_INSTRUCTION	0x7fe00008	/* trap */
@@ -50,7 +51,7 @@ typedef unsigned int kprobe_opcode_t;

#define ARCH_SUPPORTS_KRETPROBES
void kretprobe_trampoline(void);
extern void arch_remove_kprobe(struct kprobe *p, struct semaphore *s);
extern void arch_remove_kprobe(struct kprobe *p);

/* Architecture specific copy of original instruction */
struct arch_specific_insn {
Loading