|
@@ -378,8 +378,14 @@ done:
|
|
* reschedule now, before we try-lock the mutex. This avoids getting
|
|
* reschedule now, before we try-lock the mutex. This avoids getting
|
|
* scheduled out right after we obtained the mutex.
|
|
* scheduled out right after we obtained the mutex.
|
|
*/
|
|
*/
|
|
- if (need_resched())
|
|
|
|
|
|
+ if (need_resched()) {
|
|
|
|
+ /*
|
|
|
|
+ * We _should_ have TASK_RUNNING here, but just in case
|
|
|
|
+ * we do not, make it so, otherwise we might get stuck.
|
|
|
|
+ */
|
|
|
|
+ __set_current_state(TASK_RUNNING);
|
|
schedule_preempt_disabled();
|
|
schedule_preempt_disabled();
|
|
|
|
+ }
|
|
|
|
|
|
return false;
|
|
return false;
|
|
}
|
|
}
|