gcov: fix softlockups
[linux-2.6-block.git] / kernel / gcov / base.c
index b358a802fd184391ae4926bc02b2983511bc8077..a744098e4eb76f16624bdf7090676b864e413028 100644 (file)
@@ -18,6 +18,7 @@
 #include <linux/init.h>
 #include <linux/module.h>
 #include <linux/mutex.h>
+#include <linux/sched.h>
 #include "gcov.h"
 
 static int gcov_events_enabled;
@@ -107,8 +108,10 @@ void gcov_enable_events(void)
        gcov_events_enabled = 1;
 
        /* Perform event callback for previously registered entries. */
-       while ((info = gcov_info_next(info)))
+       while ((info = gcov_info_next(info))) {
                gcov_event(GCOV_ADD, info);
+               cond_resched();
+       }
 
        mutex_unlock(&gcov_lock);
 }