diff --git a/kernel/kthread.c b/kernel/kthread.c index ba8502ee9..3da2fbb86 100755 --- a/kernel/kthread.c +++ b/kernel/kthread.c @@ -783,8 +783,16 @@ repeat: * event only cares about the address. */ trace_sched_kthread_work_execute_end(work, func); - } else if (!freezing(current)) + } else if (!freezing(current)) { schedule(); + } else { + /* + * Handle the case where the current remains + * TASK_INTERRUPTIBLE. try_to_freeze() expects + * the current to be TASK_RUNNING. + */ + __set_current_state(TASK_RUNNING); + } try_to_freeze(); cond_resched();