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>
This commit is contained in:
parent
fbc1963d2c
commit
9c54b6164e
2 changed files with 3 additions and 5 deletions
|
@ -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;
|
||||||
|
|
|
@ -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)
|
||||||
|
|
Loading…
Add table
Reference in a new issue