kprobes: Use kernel_text_address() for checking probe address
authorMasami Hiramatsu <mhiramat@redhat.com>
Tue, 28 Jul 2009 23:47:23 +0000 (19:47 -0400)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 30 Jul 2009 23:44:06 +0000 (16:44 -0700)
Use kernel_text_address() for checking probe address instead of
__kernel_text_address(), because __kernel_text_address() returns true
for init functions even after relaseing those functions.

That will hit a BUG() in text_poke().

Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com>
Cc: Ananth N Mavinakayanahalli <ananth@in.ibm.com>
Cc: Jim Keniston <jkenisto@us.ibm.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
kernel/kprobes.c

index 16b5739..0540948 100644 (file)
@@ -694,7 +694,7 @@ int __kprobes register_kprobe(struct kprobe *p)
        p->addr = addr;
 
        preempt_disable();
-       if (!__kernel_text_address((unsigned long) p->addr) ||
+       if (!kernel_text_address((unsigned long) p->addr) ||
            in_kprobes_functions((unsigned long) p->addr)) {
                preempt_enable();
                return -EINVAL;