Merge branch 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab...
[pandora-kernel.git] / kernel / trace / ftrace.c
index 1ee417f..908038f 100644 (file)
@@ -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;