|
@@ -7292,13 +7292,12 @@ void __might_sleep(const char *file, int line, int preempt_offset)
|
|
* since we will exit with TASK_RUNNING make sure we enter with it,
|
|
* since we will exit with TASK_RUNNING make sure we enter with it,
|
|
* otherwise we will destroy state.
|
|
* otherwise we will destroy state.
|
|
*/
|
|
*/
|
|
- if (WARN_ONCE(current->state != TASK_RUNNING,
|
|
|
|
|
|
+ WARN_ONCE(current->state != TASK_RUNNING && current->task_state_change,
|
|
"do not call blocking ops when !TASK_RUNNING; "
|
|
"do not call blocking ops when !TASK_RUNNING; "
|
|
"state=%lx set at [<%p>] %pS\n",
|
|
"state=%lx set at [<%p>] %pS\n",
|
|
current->state,
|
|
current->state,
|
|
(void *)current->task_state_change,
|
|
(void *)current->task_state_change,
|
|
- (void *)current->task_state_change))
|
|
|
|
- __set_current_state(TASK_RUNNING);
|
|
|
|
|
|
+ (void *)current->task_state_change);
|
|
|
|
|
|
___might_sleep(file, line, preempt_offset);
|
|
___might_sleep(file, line, preempt_offset);
|
|
}
|
|
}
|