* Ananth N Mavinakayanahalli ([EMAIL PROTECTED]) wrote: > From: Ananth N Mavinakayanahalli <[EMAIL PROTECTED]> > > This patch adds CONFIG_HAVE_KRETPROBES to the arch/<arch>/Kconfig file > for relevant architectures with kprobes support. This facilitates easy > handling of in-kernel modules (like samples/kprobes/kretprobe_example.c) > that depend on kretprobes being present in the kernel. > > This patch depends on Mathieu Desnoyers' "Instrumentation menu removal" > patchset (http://marc.info/?l=linux-kernel&m=119496432229633&w=2) > > Updated to apply on 2.6.24-rc4-mm1. Thanks to Sam Ravnborg for helping > make the patch more lean. > > V2: Per Mathieu's suggestion, added CONFIG_KRETPROBES and fixed up > dependencies. > > Signed-off-by: Ananth N Mavinakayanahalli <[EMAIL PROTECTED]>
You can add my Acked-by if it helps. Acked-by: Mathieu Desnoyers <[EMAIL PROTECTED]> Mathieu > --- > arch/Kconfig | 7 +++++++ > arch/ia64/Kconfig | 1 + > arch/powerpc/Kconfig | 1 + > arch/s390/Kconfig | 1 + > arch/x86/Kconfig | 1 + > include/asm-ia64/kprobes.h | 1 - > include/asm-powerpc/kprobes.h | 1 - > include/asm-x86/kprobes_32.h | 1 - > include/asm-x86/kprobes_64.h | 1 - > include/linux/kprobes.h | 6 +++--- > kernel/kprobes.c | 8 +++----- > 11 files changed, 17 insertions(+), 12 deletions(-) > > Index: linux-2.6.24-rc4/arch/Kconfig > =================================================================== > --- linux-2.6.24-rc4.orig/arch/Kconfig > +++ linux-2.6.24-rc4/arch/Kconfig > @@ -27,5 +27,12 @@ config KPROBES > for kernel debugging, non-intrusive instrumentation and testing. > If in doubt, say "N". > > +config KRETPROBES > + def_bool y > + depends on KPROBES && HAVE_KRETPROBES > + > config HAVE_KPROBES > def_bool n > + > +config HAVE_KRETPROBES > + def_bool n > Index: linux-2.6.24-rc4/arch/ia64/Kconfig > =================================================================== > --- linux-2.6.24-rc4.orig/arch/ia64/Kconfig > +++ linux-2.6.24-rc4/arch/ia64/Kconfig > @@ -17,6 +17,7 @@ config IA64 > select ARCH_SUPPORTS_MSI > select HAVE_OPROFILE > select HAVE_KPROBES > + select HAVE_KRETPROBES > default y > help > The Itanium Processor Family is Intel's 64-bit successor to > Index: linux-2.6.24-rc4/arch/powerpc/Kconfig > =================================================================== > --- linux-2.6.24-rc4.orig/arch/powerpc/Kconfig > +++ linux-2.6.24-rc4/arch/powerpc/Kconfig > @@ -81,6 +81,7 @@ config PPC > default y > select HAVE_OPROFILE > select HAVE_KPROBES > + select HAVE_KRETPROBES > > config EARLY_PRINTK > bool > Index: linux-2.6.24-rc4/arch/s390/Kconfig > =================================================================== > --- linux-2.6.24-rc4.orig/arch/s390/Kconfig > +++ linux-2.6.24-rc4/arch/s390/Kconfig > @@ -53,6 +53,7 @@ config S390 > def_bool y > select HAVE_OPROFILE > select HAVE_KPROBES > + select HAVE_KRETPROBES > > source "init/Kconfig" > > Index: linux-2.6.24-rc4/arch/x86/Kconfig > =================================================================== > --- linux-2.6.24-rc4.orig/arch/x86/Kconfig > +++ linux-2.6.24-rc4/arch/x86/Kconfig > @@ -20,6 +20,7 @@ config X86 > def_bool y > select HAVE_OPROFILE > select HAVE_KPROBES > + select HAVE_KRETPROBES > > config GENERIC_TIME > def_bool y > Index: linux-2.6.24-rc4/include/asm-ia64/kprobes.h > =================================================================== > --- linux-2.6.24-rc4.orig/include/asm-ia64/kprobes.h > +++ linux-2.6.24-rc4/include/asm-ia64/kprobes.h > @@ -82,7 +82,6 @@ struct kprobe_ctlblk { > struct prev_kprobe prev_kprobe[ARCH_PREV_KPROBE_SZ]; > }; > > -#define ARCH_SUPPORTS_KRETPROBES > #define kretprobe_blacklist_size 0 > > #define SLOT0_OPCODE_SHIFT (37) > Index: linux-2.6.24-rc4/include/asm-powerpc/kprobes.h > =================================================================== > --- linux-2.6.24-rc4.orig/include/asm-powerpc/kprobes.h > +++ linux-2.6.24-rc4/include/asm-powerpc/kprobes.h > @@ -80,7 +80,6 @@ typedef unsigned int kprobe_opcode_t; > #define is_trap(instr) (IS_TW(instr) || IS_TWI(instr)) > #endif > > -#define ARCH_SUPPORTS_KRETPROBES > #define flush_insn_slot(p) do { } while (0) > #define kretprobe_blacklist_size 0 > > Index: linux-2.6.24-rc4/include/asm-x86/kprobes_32.h > =================================================================== > --- linux-2.6.24-rc4.orig/include/asm-x86/kprobes_32.h > +++ linux-2.6.24-rc4/include/asm-x86/kprobes_32.h > @@ -42,7 +42,6 @@ typedef u8 kprobe_opcode_t; > ? (MAX_STACK_SIZE) \ > : (((unsigned long)current_thread_info()) + THREAD_SIZE - (ADDR))) > > -#define ARCH_SUPPORTS_KRETPROBES > #define flush_insn_slot(p) do { } while (0) > > extern const int kretprobe_blacklist_size; > Index: linux-2.6.24-rc4/include/asm-x86/kprobes_64.h > =================================================================== > --- linux-2.6.24-rc4.orig/include/asm-x86/kprobes_64.h > +++ linux-2.6.24-rc4/include/asm-x86/kprobes_64.h > @@ -41,7 +41,6 @@ typedef u8 kprobe_opcode_t; > ? (MAX_STACK_SIZE) \ > : (((unsigned long)current_thread_info()) + THREAD_SIZE - (ADDR))) > > -#define ARCH_SUPPORTS_KRETPROBES > extern const int kretprobe_blacklist_size; > > void kretprobe_trampoline(void); > Index: linux-2.6.24-rc4/include/linux/kprobes.h > =================================================================== > --- linux-2.6.24-rc4.orig/include/linux/kprobes.h > +++ linux-2.6.24-rc4/include/linux/kprobes.h > @@ -125,11 +125,11 @@ struct jprobe { > DECLARE_PER_CPU(struct kprobe *, current_kprobe); > DECLARE_PER_CPU(struct kprobe_ctlblk, kprobe_ctlblk); > > -#ifdef ARCH_SUPPORTS_KRETPROBES > +#ifdef CONFIG_KRETPROBES > extern void arch_prepare_kretprobe(struct kretprobe_instance *ri, > struct pt_regs *regs); > extern int arch_trampoline_kprobe(struct kprobe *p); > -#else /* ARCH_SUPPORTS_KRETPROBES */ > +#else /* CONFIG_KRETPROBES */ > static inline void arch_prepare_kretprobe(struct kretprobe *rp, > struct pt_regs *regs) > { > @@ -138,7 +138,7 @@ static inline int arch_trampoline_kprobe > { > return 0; > } > -#endif /* ARCH_SUPPORTS_KRETPROBES */ > +#endif /* CONFIG_KRETPROBES */ > /* > * Function-return probe - > * Note: > Index: linux-2.6.24-rc4/kernel/kprobes.c > =================================================================== > --- linux-2.6.24-rc4.orig/kernel/kprobes.c > +++ linux-2.6.24-rc4/kernel/kprobes.c > @@ -678,8 +678,7 @@ void __kprobes unregister_jprobe(struct > unregister_kprobe(&jp->kp); > } > > -#ifdef ARCH_SUPPORTS_KRETPROBES > - > +#ifdef CONFIG_KRETPROBES > /* > * This kprobe pre_handler is registered with every kretprobe. When probe > * hits it will set up the return probe. > @@ -762,7 +761,7 @@ int __kprobes register_kretprobe(struct > return ret; > } > > -#else /* ARCH_SUPPORTS_KRETPROBES */ > +#else /* CONFIG_KRETPROBES */ > > int __kprobes register_kretprobe(struct kretprobe *rp) > { > @@ -774,8 +773,7 @@ static int __kprobes pre_handler_kretpro > { > return 0; > } > - > -#endif /* ARCH_SUPPORTS_KRETPROBES */ > +#endif /* CONFIG_KRETPROBES */ > > void __kprobes unregister_kretprobe(struct kretprobe *rp) > { -- Mathieu Desnoyers Computer Engineering Ph.D. Student, Ecole Polytechnique de Montreal OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/