)]}'
{
  "commit": "9f96cb1e8bca179a92afa40dfc3c49990f1cfc71",
  "tree": "7d1f921f488aa570083420dc3846856b17a7b2b6",
  "parents": [
    "8792f961ba8057d9f27987def3600253a3ba060f"
  ],
  "author": {
    "name": "Martin Schwidefsky",
    "email": "schwidefsky@de.ibm.com",
    "time": "Mon Oct 01 01:20:13 2007 -0700"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@woody.linux-foundation.org",
    "time": "Mon Oct 01 07:52:23 2007 -0700"
  },
  "message": "robust futex thread exit race\n\nCalling handle_futex_death in exit_robust_list for the different robust\nmutexes of a thread basically frees the mutex.  Another thread might grab\nthe lock immediately which updates the next pointer of the mutex.\nfetch_robust_entry over the next pointer might therefore branch into the\nrobust mutex list of a different thread.  This can cause two problems: 1)\nsome mutexes held by the dead thread are not getting freed and 2) some\nmutexs held by a different thread are freed.\n\nThe next point need to be read before calling handle_futex_death.\n\nSigned-off-by: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nAcked-by: Thomas Gleixner \u003ctglx@linutronix.de\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": "e8935b195e8809fa1a23484d5007feb27887fd63",
      "old_mode": 33188,
      "old_path": "kernel/futex.c",
      "new_id": "fcc94e7b40864afcb72170f19d832f8117e517fc",
      "new_mode": 33188,
      "new_path": "kernel/futex.c"
    },
    {
      "type": "modify",
      "old_id": "7e52eb051f227f557a171e974312d35b9192944a",
      "old_mode": 33188,
      "old_path": "kernel/futex_compat.c",
      "new_id": "2c2e2954b713b2681a5bf120c0097cb2c2affc8c",
      "new_mode": 33188,
      "new_path": "kernel/futex_compat.c"
    }
  ]
}
