Since __init functions are discarded and its memory freed once initialization completes, It would be better if we enable kprobes to refuse probing __init functions. The attached patchset will do that.
This patch creates non_init_kernel_text_address() to identify non_init text area. Iam open to suggestions for a better functionname. Signed-off-by: Srinivasa DS <[EMAIL PROTECTED]> Signed-off-by: Ananth N Mavinakayanahalli <[EMAIL PROTECTED]> --- include/linux/kernel.h | 2 ++ kernel/extable.c | 16 +++++++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) Index: linux-2.6.24-rc5-mm1/include/linux/kernel.h =================================================================== --- linux-2.6.24-rc5-mm1.orig/include/linux/kernel.h +++ linux-2.6.24-rc5-mm1/include/linux/kernel.h @@ -169,6 +169,8 @@ extern unsigned long long memparse(char extern int core_kernel_text(unsigned long addr); extern int __kernel_text_address(unsigned long addr); extern int kernel_text_address(unsigned long addr); +extern int non_init_kernel_text_address(unsigned long addr); +extern int non_init_core_kernel_text(unsigned long addr); struct pid; extern struct pid *session_of_pgrp(struct pid *pgrp); Index: linux-2.6.24-rc5-mm1/kernel/extable.c =================================================================== --- linux-2.6.24-rc5-mm1.orig/kernel/extable.c +++ linux-2.6.24-rc5-mm1/kernel/extable.c @@ -40,11 +40,18 @@ const struct exception_table_entry *sear return e; } -int core_kernel_text(unsigned long addr) +int non_init_core_kernel_text(unsigned long addr) { if (addr >= (unsigned long)_stext && addr <= (unsigned long)_etext) return 1; + return 0; +} + +int core_kernel_text(unsigned long addr) +{ + if (non_init_core_kernel_text(addr)) + return 1; if (addr >= (unsigned long)_sinittext && addr <= (unsigned long)_einittext) @@ -65,3 +72,10 @@ int kernel_text_address(unsigned long ad return 1; return module_text_address(addr) != NULL; } + +int non_init_kernel_text_address(unsigned long addr) +{ + if (non_init_core_kernel_text(addr)) + return 1; + return module_text_address(addr) != NULL; +} -- 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/