freezer,sched: Rewrite core freezer logic
[linux-2.6-block.git] / kernel / hung_task.c
index bb2354f73dedcaf2c2d82ebebca2d5b9b86d2bf0..f1321c03c32af47c20aaf18ed0fc9a89a57e0be5 100644 (file)
@@ -95,8 +95,8 @@ static void check_hung_task(struct task_struct *t, unsigned long timeout)
         * Ensure the task is not frozen.
         * Also, skip vfork and any other user process that freezer should skip.
         */
-       if (unlikely(t->flags & (PF_FROZEN | PF_FREEZER_SKIP)))
-           return;
+       if (unlikely(READ_ONCE(t->__state) & (TASK_FREEZABLE | TASK_FROZEN)))
+               return;
 
        /*
         * When a freshly created task is scheduled once, changes its state to