)]}'
{
  "commit": "bcd5cff7216f9b2de0a148cc355eac199dc6f1cf",
  "tree": "384674b2b0e16e489f591148982046bf2d25608b",
  "parents": [
    "899e3ee404961a90b828ad527573aaaac39f0ab1"
  ],
  "author": {
    "name": "Peter Zijlstra",
    "email": "a.p.zijlstra@chello.nl",
    "time": "Mon Oct 17 11:50:30 2011 +0200"
  },
  "committer": {
    "name": "Thomas Gleixner",
    "email": "tglx@linutronix.de",
    "time": "Tue Oct 18 11:36:59 2011 +0200"
  },
  "message": "cputimer: Cure lock inversion\n\nThere\u0027s a lock inversion between the cputimer-\u003elock and rq-\u003elock;\nnotably the two callchains involved are:\n\n update_rlimit_cpu()\n   sighand-\u003esiglock\n   set_process_cpu_timer()\n     cpu_timer_sample_group()\n       thread_group_cputimer()\n         cputimer-\u003elock\n         thread_group_cputime()\n           task_sched_runtime()\n             -\u003epi_lock\n             rq-\u003elock\n\n scheduler_tick()\n   rq-\u003elock\n   task_tick_fair()\n     update_curr()\n       account_group_exec()\n         cputimer-\u003elock\n\nWhere the first one is enabling a CLOCK_PROCESS_CPUTIME_ID timer, and\nthe second one is keeping up-to-date.\n\nThis problem was introduced by e8abccb7193 (\"posix-cpu-timers: Cure\nSMP accounting oddities\").\n\nCure the problem by removing the cputimer-\u003elock and rq-\u003elock nesting,\nthis leaves concurrent enablers doing duplicate work, but the time\nwasted should be on the same order otherwise wasted spinning on the\nlock and the greater-than assignment filter should ensure we preserve\nmonotonicity.\n\nReported-by: Dave Jones \u003cdavej@redhat.com\u003e\nReported-by: Simon Kirby \u003csim@hostway.ca\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: stable@kernel.org\nCc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nLink: http://lkml.kernel.org/r/1318928713.21167.4.camel@twins\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "c8008dd58ef25da2d46c1563035f7a3801cfb187",
      "old_mode": 33188,
      "old_path": "kernel/posix-cpu-timers.c",
      "new_id": "640ded8f5c48299e32d30660f47e6dc862eb2933",
      "new_mode": 33188,
      "new_path": "kernel/posix-cpu-timers.c"
    }
  ]
}
