When data symbols are not present in kernel image, user needs to add dot(".") before function name explicitly, that he wants to probe in kprobe module on ppc64.
for ex:- When data symbols are missing on ppc64, ==================== [EMAIL PROTECTED] ~]# cat /proc/kallsyms | grep do_fork c00000000006283c T .do_fork ============================== User needs add "." to "do_fork" kp.symbol_name = ".do_fork"; ============================ This makes kprobe modules unportable. Below patch fixes the problem. Signed-off-by: Srinivasa Ds <[EMAIL PROTECTED]> Signed-off-by: Ananth N Mavinakayanahalli <[EMAIL PROTECTED]>
--- include/asm-powerpc/kprobes.h | 6 ++++++ 1 file changed, 6 insertions(+) Index: linux-2.6.21-rc7/include/asm-powerpc/kprobes.h =================================================================== --- linux-2.6.21-rc7.orig/include/asm-powerpc/kprobes.h +++ linux-2.6.21-rc7/include/asm-powerpc/kprobes.h @@ -64,6 +64,12 @@ typedef unsigned int kprobe_opcode_t; addr = *(kprobe_opcode_t **)addr; \ } else if (name[0] != '.') \ addr = *(kprobe_opcode_t **)addr; \ + } else { \ + char dot_name[KSYM_NAME_LEN+1]; \ + dot_name[0] = '.'; \ + dot_name[1] = '\0'; \ + strncat(dot_name, name, KSYM_NAME_LEN); \ + addr = (kprobe_opcode_t *)kallsyms_lookup_name(dot_name); \ } \ }