diff options
author | Ingo Molnar <mingo@elte.hu> | 2011-06-08 16:09:55 +0200 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2011-06-08 16:09:55 +0200 |
commit | 5cf42f7055648aaba68ce95ecec69128d7fbf65f (patch) | |
tree | 1c7e6f1c27f4780de99cd5726b76b6914128f102 /kernel/trace/ftrace.c | |
parent | 86dd7909c2c4ae3f219a9233bf0f095b05632ecf (diff) | |
parent | a4f18ed11a4ddf327dd91cd19e237278600ad327 (diff) |
Merge branch 'tip/perf/urgent-2' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into perf/urgent
Diffstat (limited to 'kernel/trace/ftrace.c')
-rw-r--r-- | kernel/trace/ftrace.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c index 1ee417fcbfa..908038f5744 100644 --- a/kernel/trace/ftrace.c +++ b/kernel/trace/ftrace.c @@ -2740,7 +2740,7 @@ static int ftrace_process_regex(struct ftrace_hash *hash, { char *func, *command, *next = buff; struct ftrace_func_command *p; - int ret; + int ret = -EINVAL; func = strsep(&next, ":"); @@ -3330,6 +3330,7 @@ static int ftrace_process_locs(struct module *mod, { unsigned long *p; unsigned long addr; + unsigned long flags; mutex_lock(&ftrace_lock); p = start; @@ -3346,7 +3347,13 @@ static int ftrace_process_locs(struct module *mod, ftrace_record_ip(addr); } + /* + * Disable interrupts to prevent interrupts from executing + * code that is being modified. + */ + local_irq_save(flags); ftrace_update_code(mod); + local_irq_restore(flags); mutex_unlock(&ftrace_lock); return 0; |