Re: [PATCH 1/2 V2] Kprobes: Indicate kretprobe support in arch//Kconfig
* Ananth N Mavinakayanahalli ([EMAIL PROTECTED]) wrote: > From: Ananth N Mavinakayanahalli <[EMAIL PROTECTED]> > > This patch adds CONFIG_HAVE_KRETPROBES to the 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 k
[PATCH 1/2 V2] Kprobes: Indicate kretprobe support in arch//Kconfig
From: Ananth N Mavinakayanahalli <[EMAIL PROTECTED]> This patch adds CONFIG_HAVE_KRETPROBES to the 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]> --- 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)curr