From fccd03c17d9f6f5546299eeb99d562d037b049b4 Mon Sep 17 00:00:00 2001 From: Jim Houston Date: Sun, 30 Jul 2006 03:03:39 -0700 Subject: [PATCH] --- yaml --- r: 32941 b: refs/heads/master c: 2d7d253548cffdce80f4e03664686e9ccb1b0ed7 h: refs/heads/master i: 32939: b334eb152b3535f40555c3ec0bfcb617be270080 v: v3 --- [refs] | 2 +- trunk/kernel/sched.c | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/[refs] b/[refs] index e67dba4649e2..86b422080351 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 6ea24f9ad18c65cc179593b5cc2a88cdadf8cc0c +refs/heads/master: 2d7d253548cffdce80f4e03664686e9ccb1b0ed7 diff --git a/trunk/kernel/sched.c b/trunk/kernel/sched.c index 41a571806ce0..de440b220b4c 100644 --- a/trunk/kernel/sched.c +++ b/trunk/kernel/sched.c @@ -4456,9 +4456,9 @@ asmlinkage long sys_sched_yield(void) return 0; } -static inline int __resched_legal(void) +static inline int __resched_legal(int expected_preempt_count) { - if (unlikely(preempt_count())) + if (unlikely(preempt_count() != expected_preempt_count)) return 0; if (unlikely(system_state != SYSTEM_RUNNING)) return 0; @@ -4484,7 +4484,7 @@ static void __cond_resched(void) int __sched cond_resched(void) { - if (need_resched() && __resched_legal()) { + if (need_resched() && __resched_legal(0)) { __cond_resched(); return 1; } @@ -4510,7 +4510,7 @@ int cond_resched_lock(spinlock_t *lock) ret = 1; spin_lock(lock); } - if (need_resched() && __resched_legal()) { + if (need_resched() && __resched_legal(1)) { spin_release(&lock->dep_map, 1, _THIS_IP_); _raw_spin_unlock(lock); preempt_enable_no_resched(); @@ -4526,7 +4526,7 @@ int __sched cond_resched_softirq(void) { BUG_ON(!in_softirq()); - if (need_resched() && __resched_legal()) { + if (need_resched() && __resched_legal(0)) { raw_local_irq_disable(); _local_bh_enable(); raw_local_irq_enable();