[PATCH] cond_resched(): fix bogus might_sleep() warning
The BKS might be reacquired before we have dropped PREEMPT_ACTIVE, which could trigger a second could trigger a second cond_resched() call. Bug found by Hirofumi Ogawa. Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
a4014d8f61
commit
5bbcfd9000
|
@ -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();
|
||||
|
|
Loading…
Reference in New Issue