diff options
author | 2005-07-13 16:23:51 -0400 | |
---|---|---|
committer | 2005-07-13 16:23:51 -0400 | |
commit | 327309e899662b482c58cf25f574513d38b5788c (patch) | |
tree | 069de438aa0e92dd9b6ba28e6b207e2cd07151a5 /kernel/sched.c | |
parent | Merge upstream 2.6.13-rc1-git1 into 'ieee80211' branch of netdev-2.6. (diff) | |
parent | Linux 2.6.13-rc3 (diff) | |
download | linux-dev-327309e899662b482c58cf25f574513d38b5788c.tar.xz linux-dev-327309e899662b482c58cf25f574513d38b5788c.zip |
Merge upstream 2.6.13-rc3 into ieee80211 branch of netdev-2.6.
Diffstat (limited to 'kernel/sched.c')
-rw-r--r-- | kernel/sched.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/kernel/sched.c b/kernel/sched.c index 5f2182d42241..4107db0dc091 100644 --- a/kernel/sched.c +++ b/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(); |