Messages in this thread | | | Date | Wed, 13 Dec 2006 21:04:22 +0100 | From | Ingo Molnar <> | Subject | Re: [PATCH] Conditionally check expected_preempt_count in __resched_legal() |
| |
* Mark Fasheh <mark.fasheh@oracle.com> wrote:
> Commit 2d7d253548cffdce80f4e03664686e9ccb1b0ed7 ("fix cond_resched() fix") > introduced an 'expected_preempt_count' parameter to __resched_legal() to fix > a bug where it was returning a false negative when called from > cond_resched_lock() and preemption was enabled. > > Unfortunately this broke things for when preemption is disabled. > preempt_count() will always return zero, thus failing the check against > any value of expected_preempt_count not equal to zero. cond_resched_lock() > for example, passes an expected_preempt_count value of 1. > > So fix the fix for the cond_resched() fix by skipping the check of > preempt_count() against expected_preempt_count when preemption is disabled. > > Credit should go to Sunil Mushran for spotting the bug during testing. > > Signed-off-by: Mark Fasheh <mark.fasheh@oracle.com>
well spotted. I'm wondering whether this piece of code has the highest amount of fixes per line of code ratio in the whole kernel ...
Acked-by: Ingo Molnar <mingo@elte.hu>
Ingo - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |