)]}'
{
  "commit": "62af3783e4fd8ba9e28416e8e91cb3bdd9fb133e",
  "tree": "728bed51d0ae2725ade8046ba83794dd5f9944e4",
  "parents": [
    "7ceff013c43c0f38f0d26c79507889c6791c0ea0"
  ],
  "author": {
    "name": "Daisuke Nishimura",
    "email": "nishimura@mxp.nes.nec.co.jp",
    "time": "Thu Dec 15 14:37:41 2011 +0900"
  },
  "committer": {
    "name": "Ingo Molnar",
    "email": "mingo@elte.hu",
    "time": "Wed Dec 21 10:34:52 2011 +0100"
  },
  "message": "sched: Fix cgroup movement of waking process\n\nThere is a small race between try_to_wake_up() and sched_move_task(),\nwhich is trying to move the process being woken up.\n\n    try_to_wake_up() on CPU0       sched_move_task() on CPU1\n--------------------------------+---------------------------------\n  raw_spin_lock_irqsave(p-\u003epi_lock)\n  task_waking_fair()\n    -\u003ep.se.vruntime -\u003d cfs_rq-\u003emin_vruntime\n  ttwu_queue()\n    -\u003esend reschedule IPI to CPU1\n  raw_spin_unlock_irqsave(p-\u003epi_lock)\n                                   task_rq_lock()\n                                     -\u003e tring to aquire both p-\u003epi_lock and\n                                        rq-\u003elock with IRQ disabled\n                                   task_move_group_fair()\n                                     -\u003e p.se.vruntime\n                                          -\u003d (old)cfs_rq-\u003emin_vruntime\n                                          +\u003d (new)cfs_rq-\u003emin_vruntime\n                                   task_rq_unlock()\n\n                                   (via IPI)\n                                   sched_ttwu_pending()\n                                     raw_spin_lock(rq-\u003elock)\n                                     ttwu_do_activate()\n                                       ...\n                                       enqueue_entity()\n                                         child.se-\u003evruntime +\u003d cfs_rq-\u003emin_vruntime\n                                     raw_spin_unlock(rq-\u003elock)\n\nAs a result, vruntime of the process becomes far bigger than min_vruntime,\nif (new)cfs_rq-\u003emin_vruntime \u003e\u003e (old)cfs_rq-\u003emin_vruntime.\n\nThis patch fixes this problem by just ignoring such process in\ntask_move_group_fair(), because the vruntime has already been normalized in\ntask_waking_fair().\n\nSigned-off-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Tejun Heo \u003ctj@kernel.org\u003e\nLink: http://lkml.kernel.org/r/20111215143741.df82dd50.nishimura@mxp.nes.nec.co.jp\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "2d1ac6e2386d84cafcd099de5d2902fd22a56d77",
      "old_mode": 33188,
      "old_path": "kernel/sched/fair.c",
      "new_id": "bdf18836f74ed2462f29538c2a7c79cc48793131",
      "new_mode": 33188,
      "new_path": "kernel/sched/fair.c"
    }
  ]
}
