)]}'
{
  "commit": "96347e7759e2e433c427defa0fa1adfc8cce6226",
  "tree": "0b78316c887be06b269288d7306d6cac038fe644",
  "parents": [
    "4b7a1304267bff68260ae861784b27130e805be3"
  ],
  "author": {
    "name": "Oleg Nesterov",
    "email": "oleg@tv-sign.ru",
    "time": "Fri Jul 25 01:47:27 2008 -0700"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@linux-foundation.org",
    "time": "Fri Jul 25 10:53:38 2008 -0700"
  },
  "message": "posix timers: release_posix_timer: kill the bogus put_task_struct(-\u003eit_process);\n\nrelease_posix_timer() can\u0027t be called with -\u003eit_process !\u003d NULL.  Once\nsys_timer_create() sets -\u003eit_process it must not call\nrelease_posix_timer(), otherwise we can race with another thread doing\nsys_timer_delete(), this timer is visible to idr_find() and unlocked.\n\nThe same is true for two other callers (actually, for any possible\ncaller), sys_timer_delete() and itimer_delete().  They must clear\n-\u003eit_process before unlock_timer() + release_posix_timer().\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nAcked-by: Roland McGrath \u003croland@redhat.com\u003e\nCc: john stultz \u003cjohnstul@us.ibm.com\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Roland McGrath \u003croland@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "17f53266fb67680af591cb0b776534ed16c23105",
      "old_mode": 33188,
      "old_path": "kernel/posix-timers.c",
      "new_id": "9a21681aa80f82f0123917725f341a526d484c89",
      "new_mode": 33188,
      "new_path": "kernel/posix-timers.c"
    }
  ]
}
