]> err.no Git - linux-2.6/commitdiff
ftrace: prevent ftrace modifications while being kprobe'd, v2
authorAbhishek Sagar <sagar.abhishek@gmail.com>
Thu, 26 Jun 2008 17:21:51 +0000 (22:51 +0530)
committerIngo Molnar <mingo@elte.hu>
Thu, 3 Jul 2008 12:46:24 +0000 (14:46 +0200)
add two missing chunks for ftrace+kprobe.

Signed-off-by: Abhishek Sagar <sagar.abhishek@gmail.com>
Cc: Steven Rostedt <rostedt@goodmis.org>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
kernel/trace/ftrace.c

index 85e84133541745770b9c506c6e1b16326b8cb370..0f271c45cd02c9ed2b4130f30f7c8a8d40117dfc 100644 (file)
@@ -502,8 +502,12 @@ static void ftrace_replace_code(int enable)
                                continue;
 
                        /* ignore updates to this record's mcount site */
-                       if (get_kprobe((void *)rec->ip))
+                       if (get_kprobe((void *)rec->ip)) {
+                               freeze_record(rec);
                                continue;
+                       } else {
+                               unfreeze_record(rec);
+                       }
 
                        failed = __ftrace_replace_code(rec, old, new, enable);
                        if (failed && (rec->flags & FTRACE_FL_CONVERTED)) {
@@ -740,7 +744,10 @@ static int __ftrace_update_code(void *ignore)
                                ftrace_del_hash(p);
                                INIT_HLIST_NODE(&p->node);
                                hlist_add_head(&p->node, &temp_list);
+                               freeze_record(p);
                                continue;
+                       } else {
+                               unfreeze_record(p);
                        }
 
                        /* convert record (i.e, patch mcount-call with NOP) */