소스 검색

kprobes, x86: Allow kprobes on text_poke/hw_breakpoint

Allow kprobes on text_poke/hw_breakpoint because
those are not related to the critical int3-debug
recursive path of kprobes at this moment.

Signed-off-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Reviewed-by: Steven Rostedt <rostedt@goodmis.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Borislav Petkov <bp@suse.de>
Cc: Fengguang Wu <fengguang.wu@intel.com>
Cc: Jiri Kosina <jkosina@suse.cz>
Cc: Oleg Nesterov <oleg@redhat.com>
Cc: Paul Gortmaker <paul.gortmaker@windriver.com>
Link: http://lkml.kernel.org/r/20140417081807.26341.73219.stgit@ltc230.yrl.intra.hitachi.co.jp
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Masami Hiramatsu 11 년 전
부모
커밋
9c54b6164e
2개의 변경된 파일3개의 추가작업 그리고 5개의 파일을 삭제
  1. 1 2
      arch/x86/kernel/alternative.c
  2. 2 3
      arch/x86/kernel/hw_breakpoint.c

+ 1 - 2
arch/x86/kernel/alternative.c

@@ -5,7 +5,6 @@
 #include <linux/mutex.h>
 #include <linux/mutex.h>
 #include <linux/list.h>
 #include <linux/list.h>
 #include <linux/stringify.h>
 #include <linux/stringify.h>
-#include <linux/kprobes.h>
 #include <linux/mm.h>
 #include <linux/mm.h>
 #include <linux/vmalloc.h>
 #include <linux/vmalloc.h>
 #include <linux/memory.h>
 #include <linux/memory.h>
@@ -551,7 +550,7 @@ void *__init_or_module text_poke_early(void *addr, const void *opcode,
  *
  *
  * Note: Must be called under text_mutex.
  * Note: Must be called under text_mutex.
  */
  */
-void *__kprobes text_poke(void *addr, const void *opcode, size_t len)
+void *text_poke(void *addr, const void *opcode, size_t len)
 {
 {
 	unsigned long flags;
 	unsigned long flags;
 	char *vaddr;
 	char *vaddr;

+ 2 - 3
arch/x86/kernel/hw_breakpoint.c

@@ -32,7 +32,6 @@
 #include <linux/irqflags.h>
 #include <linux/irqflags.h>
 #include <linux/notifier.h>
 #include <linux/notifier.h>
 #include <linux/kallsyms.h>
 #include <linux/kallsyms.h>
-#include <linux/kprobes.h>
 #include <linux/percpu.h>
 #include <linux/percpu.h>
 #include <linux/kdebug.h>
 #include <linux/kdebug.h>
 #include <linux/kernel.h>
 #include <linux/kernel.h>
@@ -424,7 +423,7 @@ EXPORT_SYMBOL_GPL(hw_breakpoint_restore);
  * NOTIFY_STOP returned for all other cases
  * NOTIFY_STOP returned for all other cases
  *
  *
  */
  */
-static int __kprobes hw_breakpoint_handler(struct die_args *args)
+static int hw_breakpoint_handler(struct die_args *args)
 {
 {
 	int i, cpu, rc = NOTIFY_STOP;
 	int i, cpu, rc = NOTIFY_STOP;
 	struct perf_event *bp;
 	struct perf_event *bp;
@@ -511,7 +510,7 @@ static int __kprobes hw_breakpoint_handler(struct die_args *args)
 /*
 /*
  * Handle debug exception notifications.
  * Handle debug exception notifications.
  */
  */
-int __kprobes hw_breakpoint_exceptions_notify(
+int hw_breakpoint_exceptions_notify(
 		struct notifier_block *unused, unsigned long val, void *data)
 		struct notifier_block *unused, unsigned long val, void *data)
 {
 {
 	if (val != DIE_DEBUG)
 	if (val != DIE_DEBUG)