Re: [PATCH][bugfix] kprobes: fix module compilation error with CONFIG_KPROBES=n

Masami Hiramatsu
2009-01-14T16:31:43Z

Andrew Morton wrote:
> On Mon, 05 Jan 2009 17:23:05 -0500 Masami Hiramatsu <mhiramat@redhat.com> wrote:
>
>> Define kprobes related data structures even if CONFIG_KPROBES is not set.
>> This fixes compilation errors which occur if CONFIG_KPROBES is not set, in
>> kprobe using modules.
>>
>> Reviewed-by: Ananth N Mavinakayanahalli <ananth@in.ibm.com>
>> Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com>
>> ---
>> include/linux/kprobes.h | 45 +++++++++++++++++++++++----------------------
>> 1 file changed, 23 insertions(+), 22 deletions(-)
>>
>> Index: 2.6.28/include/linux/kprobes.h
>> ===================================================================
>> --- 2.6.28.orig/include/linux/kprobes.h
>> +++ 2.6.28/include/linux/kprobes.h
>> @@ -37,9 +37,9 @@
>> #include <linux/spinlock.h>
>> #include <linux/rcupdate.h>
>> #include <linux/mutex.h>
>> +#include <asm/kprobes.h>
>>
>> #ifdef CONFIG_KPROBES
>> -#include <asm/kprobes.h>
>>
>
> The above change breaks alpha, and any other architecture which has no
> asm/kprobes.h.

Oops, indeed. Thank you for finding it!

> I undid that change, but maybe that rebroke things?

Yes, some structures should be defined in asm/kprobes.h, so
here is an additional fix patch.

------------------------------------------------------
From: Masami Hiramatsu <mhiramat@redhat.com>

Add dummy definitions of kprobe_opcode_t and arch_specific_insn
when CONFIG_KPROBES=n.

Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com>
---
include/linux/kprobes.h | 4 ++++
1 file changed, 4 insertions(+)

Index: 2.6-mm/include/linux/kprobes.h
===================================================================
--- 2.6-mm.orig/include/linux/kprobes.h
+++ 2.6-mm/include/linux/kprobes.h
@@ -50,6 +50,10 @@
/* Attach to insert probes on any functions which should be ignored*/
#define __kprobes __attribute__((__section__(".kprobes.text"))) notrace
#else /* CONFIG_KPROBES */
+typedef int kprobe_opcode_t;
+struct arch_specific_insn {
+ int dummy;
+};
#define __kprobes notrace
#endif /* CONFIG_KPROBES */