)]}'
{
  "commit": "8f17fc20bfb75bcec4cfeda789738979c8338fdc",
  "tree": "ec84c5222de58b4d26507c892d0b8f828a6dce7e",
  "parents": [
    "88d113601ca19c82feb038438c8c5db502d146f9"
  ],
  "author": {
    "name": "Oleg Nesterov",
    "email": "oleg@tv-sign.ru",
    "time": "Thu Jun 15 20:11:15 2006 +0400"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@g5.osdl.org",
    "time": "Sat Jun 17 10:52:13 2006 -0700"
  },
  "message": "[PATCH] check_process_timers: fix possible lockup\n\nIf the local timer interrupt happens just after do_exit() sets PF_EXITING\n(and before it clears -\u003eit_xxx_expires) run_posix_cpu_timers() will call\ncheck_process_timers() with tasklist_lock + -\u003esiglock held and\n\n\tcheck_process_timers:\n\n\t\tt \u003d tsk;\n\t\tdo {\n\t\t\t....\n\n\t\t\tdo {\n\t\t\t\tt \u003d next_thread(t);\n\t\t\t} while (unlikely(t-\u003eflags \u0026 PF_EXITING));\n\t\t} while (t !\u003d tsk);\n\nthe outer loop will never stop.\n\nActually, the window is bigger.  Another process can attach the timer\nafter -\u003eit_xxx_expires was cleared (see the next commit) and the \u0027if\n(PF_EXITING)\u0027 check in arm_timer() is racy (see the one after that).\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "520f6c59948d24c55721c2a2299defe964efaadf",
      "old_mode": 33188,
      "old_path": "kernel/posix-cpu-timers.c",
      "new_id": "9d9169aa2e243f8920f305d82e99124bc61d4945",
      "new_mode": 33188,
      "new_path": "kernel/posix-cpu-timers.c"
    }
  ]
}
