)]}'
{
  "commit": "11df6dddcbc38affb7473aad3d962baf8414a947",
  "tree": "fb05ef2583a55e69897988491522b92137ca5f26",
  "parents": [
    "89061d3d58e1f0742139605dc6a7950aa1ecc019"
  ],
  "author": {
    "name": "Thomas Gleixner",
    "email": "tglx@linutronix.de",
    "time": "Wed Oct 28 20:26:48 2009 +0100"
  },
  "committer": {
    "name": "Thomas Gleixner",
    "email": "tglx@linutronix.de",
    "time": "Wed Oct 28 20:34:34 2009 +0100"
  },
  "message": "futex: Fix spurious wakeup for requeue_pi really\n\nThe requeue_pi path doesn\u0027t use unqueue_me() (and the racy lock_ptr \u003d\u003d\nNULL test) nor does it use the wake_list of futex_wake() which where\nthe reason for commit 41890f2 (futex: Handle spurious wake up)\n\nSee debugging discussing on LKML Message-ID: \u003c4AD4080C.20703@us.ibm.com\u003e\n\nThe changes in this fix to the wait_requeue_pi path were considered to\nbe a likely unecessary, but harmless safety net. But it turns out that\ndue to the fact that for unknown $@#!*( reasons EWOULDBLOCK is defined\nas EAGAIN we built an endless loop in the code path which returns\ncorrectly EWOULDBLOCK.\n\nSpurious wakeups in wait_requeue_pi code path are unlikely so we do\nthe easy solution and return EWOULDBLOCK^WEAGAIN to user space and let\nit deal with the spurious wakeup.\n\nCc: Darren Hart \u003cdvhltc@us.ibm.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nCc: John Stultz \u003cjohnstul@linux.vnet.ibm.com\u003e\nCc: Dinakar Guniguntala \u003cdino@in.ibm.com\u003e\nLKML-Reference: \u003c4AE23C74.1090502@us.ibm.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "642f3bbaacc7483221ec76aaeb6b1b080b5b8c8f",
      "old_mode": 33188,
      "old_path": "kernel/futex.c",
      "new_id": "fb65e822fc41ae698c282aeadc6933b411aa8a78",
      "new_mode": 33188,
      "new_path": "kernel/futex.c"
    }
  ]
}
