if (!se->on_rq)
                        break;
 
-               if (dequeue)
+               if (dequeue) {
                        dequeue_entity(qcfs_rq, se, DEQUEUE_SLEEP);
+               } else {
+                       update_load_avg(qcfs_rq, se, 0);
+                       se_update_runnable(se);
+               }
+
                qcfs_rq->h_nr_running -= task_delta;
                qcfs_rq->idle_h_nr_running -= idle_task_delta;
 
                        enqueue = 0;
 
                cfs_rq = cfs_rq_of(se);
-               if (enqueue)
+               if (enqueue) {
                        enqueue_entity(cfs_rq, se, ENQUEUE_WAKEUP);
+               } else {
+                       update_load_avg(cfs_rq, se, 0);
+                       se_update_runnable(se);
+               }
+
                cfs_rq->h_nr_running += task_delta;
                cfs_rq->idle_h_nr_running += idle_task_delta;