sched/core: Add preempt_count invariant check
authorPeter Zijlstra <peterz@infradead.org>
Tue, 29 Sep 2015 10:18:46 +0000 (12:18 +0200)
committerIngo Molnar <mingo@kernel.org>
Tue, 6 Oct 2015 15:08:20 +0000 (17:08 +0200)
Ingo requested I keep my debug check for the preempt_count invariant.

Requested-by: Ingo Molnar <mingo@kernel.org>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Ingo Molnar <mingo@kernel.org>
kernel/sched/core.c

index 98c4cf8182cf2a1712060d5106eaa9abb2d18344..4554cde2f6f96293be4636fb6e191f3dc0d98096 100644 (file)
@@ -2514,6 +2514,10 @@ static struct rq *finish_task_switch(struct task_struct *prev)
         *
         * Also, see FORK_PREEMPT_COUNT.
         */
+       if (WARN_ONCE(preempt_count() != 2*PREEMPT_DISABLE_OFFSET,
+                     "corrupted preempt_count: %s/%d/0x%x\n",
+                     current->comm, current->pid, preempt_count()))
+               preempt_count_set(FORK_PREEMPT_COUNT);
 
        rq->prev_mm = NULL;
 
This page took 0.029096 seconds and 5 git commands to generate.