)]}'
{
  "commit": "f1a11e0576c7a73d759d05d776692b2b2d37172b",
  "tree": "3cb845c4cfd48cdbe0755d057c2698657fb965b5",
  "parents": [
    "b30505c81a9d4adea8b70ecff512b0216929b797"
  ],
  "author": {
    "name": "Thomas Gleixner",
    "email": "tglx@linutronix.de",
    "time": "Tue May 05 19:21:40 2009 +0200"
  },
  "committer": {
    "name": "Thomas Gleixner",
    "email": "tglx@linutronix.de",
    "time": "Fri May 15 15:24:18 2009 +0200"
  },
  "message": "futex: remove the wait queue\n\nThe waitqueue which is used in struct futex_q is a leftover from the\nfutexfd implementation. There is no need to use a waitqueue at all, as\nthe waiting task is the only user of it. The waitqueue just adds\nadditional locking and a loop in the wake up path which both can be\navoided.\n\nWe have already a task reference in struct futex_q which is used for\nPI futexes. Use it for normal futexes as well and just wake up the\ntask directly.\n\nThe logic of signalling the futex wakeup via setting q-\u003elock_ptr to\nNULL is kept with the difference that we set it NULL before doing the\nwakeup. This opens an exit race window vs. a non futex wake up of the\nto be woken up task, which we prevent with get_task_struct /\nput_task_struct on the waiter.\n\n[ Impact: simplification ]\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "aec8bf89bf4e704b6db88e1e67ebb92c1b1fe0f3",
      "old_mode": 33188,
      "old_path": "kernel/futex.c",
      "new_id": "157bfcd725b88de4d9eaf5eb86ef4c1001948a99",
      "new_mode": 33188,
      "new_path": "kernel/futex.c"
    }
  ]
}
