)]}'
{
  "commit": "beda2c7ea2c15ed01eef00a997d2b0496c3a502d",
  "tree": "17a6849721e2cee1165e7cb95e01718c1120a442",
  "parents": [
    "f4b9a988685da6386d7f9a72df3098bcc3270526"
  ],
  "author": {
    "name": "Darren Hart",
    "email": "dvhltc@us.ibm.com",
    "time": "Sun Aug 09 15:34:39 2009 -0700"
  },
  "committer": {
    "name": "Ingo Molnar",
    "email": "mingo@elte.hu",
    "time": "Mon Aug 10 11:07:03 2009 +0200"
  },
  "message": "futex: Update futex_q lock_ptr on requeue proxy lock\n\nfutex_requeue() can acquire the lock on behalf of a waiter\nearly on or during the requeue loop if it is uncontended or in\nthe event of a lock steal or owner died. On wakeup, the waiter\n(in futex_wait_requeue_pi()) cleans up the pi_state owner using\nthe lock_ptr to protect against concurrent access to the\npi_state. The pi_state is hung off futex_q\u0027s on the requeue\ntarget futex hash bucket so the lock_ptr needs to be updated\naccordingly.\n\nThe problem manifested by triggering the WARN_ON in\nlookup_pi_state() about the pid !\u003d pi_state-\u003eowner-\u003epid.  With\nthis patch, the pi_state is properly guarded against concurrent\naccess via the requeue target hb lock.\n\nThe astute reviewer may notice that there is a window of time\nbetween when futex_requeue() unlocks the hb locks and when\nfutex_wait_requeue_pi() will acquire hb2-\u003elock.  During this\ntime the pi_state and uval are not in sync with the underlying\nrtmutex owner (but the uval does indicate there are waiters, so\nno atomic changes will occur in userspace).  However, this is\nnot a problem. Should a contending thread enter\nlookup_pi_state() and acquire hb2-\u003elock before the ownership is\nfixed up, it will find the pi_state hung off a waiter\u0027s\n(possibly the pending owner\u0027s) futex_q and block on the\nrtmutex.  Once futex_wait_requeue_pi() fixes up the owner, it\nwill also move the pi_state from the old owner\u0027s\ntask-\u003epi_state_list to its own.\n\nv3: Fix plist lock name for application to mainline (rather\n    than -rt) Compile tested against tip/v2.6.31-rc5.\n\nSigned-off-by: Darren Hart \u003cdvhltc@us.ibm.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nCc: Dinakar Guniguntala \u003cdino@in.ibm.com\u003e\nCc: John Stultz \u003cjohnstul@linux.vnet.ibm.com\u003e\nLKML-Reference: \u003c4A7F4EFF.6090903@us.ibm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "0672ff88f159f3041206750b3427fdd68aa0afc1",
      "old_mode": 33188,
      "old_path": "kernel/futex.c",
      "new_id": "8cc3ee1363a0e6faf7d96d5f5a3a99ebf174a150",
      "new_mode": 33188,
      "new_path": "kernel/futex.c"
    }
  ]
}
