]> err.no Git - linux-2.6/commitdiff
ftrace: fix updating of ftrace_update_cnt
authorAbhishek Sagar <sagar.abhishek@gmail.com>
Sat, 24 May 2008 18:40:04 +0000 (00:10 +0530)
committerThomas Gleixner <tglx@linutronix.de>
Mon, 26 May 2008 20:52:10 +0000 (22:52 +0200)
Hi Ingo/Steven,

Ftrace currently maintains an update count which includes false updates,
i.e, updates which failed. If anything, such failures should be tracked
by some separate variable, but this patch provides a minimal fix.

Signed-off-by: Abhishek Sagar <sagar.abhishek@gmail.com>
Cc: rostedt@goodmis.org
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
kernel/trace/ftrace.c

index 9b7c54f8a62f9ea50ddad347c86a9cfc8b642b22..1843edc098a6e5a2b76972c63233a657b531497c 100644 (file)
@@ -453,7 +453,7 @@ static void ftrace_shutdown_replenish(void)
        ftrace_pages->next = (void *)get_zeroed_page(GFP_KERNEL);
 }
 
-static void
+static int
 ftrace_code_disable(struct dyn_ftrace *rec)
 {
        unsigned long ip;
@@ -469,7 +469,9 @@ ftrace_code_disable(struct dyn_ftrace *rec)
        if (failed) {
                rec->flags |= FTRACE_FL_FAILED;
                ftrace_free_rec(rec);
+               return 0;
        }
+       return 1;
 }
 
 static int __ftrace_modify_code(void *data)
@@ -617,8 +619,8 @@ static int __ftrace_update_code(void *ignore)
 
                /* all CPUS are stopped, we are safe to modify code */
                hlist_for_each_entry(p, t, &head, node) {
-                       ftrace_code_disable(p);
-                       ftrace_update_cnt++;
+                       if (ftrace_code_disable(p))
+                               ftrace_update_cnt++;
                }
 
        }