From ba9b08f478b7543e64574ebfc3654cf33e6310b2 Mon Sep 17 00:00:00 2001 From: Ingo Molnar Date: Thu, 7 Jul 2005 17:57:04 -0700 Subject: [PATCH] --- yaml --- r: 4269 b: refs/heads/master c: 5bbcfd9000887c0da7d57cc7b3ac869fc0dd5aa9 h: refs/heads/master i: 4267: e76750d7dcb6a5081ca870aff716f1f9ba10c4e6 v: v3 --- [refs] | 2 +- trunk/kernel/sched.c | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index f948e0acd65d..a5bb623d0b09 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: a4014d8f61a6a136d22422cf8aa978e6495dbad9 +refs/heads/master: 5bbcfd9000887c0da7d57cc7b3ac869fc0dd5aa9 diff --git a/trunk/kernel/sched.c b/trunk/kernel/sched.c index 5f2182d42241..4107db0dc091 100644 --- a/trunk/kernel/sched.c +++ b/trunk/kernel/sched.c @@ -3877,6 +3877,13 @@ asmlinkage long sys_sched_yield(void) static inline void __cond_resched(void) { + /* + * The BKS might be reacquired before we have dropped + * PREEMPT_ACTIVE, which could trigger a second + * cond_resched() call. + */ + if (unlikely(preempt_count())) + return; do { add_preempt_count(PREEMPT_ACTIVE); schedule();