aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorAnanth N Mavinakayanahalli <ananth@in.ibm.com>2006-10-02 05:17:30 -0400
committerLinus Torvalds <torvalds@g5.osdl.org>2006-10-02 10:57:16 -0400
commit3a872d89baae821a0f6e2c1055d4b47650661137 (patch)
tree5ac6aa55e04960e02f25ff5079078f975957b1b3 /arch
parent782237a2418e2561a87c86a4832726931adce737 (diff)
[PATCH] Kprobes: Make kprobe modules more portable
In an effort to make kprobe modules more portable, here is a patch that: o Introduces the "symbol_name" field to struct kprobe. The symbol->address resolution now happens in the kernel in an architecture agnostic manner. 64-bit powerpc users no longer have to specify the ".symbols" o Introduces the "offset" field to struct kprobe to allow a user to specify an offset into a symbol. o The legacy mechanism of specifying the kprobe.addr is still supported. However, if both the kprobe.addr and kprobe.symbol_name are specified, probe registration fails with an -EINVAL. o The symbol resolution code uses kallsyms_lookup_name(). So CONFIG_KPROBES now depends on CONFIG_KALLSYMS o Apparantly kprobe modules were the only legitimate out-of-tree user of the kallsyms_lookup_name() EXPORT. Now that the symbol resolution happens in-kernel, remove the EXPORT as suggested by Christoph Hellwig o Modify tcp_probe.c that uses the kprobe interface so as to make it work on multiple platforms (in its earlier form, the code wouldn't work, say, on powerpc) Signed-off-by: Ananth N Mavinakayanahalli <ananth@in.ibm.com> Signed-off-by: Prasanna S Panchamukhi <prasanna@in.ibm.com> Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'arch')
-rw-r--r--arch/i386/Kconfig2
-rw-r--r--arch/ia64/Kconfig2
-rw-r--r--arch/powerpc/Kconfig2
-rw-r--r--arch/sparc64/Kconfig2
-rw-r--r--arch/x86_64/Kconfig2
5 files changed, 5 insertions, 5 deletions
diff --git a/arch/i386/Kconfig b/arch/i386/Kconfig
index 3fd2f256f2be..af219e51734f 100644
--- a/arch/i386/Kconfig
+++ b/arch/i386/Kconfig
@@ -1142,7 +1142,7 @@ source "arch/i386/oprofile/Kconfig"
1142 1142
1143config KPROBES 1143config KPROBES
1144 bool "Kprobes (EXPERIMENTAL)" 1144 bool "Kprobes (EXPERIMENTAL)"
1145 depends on EXPERIMENTAL && MODULES 1145 depends on KALLSYMS && EXPERIMENTAL && MODULES
1146 help 1146 help
1147 Kprobes allows you to trap at almost any kernel address and 1147 Kprobes allows you to trap at almost any kernel address and
1148 execute a callback function. register_kprobe() establishes 1148 execute a callback function. register_kprobe() establishes
diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig
index 0b7f701d5cf7..70f7eb9fed35 100644
--- a/arch/ia64/Kconfig
+++ b/arch/ia64/Kconfig
@@ -516,7 +516,7 @@ source "arch/ia64/oprofile/Kconfig"
516 516
517config KPROBES 517config KPROBES
518 bool "Kprobes (EXPERIMENTAL)" 518 bool "Kprobes (EXPERIMENTAL)"
519 depends on EXPERIMENTAL && MODULES 519 depends on KALLSYMS && EXPERIMENTAL && MODULES
520 help 520 help
521 Kprobes allows you to trap at almost any kernel address and 521 Kprobes allows you to trap at almost any kernel address and
522 execute a callback function. register_kprobe() establishes 522 execute a callback function. register_kprobe() establishes
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
index a0dd1b0ee483..032e6ab5d3c4 100644
--- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig
@@ -1069,7 +1069,7 @@ source "arch/powerpc/oprofile/Kconfig"
1069 1069
1070config KPROBES 1070config KPROBES
1071 bool "Kprobes (EXPERIMENTAL)" 1071 bool "Kprobes (EXPERIMENTAL)"
1072 depends on PPC64 && EXPERIMENTAL && MODULES 1072 depends on PPC64 && KALLSYMS && EXPERIMENTAL && MODULES
1073 help 1073 help
1074 Kprobes allows you to trap at almost any kernel address and 1074 Kprobes allows you to trap at almost any kernel address and
1075 execute a callback function. register_kprobe() establishes 1075 execute a callback function. register_kprobe() establishes
diff --git a/arch/sparc64/Kconfig b/arch/sparc64/Kconfig
index 8d8ca716f7a7..b627f8dbcaad 100644
--- a/arch/sparc64/Kconfig
+++ b/arch/sparc64/Kconfig
@@ -420,7 +420,7 @@ source "arch/sparc64/oprofile/Kconfig"
420 420
421config KPROBES 421config KPROBES
422 bool "Kprobes (EXPERIMENTAL)" 422 bool "Kprobes (EXPERIMENTAL)"
423 depends on EXPERIMENTAL && MODULES 423 depends on KALLSYMS && EXPERIMENTAL && MODULES
424 help 424 help
425 Kprobes allows you to trap at almost any kernel address and 425 Kprobes allows you to trap at almost any kernel address and
426 execute a callback function. register_kprobe() establishes 426 execute a callback function. register_kprobe() establishes
diff --git a/arch/x86_64/Kconfig b/arch/x86_64/Kconfig
index b87a19f0d584..0a5d8e659aa4 100644
--- a/arch/x86_64/Kconfig
+++ b/arch/x86_64/Kconfig
@@ -690,7 +690,7 @@ source "arch/x86_64/oprofile/Kconfig"
690 690
691config KPROBES 691config KPROBES
692 bool "Kprobes (EXPERIMENTAL)" 692 bool "Kprobes (EXPERIMENTAL)"
693 depends on EXPERIMENTAL && MODULES 693 depends on KALLSYMS && EXPERIMENTAL && MODULES
694 help 694 help
695 Kprobes allows you to trap at almost any kernel address and 695 Kprobes allows you to trap at almost any kernel address and
696 execute a callback function. register_kprobe() establishes 696 execute a callback function. register_kprobe() establishes