)]}'
{
  "log": [
    {
      "commit": "0586bed3e8563c2eb89bc7256e30ce633ae06cfb",
      "tree": "7a59610f45f7222f25b3212c53fa28636bb4427c",
      "parents": [
        "b80cd62b7d4406bbe8c573fe4381dcc71a2850fd",
        "dbebbfbb1605f0179e7c0d900d941cc9c45de569"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Mar 15 18:28:30 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Mar 15 18:28:30 2011 -0700"
      },
      "message": "Merge branch \u0027core-locking-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027core-locking-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  rtmutex: tester: Remove the remaining BKL leftovers\n  lockdep/timers: Explain in detail the locking problems del_timer_sync() may cause\n  rtmutex: Simplify PI algorithm and make highest prio task get lock\n  rwsem: Remove redundant asmregparm annotation\n  rwsem: Move duplicate function prototypes to linux/rwsem.h\n  rwsem: Unify the duplicate rwsem_is_locked() inlines\n  rwsem: Move duplicate init macros and functions to linux/rwsem.h\n  rwsem: Move duplicate struct rwsem declaration to linux/rwsem.h\n  x86: Cleanup rwsem_count_t typedef\n  rwsem: Cleanup includes\n  locking: Remove deprecated lock initializers\n  cred: Replace deprecated spinlock initialization\n  kthread: Replace deprecated spinlock initialization\n  xtensa: Replace deprecated spinlock initialization\n  um: Replace deprecated spinlock initialization\n  sparc: Replace deprecated spinlock initialization\n  mips: Replace deprecated spinlock initialization\n  cris: Replace deprecated spinlock initialization\n  alpha: Replace deprecated spinlock initialization\n  rtmutex-tester: Remove BKL tests\n"
    },
    {
      "commit": "6e0aa9f8a8190e0879a29bd67aa606b51734a122",
      "tree": "66b92176051147b87031cc2755639c39f8a900f8",
      "parents": [
        "995612178c88407d8330f580ba6572cb8b284dd8"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Mar 14 10:34:35 2011 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Mar 14 21:08:47 2011 +0100"
      },
      "message": "futex: Deobfuscate handle_futex_death()\n\nhandle_futex_death() uses futex_atomic_cmpxchg_inatomic() without\ndisabling page faults. That\u0027s ok, but totally non obvious.\n\nWe don\u0027t hold locks so we actually can and want to fault here, because\nthe get_user() before futex_atomic_cmpxchg_inatomic() does not\nguarantee a R/W mapping.\n\nWe could just add a big fat comment to explain this, but actually\nchanging the code so that the functionality is entirely clear is\nbetter.\n\nUse the helper function which disables page faults around the\nfutex_atomic_cmpxchg_inatomic() and handle a fault with a call to\nfault_in_user_writeable() as all other places in the futex code do as\nwell.\n\nPointed-out-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nAcked-by: Darren Hart \u003cdarren@dvhart.com\u003e\nCc: Michel Lespinasse \u003cwalken@google.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Matt Turner \u003cmattst88@gmail.com\u003e\nCc: Russell King \u003clinux@arm.linux.org.uk\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: Tony Luck \u003ctony.luck@intel.com\u003e\nCc: Michal Simek \u003cmonstr@monstr.eu\u003e\nCc: Ralf Baechle \u003cralf@linux-mips.org\u003e\nCc: \"James E.J. Bottomley\" \u003cjejb@parisc-linux.org\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Paul Mundt \u003clethal@linux-sh.org\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: Chris Metcalf \u003ccmetcalf@tilera.com\u003e\nLKML-Reference: \u003calpine.LFD.2.00.1103141126590.2787@localhost6.localdomain6\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "995612178c88407d8330f580ba6572cb8b284dd8",
      "tree": "ea19d21342814758a729ba931180146422393d15",
      "parents": [
        "8d7718aa082aaf30a0b4989e1f04858952f941bc",
        "6d55da53db3d9b911f69f2ce1e5fb8943eafe057"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sat Mar 12 11:37:14 2011 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sat Mar 12 11:43:32 2011 +0100"
      },
      "message": "Merge branch \u0027tip/futex/devel\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-rt into core/futexes\n\n futex,plist: Pass the real head of the priority list to plist_del()\n futex,plist: Remove debug lock assignment from plist_node\n plist: Shrink struct plist_head\n plist: Add priority list test\n"
    },
    {
      "commit": "017f2b239dabb2740b91df162e004371b861f371",
      "tree": "ed429ce014e9998abe35a764e48e1ad22b46da59",
      "parents": [
        "2e12978a9f7a7abd54e8eb9ce70a7718767b8b2c"
      ],
      "author": {
        "name": "Lai Jiangshan",
        "email": "laijs@cn.fujitsu.com",
        "time": "Tue Dec 21 17:55:10 2010 +0800"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 11 15:09:53 2011 -0500"
      },
      "message": "futex,plist: Remove debug lock assignment from plist_node\n\nThe original code uses \u0026plist_node-\u003eplist as the fake head of\nthe priority list for plist_del(), these debug locks in\nthe fake head are needed for CONFIG_DEBUG_PI_LIST.\n\nBut now we always pass the real head to plist_del(), the debug locks\nin plist_node will not be used, so we remove these assignments.\n\nAcked-by: Darren Hart \u003cdvhart@linux.intel.com\u003e\nSigned-off-by:  Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nLKML-Reference: \u003c4D10797E.7040803@cn.fujitsu.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "2e12978a9f7a7abd54e8eb9ce70a7718767b8b2c",
      "tree": "eb4f298e084b5bcc4922511237cd6ce2e158abdd",
      "parents": [
        "a5abba989deceb731047425812d268daf7536575"
      ],
      "author": {
        "name": "Lai Jiangshan",
        "email": "laijs@cn.fujitsu.com",
        "time": "Wed Dec 22 14:18:50 2010 +0800"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 11 15:09:52 2011 -0500"
      },
      "message": "futex,plist: Pass the real head of the priority list to plist_del()\n\nSome plist_del()s in kernel/futex.c are passed a faked head of the\npriority list.\n\nIt does not fail because the current code does not require the real head\nin plist_del(). The current code of plist_del() just uses the head for checking,\nso it will not cause a bad result even when we use a faked head.\n\nBut it is undocumented usage:\n\n/**\n * plist_del - Remove a @node from plist.\n *\n * @node:\t\u0026struct plist_node pointer - entry to be removed\n * @head:\t\u0026struct plist_head pointer - list head\n */\n\nThe document says that the @head is the \"list head\" head of the priority list.\n\nIn futex code, several places use \"plist_del(\u0026q-\u003elist, \u0026q-\u003elist.plist);\",\nthey pass a fake head. We need to fix them all.\n\nThanks to Darren Hart for many suggestions.\n\nAcked-by: Darren Hart \u003cdvhart@linux.intel.com\u003e\nSigned-off-by:  Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nLKML-Reference: \u003c4D11984A.5030203@cn.fujitsu.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "37a9d912b24f96a0591773e6e6c3642991ae5a70",
      "tree": "5c4d5b9a52e2c533269e589115afbd25b6c8534b",
      "parents": [
        "522d7decc0370070448a8c28982c8dfd8970489e"
      ],
      "author": {
        "name": "Michel Lespinasse",
        "email": "walken@google.com",
        "time": "Thu Mar 10 18:48:51 2011 -0800"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri Mar 11 12:23:08 2011 +0100"
      },
      "message": "futex: Sanitize cmpxchg_futex_value_locked API\n\nThe cmpxchg_futex_value_locked API was funny in that it returned either\nthe original, user-exposed futex value OR an error code such as -EFAULT.\nThis was confusing at best, and could be a source of livelocks in places\nthat retry the cmpxchg_futex_value_locked after trying to fix the issue\nby running fault_in_user_writeable().\n    \nThis change makes the cmpxchg_futex_value_locked API more similar to the\nget_futex_value_locked one, returning an error code and updating the\noriginal value through a reference argument.\n    \nSigned-off-by: Michel Lespinasse \u003cwalken@google.com\u003e\nAcked-by: Chris Metcalf \u003ccmetcalf@tilera.com\u003e  [tile]\nAcked-by: Tony Luck \u003ctony.luck@intel.com\u003e  [ia64]\nAcked-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nTested-by: Michal Simek \u003cmonstr@monstr.eu\u003e  [microblaze]\nAcked-by: David Howells \u003cdhowells@redhat.com\u003e [frv]\nCc: Darren Hart \u003cdarren@dvhart.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Matt Turner \u003cmattst88@gmail.com\u003e\nCc: Russell King \u003clinux@arm.linux.org.uk\u003e\nCc: Ralf Baechle \u003cralf@linux-mips.org\u003e\nCc: \"James E.J. Bottomley\" \u003cjejb@parisc-linux.org\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Paul Mundt \u003clethal@linux-sh.org\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nLKML-Reference: \u003c20110311024851.GC26122@google.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n\n"
    },
    {
      "commit": "c0c9ed15042ceac7c485813012a0a97316101b57",
      "tree": "c89272252b44c8330854bee7291e81252d7715f5",
      "parents": [
        "8fe8f545c6d753ead15e1f4919d39e8f9bb49629"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri Mar 11 11:51:22 2011 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri Mar 11 12:23:07 2011 +0100"
      },
      "message": "futex: Avoid redudant evaluation of task_pid_vnr()\n\nThe result is not going to change under us, so no need to reevaluate\nthis over and over. Seems to be a leftover from the mechanical mass\nconversion of task-\u003epid to task_pid_vnr(tsk).\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "8fe8f545c6d753ead15e1f4919d39e8f9bb49629",
      "tree": "b188ce42c3b18f481e6f727004499171aa5462c1",
      "parents": [
        "a5abba989deceb731047425812d268daf7536575"
      ],
      "author": {
        "name": "Michel Lespinasse",
        "email": "walken@google.com",
        "time": "Sun Mar 06 18:07:50 2011 -0800"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Thu Mar 10 19:56:18 2011 +0100"
      },
      "message": "futex: Update futex_wait_setup comments about locking\n\nReviving a cleanup I had done about a year ago as part of a larger\nfutex_set_wait proposal. Over the years, the locking of the hashed\nfutex queue got improved, so that some of the \"rare but normal\" race\nconditions described in comments can\u0027t actually happen anymore.\n\nSigned-off-by: Michel Lespinasse \u003cwalken@google.com\u003e\nCc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nCc: Darren Hart \u003cdvhltc@us.ibm.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nLKML-Reference: \u003c20110307020750.GA31188@google.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "8161239a8bcce9ad6b537c04a1fa3b5c68bae693",
      "tree": "a30738ef6e6be053e3604d7ca966a4805ef0039b",
      "parents": [
        "6fb1b304255efc5c4c93874ac8c066272e257e28"
      ],
      "author": {
        "name": "Lai Jiangshan",
        "email": "laijs@cn.fujitsu.com",
        "time": "Fri Jan 14 17:09:41 2011 +0800"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu Jan 27 21:13:51 2011 -0500"
      },
      "message": "rtmutex: Simplify PI algorithm and make highest prio task get lock\n\nIn current rtmutex, the pending owner may be boosted by the tasks\nin the rtmutex\u0027s waitlist when the pending owner is deboosted\nor a task in the waitlist is boosted. This boosting is unrelated,\nbecause the pending owner does not really take the rtmutex.\nIt is not reasonable.\n\nExample.\n\ntime1:\nA(high prio) onwers the rtmutex.\nB(mid prio) and C (low prio) in the waitlist.\n\ntime2\nA release the lock, B becomes the pending owner\nA(or other high prio task) continues to run. B\u0027s prio is lower\nthan A, so B is just queued at the runqueue.\n\ntime3\nA or other high prio task sleeps, but we have passed some time\nThe B and C\u0027s prio are changed in the period (time2 ~ time3)\ndue to boosting or deboosting. Now C has the priority higher\nthan B. ***Is it reasonable that C has to boost B and help B to\nget the rtmutex?\n\nNO!! I think, it is unrelated/unneed boosting before B really\nowns the rtmutex. We should give C a chance to beat B and\nwin the rtmutex.\n\nThis is the motivation of this patch. This patch *ensures*\nonly the top waiter or higher priority task can take the lock.\n\nHow?\n1) we don\u0027t dequeue the top waiter when unlock, if the top waiter\n   is changed, the old top waiter will fail and go to sleep again.\n2) when requiring lock, it will get the lock when the lock is not taken and:\n   there is no waiter OR higher priority than waiters OR it is top waiter.\n3) In any time, the top waiter is changed, the top waiter will be woken up.\n\nThe algorithm is much simpler than before, no pending owner, no\nboosting for pending owner.\n\nOther advantage of this patch:\n1) The states of a rtmutex are reduced a half, easier to read the code.\n2) the codes become shorter.\n3) top waiter is not dequeued until it really take the lock:\n   they will retain FIFO when it is stolen.\n\nNot advantage nor disadvantage\n1) Even we may wakeup multiple waiters(any time when top waiter changed),\n   we hardly cause \"thundering herd\",\n   the number of wokenup task is likely 1 or very little.\n2) two APIs are changed.\n   rt_mutex_owner() will not return pending owner, it will return NULL when\n                    the top waiter is going to take the lock.\n   rt_mutex_next_owner() always return the top waiter.\n\t                 will not return NULL if we have waiters\n                         because the top waiter is not dequeued.\n\n   I have fixed the code that use these APIs.\n\nneed updated after this patch is accepted\n1) Document/*\n2) the testcase scripts/rt-tester/t4-l2-pi-deboost.tst\n\nSigned-off-by:  Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nLKML-Reference: \u003c4D3012D5.4060709@cn.fujitsu.com\u003e\nReviewed-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "f9ee7f60d6f37ae0184812b4c59b3869f875768b",
      "tree": "6c30a7e94b90cfa3a43cda45f4bdb2f254f3ba10",
      "parents": [
        "16c1020362083b320868c0deef492249089c3cd3",
        "1161ec944916069ceec21c487e30247d9ff22857",
        "76d1f7bfcd5872056902c5a88b5fcd5d4d00a7a9",
        "afa14e7c553ebe45844d76208f66017a43abd0e2",
        "7c46d8da09df22361d1d43465c4f1b06cecaf25f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jan 15 12:45:00 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jan 15 12:45:00 2011 -0800"
      },
      "message": "Merge branches \u0027core-fixes-for-linus\u0027, \u0027x86-fixes-for-linus\u0027, \u0027timers-fixes-for-linus\u0027 and \u0027perf-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027core-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  rcu: avoid pointless blocked-task warnings\n  rcu: demote SRCU_SYNCHRONIZE_DELAY from kernel-parameter status\n  rtmutex: Fix comment about why new_owner can be NULL in wake_futex_pi()\n\n* \u0027x86-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  x86, olpc: Add missing Kconfig dependencies\n  x86, mrst: Set correct APB timer IRQ affinity for secondary cpu\n  x86: tsc: Fix calibration refinement conditionals to avoid divide by zero\n  x86, ia64, acpi: Clean up x86-ism in drivers/acpi/numa.c\n\n* \u0027timers-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  timekeeping: Make local variables static\n  time: Rename misnamed minsec argument of clocks_calc_mult_shift()\n\n* \u0027perf-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  tracing: Remove syscall_exit_fields\n  tracing: Only process module tracepoints once\n  perf record: Add \"nodelay\" mode, disabled by default\n  perf sched: Fix list of events, dropping unsupported \u0027:r\u0027 modifier\n  Revert \"perf tools: Emit clearer message for sys_perf_event_open ENOENT return\"\n  perf top: Fix annotate segv\n  perf evsel: Fix order of event list deletion\n"
    },
    {
      "commit": "a5b338f2b0b1ff73ae20c66ab831201549eaec01",
      "tree": "a89787ea6d932d66651c4621ed70f855e596d1ff",
      "parents": [
        "a95a82e96c48270980dd248ccd5546f1b49e6f8a"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Thu Jan 13 15:46:34 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:39 2011 -0800"
      },
      "message": "thp: update futex compound knowledge\n\nFutex code is smarter than most other gup_fast O_DIRECT code and knows\nabout the compound internals.  However now doing a put_page(head_page)\nwill not release the pin on the tail page taken by gup-fast, leading to\nall sort of refcounting bugchecks.  Getting a stable head_page is a little\ntricky.\n\npage_head \u003d page is there because if this is not a tail page it\u0027s also the\npage_head.  Only in case this is a tail page, compound_head is called,\notherwise it\u0027s guaranteed unnecessary.  And if it\u0027s a tail page\ncompound_head has to run atomically inside irq disabled section\n__get_user_pages_fast before returning.  Otherwise -\u003efirst_page won\u0027t be a\nstable pointer.\n\nDisableing irq before __get_user_page_fast and releasing irq after running\ncompound_head is needed because if __get_user_page_fast returns \u003d\u003d 1, it\nmeans the huge pmd is established and cannot go away from under us.\npmdp_splitting_flush_notify in __split_huge_page_splitting will have to\nwait for local_irq_enable before the IPI delivery can return.  This means\n__split_huge_page_refcount can\u0027t be running from under us, and in turn\nwhen we run compound_head(page) we\u0027re not reading a dangling pointer from\ntailpage-\u003efirst_page.  Then after we get to stable head page, we are\nalways safe to call compound_lock and after taking the compound lock on\nhead page we can finally re-check if the page returned by gup-fast is\nstill a tail page.  in which case we\u0027re set and we didn\u0027t need to split\nthe hugepage in order to take a futex on it.\n\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f123c98e7f168e949b283690693695f988332c3d",
      "tree": "18e3421ae3e23625686564af36ca844805cf812d",
      "parents": [
        "cb600d2f83c854ec3d6660063e4466431999489b"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Thu Jan 06 15:08:29 2011 -0500"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Jan 11 15:17:24 2011 +0100"
      },
      "message": "rtmutex: Fix comment about why new_owner can be NULL in wake_futex_pi()\n\nThe comment about why rt_mutex_next_owner() can return NULL in\nwake_futex_pi() is not the normal case.\n\nTracing the cause of why this occurs is more likely that waiter\nsimply timedout. But because it originally caused contention with\nthe futex, the owner will go into the kernel when it unlocks\nthe lock. Then it will hit this code path and\nrt_mutex_next_owner() will return NULL.\n\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "5bdb05f91b27b9361c4f348a4e05999f597df72e",
      "tree": "23d68ff7cdd469a6138b95aff37e6990b395eae9",
      "parents": [
        "b41277dc7a18ee332d9e8078e978bacdf6e76157"
      ],
      "author": {
        "name": "Darren Hart",
        "email": "dvhart@linux.intel.com",
        "time": "Mon Nov 08 13:40:28 2010 -0800"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Nov 10 15:01:34 2010 +0100"
      },
      "message": "futex: Add futex_q static initializer\n\nThe futex_q struct has grown considerably over the last couple years. I\nbelieve it now merits a static initializer to avoid uninitialized data\nerrors (having spent more time than I care to admit debugging an uninitialized\nq.bitset in an experimental new op code).\n\nWith the key initializer built in, several of the FUTEX_KEY_INIT calls can\nbe removed.\n\nV2: use a static variable instead of an init macro.\n    use a C99 initializer and don\u0027t rely on variable ordering in the struct.\nV3: make futex_q_init const\n\nSigned-off-by: Darren Hart \u003cdvhart@linux.intel.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nCc: John Kacur \u003cjkacur@redhat.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nLKML-Reference: \u003c1289252428-18383-1-git-send-email-dvhart@linux.intel.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "b41277dc7a18ee332d9e8078e978bacdf6e76157",
      "tree": "3068774de35cd12b03f736aa544fcb59cacf0111",
      "parents": [
        "ae791a2d2e382adc69990a144a7f1a6c4bc24f1e"
      ],
      "author": {
        "name": "Darren Hart",
        "email": "dvhart@linux.intel.com",
        "time": "Mon Nov 08 13:10:09 2010 -0800"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Nov 10 15:01:33 2010 +0100"
      },
      "message": "futex: Replace fshared and clockrt with combined flags\n\nIn the early days we passed the mmap sem around. That became the\n\"int fshared\" with the fast gup improvements. Then we added\n\"int clockrt\" in places. This patch unifies these options as \"flags\".\n\n[ tglx: Split out the stale fshared cleanup ]\n\nSigned-off-by: Darren Hart \u003cdvhart@linux.intel.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nCc: John Kacur \u003cjkacur@redhat.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nLKML-Reference: \u003c1289250609-16304-1-git-send-email-dvhart@linux.intel.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "ae791a2d2e382adc69990a144a7f1a6c4bc24f1e",
      "tree": "8db47b69da6faca2d15eab0ee8931367e3093cd6",
      "parents": [
        "4c115e951d80aff126468adaec7a6c7854f61ab8"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Nov 10 13:30:36 2010 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Nov 10 15:01:33 2010 +0100"
      },
      "message": "futex: Cleanup stale fshared flag interfaces\n\nThe fast GUP changes stopped using the fshared flag in\nput_futex_keys(), but we kept the interface the same.\n\nCleanup all stale users.\n\nThis patch is split out from Darren Harts combo patch which also\ncombines various flags. This way the changes are clearly separated.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Darren Hart \u003cdvhart@linux.intel.com\u003e\nLKML-Reference: \u003c1289250609-16304-1-git-send-email-dvhart@linux.intel.com\u003e\n"
    },
    {
      "commit": "4c115e951d80aff126468adaec7a6c7854f61ab8",
      "tree": "9f808df3fe056c317d37b53d3640982c9bc593cc",
      "parents": [
        "814ce2521121c2459e16cea8c7221e157edbeddd"
      ],
      "author": {
        "name": "Darren Hart",
        "email": "dvhart@linux.intel.com",
        "time": "Thu Nov 04 15:00:00 2010 -0400"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Nov 10 13:27:50 2010 +0100"
      },
      "message": "futex: Address compiler warnings in exit_robust_list\n\nSince commit 1dcc41bb (futex: Change 3rd arg of fetch_robust_entry()\nto unsigned int*) some gcc versions decided to emit the following\nwarning:\n\nkernel/futex.c: In function ‘exit_robust_list’:\nkernel/futex.c:2492: warning: ‘next_pi’ may be used uninitialized in this function\n\nThe commit did not introduce the warning as gcc should have warned\nbefore that commit as well. It\u0027s just gcc being silly.\n\nThe code path really can\u0027t result in next_pi being unitialized (or\nshould not), but let\u0027s keep the build clean. Annotate next_pi as an\nuninitialized_var.\n\n[ tglx: Addressed the same issue in futex_compat.c and massaged the\n  \tchangelog ]\n\nSigned-off-by: Darren Hart \u003cdvhart@linux.intel.com\u003e\nTested-by: Matt Fleming \u003cmatt@console-pimps.org\u003e\nTested-by: Uwe Kleine-König \u003cu.kleine-koenig@pengutronix.de\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nCc: John Kacur \u003cjkacur@redhat.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nLKML-Reference: \u003c1288897200-13008-1-git-send-email-dvhart@linux.intel.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "7de9c6ee3ecffd99e1628e81a5ea5468f7581a1f",
      "tree": "88787e77ba8a253d0a26aeda4bd5e58532d592e0",
      "parents": [
        "646ec4615cd05972581c9c5342ed7a1e77df17bb"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Oct 23 11:11:40 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Oct 25 21:26:11 2010 -0400"
      },
      "message": "new helper: ihold()\n\nClones an existing reference to inode; caller must already hold one.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "b61f6a57f1919ef8dbd33f864df9b8b361c65b11",
      "tree": "9341bc1a3f6a8fdcd19f97d5bcf1a658ab7fc92c",
      "parents": [
        "0575db881d18a4791013fc93ba756ad08b18fb48",
        "fb62db2ba943b1683f1d7181bb2988fce4c60870"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 21 14:06:17 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 21 14:06:17 2010 -0700"
      },
      "message": "Merge branch \u0027futexes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027futexes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  futex: Fix kernel-doc notation \u0026 typos\n  futex: Add lock context annotations\n  futex: Mark restart_block.futex.uaddr[2] __user\n  futex: Change 3rd arg of fetch_robust_entry() to unsigned int*\n"
    },
    {
      "commit": "7ada876a8703f23befbb20a7465a702ee39b1704",
      "tree": "adee9cf8676fed56a0a6ad1d270ae5fb84d32553",
      "parents": [
        "2b666ca4a68cbc22483b0f2e1ba3c0e59b01ae9e"
      ],
      "author": {
        "name": "Darren Hart",
        "email": "dvhart@linux.intel.com",
        "time": "Sun Oct 17 08:35:04 2010 -0700"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Oct 19 11:41:54 2010 +0200"
      },
      "message": "futex: Fix errors in nested key ref-counting\n\nfutex_wait() is leaking key references due to futex_wait_setup()\nacquiring an additional reference via the queue_lock() routine. The\nnested key ref-counting has been masking bugs and complicating code\nanalysis. queue_lock() is only called with a previously ref-counted\nkey, so remove the additional ref-counting from the queue_(un)lock()\nfunctions.\n\nAlso futex_wait_requeue_pi() drops one key reference too many in\nunqueue_me_pi(). Remove the key reference handling from\nunqueue_me_pi(). This was paired with a queue_lock() in\nfutex_lock_pi(), so the count remains unchanged.\n\nDocument remaining nested key ref-counting sites.\n\nSigned-off-by: Darren Hart \u003cdvhart@linux.intel.com\u003e\nReported-and-tested-by: Matthieu Fertré\u003cmatthieu.fertre@kerlabs.com\u003e\nReported-by: Louis Rilling\u003clouis.rilling@kerlabs.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nCc: John Kacur \u003cjkacur@redhat.com\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nLKML-Reference: \u003c4CBB17A8.70401@linux.intel.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "fb62db2ba943b1683f1d7181bb2988fce4c60870",
      "tree": "c085971506cf74f0580686e6ae8130f557a7cbfe",
      "parents": [
        "15e408cd6ccc3f4f453d87ccd5bc7a84d59feb96"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Wed Oct 13 11:02:34 2010 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Oct 14 08:57:35 2010 +0200"
      },
      "message": "futex: Fix kernel-doc notation \u0026 typos\n\nConvert futex_requeue() function parameters to use @name\nkernel-doc notation and add @fshared \u0026 @cmpval to prevent\nkernel-doc warnings.\n\nAdd @list to struct futex_q.\n\nFix a few typos.\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nAcked-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nLKML-Reference: \u003c20101013110234.89b06043.randy.dunlap@oracle.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "15e408cd6ccc3f4f453d87ccd5bc7a84d59feb96",
      "tree": "4e335e995ed528b74ced48ad1c79175b78ac9e53",
      "parents": [
        "a3c74c52570c0c4ac90c9a0216de800c39089ba7"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Tue Sep 14 21:43:48 2010 +0900"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sat Sep 18 12:19:21 2010 +0200"
      },
      "message": "futex: Add lock context annotations\n\nqueue_lock/unlock/me() and unqueue_me_pi() grab/release spinlocks\nbut are missing proper annotations. Add them.\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Darren Hart \u003cdvhltc@us.ibm.com\u003e\nLKML-Reference: \u003c1284468228-8723-3-git-send-email-namhyung@gmail.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "a3c74c52570c0c4ac90c9a0216de800c39089ba7",
      "tree": "4030b626478c5f51fef1ed4524424f6d83b9a128",
      "parents": [
        "1dcc41bb037533839753df983d31778b30b67d93"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Tue Sep 14 21:43:47 2010 +0900"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sat Sep 18 12:19:21 2010 +0200"
      },
      "message": "futex: Mark restart_block.futex.uaddr[2] __user\n\n@uaddr and @uaddr2 fields in restart_block.futex are user\npointers. Add __user and remove unnecessary casts.\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Darren Hart \u003cdvhltc@us.ibm.com\u003e\nLKML-Reference: \u003c1284468228-8723-2-git-send-email-namhyung@gmail.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "1dcc41bb037533839753df983d31778b30b67d93",
      "tree": "d35907b7c569ebc2ac80ca26ca44f0cbc4f66ecb",
      "parents": [
        "151b6a5f1d4c547c92ec67a5a6fedc16f435956e"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Tue Sep 14 21:43:46 2010 +0900"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sat Sep 18 12:19:21 2010 +0200"
      },
      "message": "futex: Change 3rd arg of fetch_robust_entry() to unsigned int*\n\nSparse complains:\n kernel/futex.c:2495:59: warning: incorrect type in argument 3 (different signedness)\n\nMake 3rd argument of fetch_robust_entry() \u0027unsigned int\u0027.\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Darren Hart \u003cdvhltc@us.ibm.com\u003e\nLKML-Reference: \u003c1284468228-8723-1-git-send-email-namhyung@gmail.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "7a0ea09ad5352efce8fe79ed853150449903b9f5",
      "tree": "939829793ffb34a78f83b694a725e66dfc50cc16",
      "parents": [
        "f4985dc714d7ab1920c5aa502b7f4073fa1b4177"
      ],
      "author": {
        "name": "Michal Hocko",
        "email": "mhocko@suse.cz",
        "time": "Wed Jun 30 09:51:19 2010 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jun 30 15:43:44 2010 -0700"
      },
      "message": "futex: futex_find_get_task remove credentails check\n\nfutex_find_get_task is currently used (through lookup_pi_state) from two\ncontexts, futex_requeue and futex_lock_pi_atomic.  None of the paths\nlooks it needs the credentials check, though.  Different (e)uids\nshouldn\u0027t matter at all because the only thing that is important for\nshared futex is the accessibility of the shared memory.\n\nThe credentail check results in glibc assert failure or process hang (if\nglibc is compiled without assert support) for shared robust pthread\nmutex with priority inheritance if a process tries to lock already held\nlock owned by a process with a different euid:\n\npthread_mutex_lock.c:312: __pthread_mutex_lock_full: Assertion `(-(e)) !\u003d 3 || !robust\u0027 failed.\n\nThe problem is that futex_lock_pi_atomic which is called when we try to\nlock already held lock checks the current holder (tid is stored in the\nfutex value) to get the PI state.  It uses lookup_pi_state which in turn\ngets task struct from futex_find_get_task.  ESRCH is returned either\nwhen the task is not found or if credentials check fails.\n\nfutex_lock_pi_atomic simply returns if it gets ESRCH.  glibc code,\nhowever, doesn\u0027t expect that robust lock returns with ESRCH because it\nshould get either success or owner died.\n\nSigned-off-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nAcked-by: Darren Hart \u003cdvhltc@us.ibm.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Alexey Kuznetsov \u003ckuznet@ms2.inr.ac.ru\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "59647b6ac3050dd964bc556fe6ef22f4db5b935c",
      "tree": "5e3b678a1172bce5f61143466bb172727cb13aec",
      "parents": [
        "51246bfd189064079c54421507236fd2723b18f3"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Feb 03 09:33:05 2010 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Feb 03 15:13:22 2010 +0100"
      },
      "message": "futex: Handle futex value corruption gracefully\n\nThe WARN_ON in lookup_pi_state which complains about a mismatch\nbetween pi_state-\u003eowner-\u003epid and the pid which we retrieved from the\nuser space futex is completely bogus.\n\nThe code just emits the warning and then continues despite the fact\nthat it detected an inconsistent state of the futex. A conveniant way\nfor user space to spam the syslog.\n\nReplace the WARN_ON by a consistency check. If the values do not match\nreturn -EINVAL and let user space deal with the mess it created.\n\nThis also fixes the missing task_pid_vnr() when we compare the\npi_state-\u003eowner pid with the futex value.\n\nReported-by: Jermome Marchand \u003cjmarchan@redhat.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nAcked-by: Darren Hart \u003cdvhltc@us.ibm.com\u003e\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: \u003cstable@kernel.org\u003e\n"
    },
    {
      "commit": "51246bfd189064079c54421507236fd2723b18f3",
      "tree": "060060ee3fe1cfe7c3ab510e4aff8a9dc3a7c64f",
      "parents": [
        "5ecb01cfdf96c5f465192bdb2a4fd4a61a24c6cc"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Feb 02 11:40:27 2010 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Feb 03 15:13:22 2010 +0100"
      },
      "message": "futex: Handle user space corruption gracefully\n\nIf the owner of a PI futex dies we fix up the pi_state and set\npi_state-\u003eowner to NULL. When a malicious or just sloppy programmed\nuser space application sets the futex value to 0 e.g. by calling\npthread_mutex_init(), then the futex can be acquired again. A new\nwaiter manages to enqueue itself on the pi_state w/o damage, but on\nunlock the kernel dereferences pi_state-\u003eowner and oopses.\n\nPrevent this by checking pi_state-\u003eowner in the unlock path. If\npi_state-\u003eowner is not current we know that user space manipulated the\nfutex value. Ignore the mess and return -EINVAL.\n\nThis catches the above case and also the case where a task hijacks the\nfutex by setting the tid value and then tries to unlock it.\n\nReported-by: Jermome Marchand \u003cjmarchan@redhat.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nAcked-by: Darren Hart \u003cdvhltc@us.ibm.com\u003e\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: \u003cstable@kernel.org\u003e\n\n"
    },
    {
      "commit": "5ecb01cfdf96c5f465192bdb2a4fd4a61a24c6cc",
      "tree": "718e04a92a89352dd39193f8a2e08d657d80914e",
      "parents": [
        "d6ad3e286d2c075a60b9f11075a2c55aeeeca2ad"
      ],
      "author": {
        "name": "Mikael Pettersson",
        "email": "mikpe@it.uu.se",
        "time": "Sat Jan 23 22:36:29 2010 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Feb 03 15:13:22 2010 +0100"
      },
      "message": "futex_lock_pi() key refcnt fix\n\nThis fixes a futex key reference count bug in futex_lock_pi(),\nwhere a key\u0027s reference count is incremented twice but decremented\nonly once, causing the backing object to not be released.\n\nIf the futex is created in a temporary file in an ext3 file system,\nthis bug causes the file\u0027s inode to become an \"undead\" orphan,\nwhich causes an oops from a BUG_ON() in ext3_put_super() when the\nfile system is unmounted. glibc\u0027s test suite is known to trigger this,\nsee \u003chttp://bugzilla.kernel.org/show_bug.cgi?id\u003d14256\u003e.\n\nThe bug is a regression from 2.6.28-git3, namely Peter Zijlstra\u0027s\n38d47c1b7075bd7ec3881141bb3629da58f88dab \"[PATCH] futex: rely on\nget_user_pages() for shared futexes\". That commit made get_futex_key()\nalso increment the reference count of the futex key, and updated its\ncallers to decrement the key\u0027s reference count before returning.\nUnfortunately the normal exit path in futex_lock_pi() wasn\u0027t corrected:\nthe reference count is incremented by get_futex_key() and queue_lock(),\nbut the normal exit path only decrements once, via unqueue_me_pi().\nThe fix is to put_futex_key() after unqueue_me_pi(), since 2.6.31\nthis is easily done by \u0027goto out_put_key\u0027 rather than \u0027goto out\u0027.\n\nSigned-off-by: Mikael Pettersson \u003cmikpe@it.uu.se\u003e\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nAcked-by: Darren Hart \u003cdvhltc@us.ibm.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: \u003cstable@kernel.org\u003e\n"
    },
    {
      "commit": "7485d0d3758e8e6491a5c9468114e74dc050785d",
      "tree": "073fb295550c96f075cbf968858bbab7e9fe5061",
      "parents": [
        "7284ce6c9f6153d1777df5f310c959724d1bd446"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Tue Jan 05 16:32:43 2010 +0900"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Jan 13 09:17:36 2010 +0100"
      },
      "message": "futexes: Remove rw parameter from get_futex_key()\n\nCurrently, futexes have two problem:\n\nA) The current futex code doesn\u0027t handle private file mappings properly.\n\nget_futex_key() uses PageAnon() to distinguish file and\nanon, which can cause the following bad scenario:\n\n  1) thread-A call futex(private-mapping, FUTEX_WAIT), it\n     sleeps on file mapping object.\n  2) thread-B writes a variable and it makes it cow.\n  3) thread-B calls futex(private-mapping, FUTEX_WAKE), it\n     wakes up blocked thread on the anonymous page. (but it\u0027s nothing)\n\nB) Current futex code doesn\u0027t handle zero page properly.\n\nRead mode get_user_pages() can return zero page, but current\nfutex code doesn\u0027t handle it at all. Then, zero page makes\ninfinite loop internally.\n\nThe solution is to use write mode get_user_page() always for\npage lookup. It prevents the lookup of both file page of private\nmappings and zero page.\n\nPerformance concerns:\n\nProbaly very little, because glibc always initialize variables\nfor futex before to call futex(). It means glibc users never see\nthe overhead of this patch.\n\nCompatibility concerns:\n\nThis patch has few compatibility issues. After this patch,\nFUTEX_WAIT require writable access to futex variables (read-only\nmappings makes EFAULT). But practically it\u0027s not a problem,\nglibc always initalizes variables for futexes explicitly - nobody\nuses read-only mappings.\n\nReported-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nAcked-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nAcked-by: Darren Hart \u003cdvhltc@us.ibm.com\u003e\nCc: \u003cstable@kernel.org\u003e\nCc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Ulrich Drepper \u003cdrepper@gmail.com\u003e\nLKML-Reference: \u003c20100105162633.45A2.A69D9226@jp.fujitsu.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "d209d74d52ab39dc071656533cac095294f70de7",
      "tree": "f48ae39908db89df7d93df79ac713318e026f0f7",
      "parents": [
        "1d615482547584b9a8bb6316a58fed6ce90dd9ff"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Nov 17 18:22:11 2009 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Dec 14 23:55:33 2009 +0100"
      },
      "message": "rtmutes: Convert rtmutex.lock to raw_spinlock\n\nConvert locks which cannot be sleeping locks in preempt-rt to\nraw_spinlocks.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nAcked-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "1d615482547584b9a8bb6316a58fed6ce90dd9ff",
      "tree": "21dae4b70acb3ce0bdaeeaee1dbd970be41d26e2",
      "parents": [
        "fe841226bd954fba4fd79f037a876053fe9c3217"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Nov 17 14:54:03 2009 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Dec 14 23:55:33 2009 +0100"
      },
      "message": "sched: Convert pi_lock to raw_spinlock\n\nConvert locks which cannot be sleeping locks in preempt-rt to\nraw_spinlocks.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nAcked-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "a26724591edba5acc528d41f3906a972590e8f54",
      "tree": "4e7a1c7c7e4b19b428222da9232aa7322439e243",
      "parents": [
        "fa4062e7eae8f484c90b9cdd850b5df39ab0e5a0"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Nov 17 14:46:14 2009 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Dec 14 23:55:33 2009 +0100"
      },
      "message": "plist: Make plist debugging raw_spinlock aware\n\nplists are used with spinlocks and raw_spinlocks. Change the plist\ndebugging to handle both types.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nAcked-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "722d0172377a5697919b9f7e5beb95165b1dec4e",
      "tree": "4ee18c7233de8e28b1fc87031fa1be7a2d59e5d2",
      "parents": [
        "f5754bfd107b08edddaf871d676ec6fe0792d07a"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "andi@firstfloor.org",
        "time": "Tue Dec 08 13:19:42 2009 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Dec 08 14:59:36 2009 +0100"
      },
      "message": "futex: Take mmap_sem for get_user_pages in fault_in_user_writeable\n\nget_user_pages() must be called with mmap_sem held.\n\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\nCc: stable@kernel.org\nCc: Andrew Morton \u003cakpm@linuxfoundation.org\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Darren Hart \u003cdvhltc@us.ibm.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nLKML-Reference: \u003c20091208121942.GA21298@basil.fritz.box\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n\n"
    },
    {
      "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"
    },
    {
      "commit": "89061d3d58e1f0742139605dc6a7950aa1ecc019",
      "tree": "4bf78b9d0834975b6e615ced614c74c67d57d52d",
      "parents": [
        "237c80c5c8fb7ec128cf2a756b550dc41ad7eac7"
      ],
      "author": {
        "name": "Darren Hart",
        "email": "dvhltc@us.ibm.com",
        "time": "Thu Oct 15 15:30:48 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Oct 16 10:19:18 2009 +0200"
      },
      "message": "futex: Move drop_futex_key_refs out of spinlock\u0027ed region\n\nWhen requeuing tasks from one futex to another, the reference held\nby the requeued task to the original futex location needs to be\ndropped eventually.\n\nDropping the reference may ultimately lead to a call to\n\"iput_final\" and subsequently call into filesystem- specific code -\nwhich may be non-atomic.\n\nIt is therefore safer to defer this drop operation until after the\nfutex_hash_bucket spinlock has been dropped.\n\nOriginally-From: Helge Bahmann \u003chcb@chaoticmind.net\u003e\nSigned-off-by: Darren Hart \u003cdvhltc@us.ibm.com\u003e\nCc: \u003cstable@kernel.org\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.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\nCc: Sven-Thorsten Dietrich \u003csdietrich@novell.com\u003e\nCc: John Kacur \u003cjkacur@redhat.com\u003e\nLKML-Reference: \u003c4AD7A298.5040802@us.ibm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "2bc872036e1c5948b5b02942810bbdd8dbdb9812",
      "tree": "c91cc2791366214c5f924ff5aa77c24a7403fe40",
      "parents": [
        "d58e6576b0deec6f0b9ff8450fe282da18c50883"
      ],
      "author": {
        "name": "Darren Hart",
        "email": "dvhltc@us.ibm.com",
        "time": "Wed Oct 14 10:12:39 2009 -0700"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Oct 14 22:00:14 2009 +0200"
      },
      "message": "futex: Check for NULL keys in match_futex\n\nIf userspace tries to perform a requeue_pi on a non-requeue_pi waiter,\nit will find the futex_q-\u003erequeue_pi_key to be NULL and OOPS.\n\nCheck for NULL in match_futex() instead of doing explicit NULL pointer\nchecks on all call sites.  While match_futex(NULL, NULL) returning\nfalse is a little odd, it\u0027s still correct as we expect valid key\nreferences.\n\nSigned-off-by: Darren Hart \u003cdvhltc@us.ibm.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCC: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nCC: Dinakar Guniguntala \u003cdino@in.ibm.com\u003e\nCC: John Stultz \u003cjohnstul@us.ibm.com\u003e\nCc: stable@kernel.org\nLKML-Reference: \u003c4AD60687.10306@us.ibm.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "d58e6576b0deec6f0b9ff8450fe282da18c50883",
      "tree": "d4838a745f90e60057194169cea796584946202e",
      "parents": [
        "c7cedb125ba20cc531671dc667ad704baa667d97"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Oct 13 20:40:43 2009 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Oct 13 20:40:43 2009 +0200"
      },
      "message": "futex: Handle spurious wake up\n\nThe futex code does not handle spurious wake up in futex_wait and\nfutex_wait_requeue_pi.\n\nThe code assumes that any wake up which was not caused by futex_wake /\nrequeue or by a timeout was caused by a signal wake up and returns one\nof the syscall restart error codes.\n\nIn case of a spurious wake up the signal delivery code which deals\nwith the restart error codes is not invoked and we return that error\ncode to user space. That causes applications which actually check the\nreturn codes to fail. Blaise reported that on preempt-rt a python test\nprogram run into a exception trap. -rt exposed that due to a built in\nspurious wake up accelerator :)\n\nSolve this by checking signal_pending(current) in the wake up path and\nhandle the spurious wake up case w/o returning to user space.\n\nReported-by: Blaise Gassend \u003cblaise@willowgarage.com\u003e\nDebugged-by: Darren Hart \u003cdvhltc@us.ibm.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: stable@kernel.org\nLKML-Reference: \u003cnew-submission\u003e\n"
    },
    {
      "commit": "f579bbcd9bb8b688df03191b92c56ab8af4d6322",
      "tree": "d450f986022aab73f86f794a03c7f21ad0ece8ec",
      "parents": [
        "e80fb7e52fd305b916a671755ca31ecf8f92e94e",
        "da085681014fb43d67d9bf6d14bc068e9254bd49"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 08 12:16:35 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 08 12:16:35 2009 -0700"
      },
      "message": "Merge branch \u0027core-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027core-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  futex: fix requeue_pi key imbalance\n  futex: Fix typo in FUTEX_WAIT/WAKE_BITSET_PRIVATE definitions\n  rcu: Place root rcu_node structure in separate lockdep class\n  rcu: Make hot-unplugged CPU relinquish its own RCU callbacks\n  rcu: Move rcu_barrier() to rcutree\n  futex: Move exit_pi_state() call to release_mm()\n  futex: Nullify robust lists after cleanup\n  futex: Fix locking imbalance\n  panic: Fix panic message visibility by calling bust_spinlocks(0) before dying\n  rcu: Replace the rcu_barrier enum with pointer to call_rcu*() function\n  rcu: Clean up code based on review feedback from Josh Triplett, part 4\n  rcu: Clean up code based on review feedback from Josh Triplett, part 3\n  rcu: Fix rcu_lock_map build failure on CONFIG_PROVE_LOCKING\u003dy\n  rcu: Clean up code to address Ingo\u0027s checkpatch feedback\n  rcu: Clean up code based on review feedback from Josh Triplett, part 2\n  rcu: Clean up code based on review feedback from Josh Triplett\n"
    },
    {
      "commit": "da085681014fb43d67d9bf6d14bc068e9254bd49",
      "tree": "a044706690151ad641ce8beee4d798248b962230",
      "parents": [
        "f8d1e548931cfa5ea9a082e020c2a47d27e5d793"
      ],
      "author": {
        "name": "Darren Hart",
        "email": "dvhltc@us.ibm.com",
        "time": "Wed Oct 07 11:46:54 2009 -0700"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Oct 07 21:22:03 2009 +0200"
      },
      "message": "futex: fix requeue_pi key imbalance\n\nIf futex_wait_requeue_pi() wakes prior to requeue, we drop the\nreference to the source futex_key twice, once in\nhandle_early_requeue_pi_wakeup() and once on our way out.\n\nRemove the drop from the handle_early_requeue_pi_wakeup() and keep\nthe get/drops together in futex_wait_requeue_pi().\n\nReported-by: Helge Bahmann \u003chcb@chaoticmind.net\u003e\nSigned-off-by: Darren Hart \u003cdvhltc@us.ibm.com\u003e\nCc: Helge Bahmann \u003chcb@chaoticmind.net\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nCc: Dinakar Guniguntala \u003cdino@in.ibm.com\u003e\nCc: John Stultz \u003cjohnstul@us.ibm.com\u003e\nCc: stable-2.6.31 \u003cstable@kernel.org\u003e\nLKML-Reference: \u003c4ACCE21E.5030805@us.ibm.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "eaaea8036d0261d87d7072c5bc88c7ea730c18ac",
      "tree": "07bbd53bdc9a47d86ca667f3171c3b7ebf1ac07c",
      "parents": [
        "d014e8894dfc523dd9d2f2a17b6dcb94facea810"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sun Oct 04 09:34:17 2009 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Oct 05 21:08:14 2009 +0200"
      },
      "message": "futex: Fix locking imbalance\n\nRich reported a lock imbalance in the futex code:\n\n   http://bugzilla.kernel.org/show_bug.cgi?id\u003d14288\n\nIt\u0027s caused by the displacement of the retry_private label in\nfutex_wake_op(). The code unlocks the hash bucket locks in the\nerror handling path and retries without locking them again which\nmakes the next unlock fail.\n\nMove retry_private so we lock the hash bucket locks when we retry.\n\nReported-by: Rich Ercolany \u003crercola@acm.jhu.edu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Darren Hart \u003cdvhltc@us.ibm.com\u003e\nCc: stable-2.6.31 \u003cstable@kernel.org\u003e\nLKML-Reference: \u003cnew-submission\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "9beba3c54dd180a26a1da2027cfbe9edfaf9c40e",
      "tree": "b7ede0a88beb7ee195adf40a7a03140e77ba43ee",
      "parents": [
        "0729e196147692d84d4c099fcff056eba2ed61d8"
      ],
      "author": {
        "name": "Darren Hart",
        "email": "dvhltc@us.ibm.com",
        "time": "Thu Sep 24 11:54:47 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Sep 24 22:30:10 2009 +0200"
      },
      "message": "futex: Add memory barrier commentary to futex_wait_queue_me()\n\nThe memory barrier semantics of futex_wait_queue_me() are\nnon-obvious. Add some commentary to try and clarify it.\n\nSigned-off-by: Darren Hart \u003cdvhltc@us.ibm.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nCc: Dinakar Guniguntala \u003cdino@in.ibm.com\u003e\nCc: John Stultz \u003cjohnstul@us.ibm.com\u003e\nLKML-Reference: \u003c20090924185447.694.38948.stgit@Aeon\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "0729e196147692d84d4c099fcff056eba2ed61d8",
      "tree": "5374dc5cd1cb2cfb3da1174b67ed07685592e83a",
      "parents": [
        "d8d88fbb186fe3ea37b2a58adb32413c98b59656"
      ],
      "author": {
        "name": "Darren Hart",
        "email": "dvhltc@us.ibm.com",
        "time": "Mon Sep 21 22:30:38 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Sep 22 10:37:44 2009 +0200"
      },
      "message": "futex: Fix wakeup race by setting TASK_INTERRUPTIBLE before queue_me()\n\nPI futexes do not use the same plist_node_empty() test for wakeup.\nIt was possible for the waiter (in futex_wait_requeue_pi()) to set\nTASK_INTERRUPTIBLE after the waker assigned the rtmutex to the\nwaiter. The waiter would then note the plist was not empty and call\nschedule(). The task would not be found by any subsequeuent futex\nwakeups, resulting in a userspace hang.\n\nBy moving the setting of TASK_INTERRUPTIBLE to before the call to\nqueue_me(), the race with the waker is eliminated. Since we no\nlonger call get_user() from within queue_me(), there is no need to\ndelay the setting of TASK_INTERRUPTIBLE until after the call to\nqueue_me().\n\nThe FUTEX_LOCK_PI operation is not affected as futex_lock_pi()\nrelies entirely on the rtmutex code to handle schedule() and\nwakeup.  The requeue PI code is affected because the waiter starts\nas a non-PI waiter and is woken on a PI futex.\n\nRemove the crusty old comment about holding spinlocks() across\nget_user() as we no longer do that. Correct the locking statement\nwith a description of why the test is performed.\n\nSigned-off-by: Darren Hart \u003cdvhltc@us.ibm.com\u003e\nAcked-by: 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@us.ibm.com\u003e\nLKML-Reference: \u003c20090922053038.8717.97838.stgit@Aeon\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "d8d88fbb186fe3ea37b2a58adb32413c98b59656",
      "tree": "b5f98484104fb61044de0a1692318cf91d051cf6",
      "parents": [
        "d96ee56ce0582967fba9f3f0ac4503957147bea6"
      ],
      "author": {
        "name": "Darren Hart",
        "email": "dvhltc@us.ibm.com",
        "time": "Mon Sep 21 22:30:30 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Sep 22 10:37:44 2009 +0200"
      },
      "message": "futex: Correct futex_q woken state commentary\n\nUse kernel-doc format to describe struct futex_q.\n\nCorrect the wakeup definition to eliminate the statement about\nwaking the waiter between the plist_del() and the q-\u003elock_ptr \u003d 0.\n\nNote in the comment that PI futexes have a different definition of\nthe woken state.\n\nSigned-off-by: Darren Hart \u003cdvhltc@us.ibm.com\u003e\nAcked-by: 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@us.ibm.com\u003e\nLKML-Reference: \u003c20090922053029.8717.62798.stgit@Aeon\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "d96ee56ce0582967fba9f3f0ac4503957147bea6",
      "tree": "6c75a1f88000ab876096b94db5c5078eccf228db",
      "parents": [
        "d40d65c8dbdd39f0b64e043f6bd08f8a38f55194"
      ],
      "author": {
        "name": "Darren Hart",
        "email": "dvhltc@us.ibm.com",
        "time": "Mon Sep 21 22:30:22 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Sep 22 10:37:43 2009 +0200"
      },
      "message": "futex: Make function kernel-doc commentary consistent\n\nMake the existing function kernel-doc consistent throughout\nfutex.c, following Documentation/kernel-doc-nano-howto.txt as\nclosely as possible.\n\nWhen unsure, at least be consistent within futex.c.\n\nSigned-off-by: Darren Hart \u003cdvhltc@us.ibm.com\u003e\nAcked-by: 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@us.ibm.com\u003e\nLKML-Reference: \u003c20090922053022.8717.13339.stgit@Aeon\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "d40d65c8dbdd39f0b64e043f6bd08f8a38f55194",
      "tree": "382d9870943ea689bfb547c5071fd4b95182b29c",
      "parents": [
        "56ec1607b15b6a5f6de5aab14f16a763b88296fc"
      ],
      "author": {
        "name": "Darren Hart",
        "email": "dvhltc@us.ibm.com",
        "time": "Mon Sep 21 22:30:15 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Sep 22 10:37:43 2009 +0200"
      },
      "message": "futex: Correct queue_me and unqueue_me commentary\n\nThe queue_me/unqueue_me commentary is oddly placed and out of date.\nClean it up and correct the inaccurate bits.\n\nSigned-off-by: Darren Hart \u003cdvhltc@us.ibm.com\u003e\nAcked-by: 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@us.ibm.com\u003e\nLKML-Reference: \u003c20090922053015.8717.71713.stgit@Aeon\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "56ec1607b15b6a5f6de5aab14f16a763b88296fc",
      "tree": "c50e693727842194098e054db92573e2b1cf5ea0",
      "parents": [
        "b8c7f1dc5ca4e0d10709182233cdab932cef593d"
      ],
      "author": {
        "name": "Darren Hart",
        "email": "dvhltc@us.ibm.com",
        "time": "Mon Sep 21 22:29:59 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Sep 22 10:37:42 2009 +0200"
      },
      "message": "futex: Correct futex_wait_requeue_pi() commentary\n\nCorrect various typos and formatting inconsistencies in the\ncommentary of futex_wait_requeue_pi().\n\nSigned-off-by: Darren Hart \u003cdvhltc@us.ibm.com\u003e\nAcked-by: 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@us.ibm.com\u003e\nLKML-Reference: \u003c20090922052958.8717.21932.stgit@Aeon\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "7193bea53f9d9730bbc859777c2f86c76349914d",
      "tree": "c841e3d256d63bf30cd4acc4751d9213c0ba7dff",
      "parents": [
        "989aa44a5f215427085ccfe65c1e378e3399c9eb",
        "84bc4af59081ee974dd80210e694ab59ebe51ce8"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Sep 11 13:16:22 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Sep 11 13:16:22 2009 -0700"
      },
      "message": "Merge branch \u0027core-futexes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027core-futexes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  futex: Detect mismatched requeue targets\n  futex: Correct futex_wait_requeue_pi() commentary\n"
    },
    {
      "commit": "84bc4af59081ee974dd80210e694ab59ebe51ce8",
      "tree": "a07c68106814d0a748e00c75466d741d05d7e908",
      "parents": [
        "cc6db4e60116c1f76577b6850a35ae7de69a95b6"
      ],
      "author": {
        "name": "Darren Hart",
        "email": "dvhltc@us.ibm.com",
        "time": "Thu Aug 13 17:36:53 2009 -0700"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sun Aug 16 10:59:05 2009 +0200"
      },
      "message": "futex: Detect mismatched requeue targets\n\nThere is currently no check to ensure that userspace uses the same\nfutex requeue target (uaddr2) in futex_requeue() that the waiter used\nin futex_wait_requeue_pi().  A mismatch here could very unexpected\nresults as the waiter assumes it either wakes on uaddr1 or uaddr2. We\ncould detect this on wakeup in the waiter, but the cleanup is more\nintense after the improper requeue has occured.\n\nThis patch stores the waiter\u0027s expected requeue target in a new\nrequeue_pi_key pointer in the futex_q which futex_requeue() checks\nprior to attempting to do a proxy lock acquistion or a requeue when\nrequeue_pi\u003d1. If they don\u0027t match, return -EINVAL from futex_requeue,\naborting the requeue of any remaining waiters.\n\nSigned-off-by: Darren Hart \u003cdvhltc@us.ibm.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nCc: John Kacur \u003cjkacur@redhat.com\u003e\nCc: Dinakar Guniguntala \u003cdino@in.ibm.com\u003e\nCc: John Stultz \u003cjohnstul@us.ibm.com\u003e\nLKML-Reference: \u003c20090814003650.14634.63916.stgit@Aeon\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "392741e0a4e17c82e3978b7fcbf04291294dc0a1",
      "tree": "c58437276d5eae05c46b3739d9bece01e357e6e2",
      "parents": [
        "4dc88029fd916b860ef063c40180aa604ce93494"
      ],
      "author": {
        "name": "Darren Hart",
        "email": "dvhltc@us.ibm.com",
        "time": "Fri Aug 07 15:20:48 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Aug 10 20:38:11 2009 +0200"
      },
      "message": "futex: Fix handling of bad requeue syscall pairing\n\nIf futex_requeue(requeue_pi\u003d1) finds a futex_q that was created by a call\nother the futex_wait_requeue_pi(), the q.rt_waiter may be null.  If so,\nthis will result in an oops from the following call graph:\n\nfutex_requeue()\n  rt_mutex_start_proxy_lock()\n    task_blocks_on_rt_mutex()\n      waiter-\u003etask dereference\n        OOPS\n\nWe currently WARN_ON() if this is detected, clearly this is inadequate.\nIf we detect a mispairing in futex_requeue(), bail out, seding -EINVAL to\nuser-space.\n\nV2: Fix parenthesis warnings.\n\nSigned-off-by: Darren Hart \u003cdvhltc@us.ibm.com\u003e\nAcked-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: John Kacur \u003cjkacur@redhat.com\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: \u003c4A7CA8C0.7010809@us.ibm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "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"
    },
    {
      "commit": "cc6db4e60116c1f76577b6850a35ae7de69a95b6",
      "tree": "52c2a020429f4664453719483ac3d3d993802330",
      "parents": [
        "a33a052f19a21d727847391c8c1aff3fb221c472"
      ],
      "author": {
        "name": "Darren Hart",
        "email": "dvhltc@us.ibm.com",
        "time": "Fri Jul 31 16:20:10 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Aug 04 15:59:14 2009 +0200"
      },
      "message": "futex: Correct futex_wait_requeue_pi() commentary\n\nThe state machine described in the comments wasn\u0027t updated with\na follow-on fix.  Address that and cleanup the corresponding\ncommentary in the function.\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: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nLKML-Reference: \u003c4A737C2A.9090001@us.ibm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "ce2ae53b750abfaa012ce408e93da131a5b5649b",
      "tree": "7d380e51a49ad40fc08044ed8050243080280273",
      "parents": [
        "f00caa76297a534e30c3ec85382fbc3fd0dcbc69"
      ],
      "author": {
        "name": "Sonny Rao",
        "email": "sonnyrao@us.ibm.com",
        "time": "Fri Jul 10 18:13:13 2009 -0500"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Jul 11 12:40:44 2009 +0200"
      },
      "message": "futexes: Fix infinite loop in get_futex_key() on huge page\n\nget_futex_key() can infinitely loop if it is called on a\nvirtual address that is within a huge page but not aligned to\nthe beginning of that page.  The call to get_user_pages_fast\nwill return the struct page for a sub-page within the huge page\nand the check for page-\u003emapping will always fail.\n\nThe fix is to call compound_head on the page before checking\nthat it\u0027s mapped.\n\nSigned-off-by: Sonny Rao \u003csonnyrao@us.ibm.com\u003e\nAcked-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: stable@kernel.org\nCc: anton@samba.org\nCc: rajamony@us.ibm.com\nCc: speight@us.ibm.com\nCc: mstephen@us.ibm.com\nCc: grimm@us.ibm.com\nCc: mikey@ozlabs.au.ibm.com\nLKML-Reference: \u003c20090710231313.GA23572@us.ibm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "aa715284b4d28cabde6c25c568d769a6be712bc8",
      "tree": "c308ab1cdf8d0d7b6b1a01a1a233183670d62f9f",
      "parents": [
        "28d0325ce6e0a52f53d8af687e6427fee59004d3"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Thu Jun 25 14:27:58 2009 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Thu Jun 25 14:33:46 2009 +0200"
      },
      "message": "futex: request only one page from get_user_pages()\n\nYanmin noticed that fault_in_user_writeable() requests 4 pages instead\nof one.\n\nThat\u0027s the result of blindly trusting Linus\u0027 proposal :) I even looked\nup the prototype to verify the correctness: the argument in question\nis confusingly enough named \"len\" while in reality it means number of\npages.\n\nPointed-out-by: Yanmin Zhang \u003cyanmin_zhang@linux.intel.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "d0725992c8a6fb63a16bc9e8b2a50094cc4db3cd",
      "tree": "55b52c5bcc051c3b8c2fc3122000925541d5707b",
      "parents": [
        "c82e6d450fda56cb2d4f68534173d3cd11b32f9f"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Thu Jun 11 23:15:43 2009 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Jun 24 21:27:35 2009 +0200"
      },
      "message": "futex: Fix the write access fault problem for real\n\ncommit 64d1304a64 (futex: setup writeable mapping for futex ops which\nmodify user space data) did address only half of the problem of write\naccess faults.\n\nThe patch was made on two wrong assumptions:\n\n1) access_ok(VERIFY_WRITE,...) would actually check write access.\n\n   On x86 it does _NOT_. It\u0027s a pure address range check.\n\n2) a RW mapped region can not go away under us.\n\n   That\u0027s wrong as well. Nobody can prevent another thread to call\n   mprotect(PROT_READ) on that region where the futex resides. If that\n   call hits between the get_user_pages_fast() verification and the\n   actual write access in the atomic region we are toast again.\n\nThe solution is to not rely on access_ok and get_user() for any write\naccess related fault on private and shared futexes. Instead we need to\nfault it in with verification of write access.\n\nThere is no generic non destructive write mechanism which would fault\nthe user page in trough a #PF, but as we already know that we will\nfault we can as well call get_user_pages() directly and avoid the #PF\noverhead.\n\nIf get_user_pages() returns -EFAULT we know that we can not fix it\nanymore and need to bail out to user space.\n\nRemove a bunch of confusing comments on this issue as well.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "2070887fdeacd9c13f3e805e3f0086c9f22a4d93",
      "tree": "f1695bd701f7a2558e11052bfe6ff42d6dc561df",
      "parents": [
        "1c840c14906d4ddf66c1f4f5daea059aad951c82"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue May 19 23:04:59 2009 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed May 20 10:34:32 2009 +0200"
      },
      "message": "futex: fix restart in wait_requeue_pi\n\nIf the waiter has been requeued to the outer PI futex and is\ninterrupted by a signal and the thread handles the signal then\nERESTART_RESTARTBLOCK is changed to EINTR and the restart block is\ndiscarded. That way we return an unexcpected EINTR to user space\ninstead of ending up in futex_lock_pi_restart.\n\nBut we do not need to restart the syscall because we know that the\ncondition has changed since we have been requeued. If we would simply\nrestart the syscall then we would drop out via the comparison of the\nuser space value with EWOULDBLOCK.\n\nThe user space side needs to handle EWOULDBLOCK anyway as the\nenqueueing on the inner futex can race with a requeue/wake. So we can\nsimply return EWOULDBLOCK to user space which also signals that we did\nnot take the outer futex and let user space handle it in the same way\nit has to handle the requeue/wake race.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "1c840c14906d4ddf66c1f4f5daea059aad951c82",
      "tree": "3c71d3d67c590df598098f5cdb79151359ff2ce4",
      "parents": [
        "c8b15a706d921baed3195407e4f55270112bb3c6"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed May 20 09:22:40 2009 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed May 20 10:28:45 2009 +0200"
      },
      "message": "futex: fix restart for early wakeup in futex_wait_requeue_pi()\n\nThe futex_wait_requeue_pi op should restart unconditionally like\nfutex_lock_pi. The user of that function e.g. pthread_cond_wait can\nnot be interrupted so we do not care about the SA_RESTART flag of the\nsignal. Clean up the FIXMEs.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "c8b15a706d921baed3195407e4f55270112bb3c6",
      "tree": "514a45eb575cd093043fe1471ff579ffe439db3f",
      "parents": [
        "521c180874dae86f675d23c4eade4dba8b1f2cc8"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed May 20 09:18:50 2009 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed May 20 10:28:45 2009 +0200"
      },
      "message": "futex: cleanup error exit\n\nReuse the put_key_ref(key2) call in the exit path.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "521c180874dae86f675d23c4eade4dba8b1f2cc8",
      "tree": "7509303da3a9a1b40a26f6811f321c89cd31737b",
      "parents": [
        "f1a11e0576c7a73d759d05d776692b2b2d37172b",
        "64d1304a64477629cb16b75491a77bafe6f86963"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed May 20 09:02:28 2009 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed May 20 09:02:28 2009 +0200"
      },
      "message": "Merge branch \u0027core/urgent\u0027 into core/futexes\n\nMerge reason: this branch was on an pre -rc1 base, merge it up to -rc6+\n              to get the latest upstream fixes.\n\nConflicts:\n\tkernel/futex.c\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "64d1304a64477629cb16b75491a77bafe6f86963",
      "tree": "f9bf95141429174d3e4596d3c4f5b167b6c0e745",
      "parents": [
        "279e677faa775ad16e75c32e1bf4a37f8158bc61"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon May 18 21:20:10 2009 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue May 19 23:36:52 2009 +0200"
      },
      "message": "futex: setup writeable mapping for futex ops which modify user space data\n\nThe futex code installs a read only mapping via get_user_pages_fast()\neven if the futex op function has to modify user space data. The\neventual fault was fixed up by futex_handle_fault() which walked the\nVMA with mmap_sem held.\n\nAfter the cleanup patches which removed the mmap_sem dependency of the\nfutex code commit 4dc5b7a36a49eff97050894cf1b3a9a02523717 (futex:\nclean up fault logic) removed the private VMA walk logic from the\nfutex code. This change results in a stale RO mapping which is not\nfixed up.\n\nInstead of reintroducing the previous fault logic we set up the\nmapping in get_user_pages_fast() read/write for all operations which\nmodify user space data. Also handle private futexes in the same way\nand make the current unconditional access_ok(VERIFY_WRITE) depend on\nthe futex op.\n\nReported-by: Andreas Schwab \u003cschwab@linux-m68k.org\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCC: stable@kernel.org\n\n"
    },
    {
      "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"
    },
    {
      "commit": "ba9c22f2c01cf5c88beed5a6b9e07d42e10bd358",
      "tree": "77664171b51bb6b03eac13ee946b6d894b2da01d",
      "parents": [
        "a5a2a0c7fa039c59619bc908b3b1ed24734d442a"
      ],
      "author": {
        "name": "Darren Hart",
        "email": "dvhltc@us.ibm.com",
        "time": "Mon Apr 20 22:22:22 2009 -0700"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Thu Apr 30 11:41:35 2009 +0200"
      },
      "message": "futex: remove FUTEX_REQUEUE_PI (non CMP)\n\nThe new requeue PI futex op codes were modeled after the existing\nFUTEX_REQUEUE and FUTEX_CMP_REQUEUE calls.  I was unaware at the time\nthat FUTEX_REQUEUE was only around for compatibility reasons and\nshouldn\u0027t be used in new code.  Ulrich Drepper elaborates on this in his\nFutexes are Tricky paper: http://people.redhat.com/drepper/futex.pdf.\nThe deprecated call doesn\u0027t catch changes to the futex corresponding to\nthe destination futex which can lead to deadlock.\n\nTherefor, I feel it best to remove FUTEX_REQUEUE_PI and leave only\nFUTEX_CMP_REQUEUE_PI as there are not yet any existing users of the API.\nThis patch does change the OP code value of FUTEX_CMP_REQUEUE_PI to 12\nfrom 13.  Since my test case is the only known user of this API, I felt\nthis was the right thing to do, rather than leave a hole in the\nenumeration.\n\nI chose to continue using the _CMP_ modifier in the OP code to make it\nexplicit to the user that the test is being done.\n\nBuilds, boots, and ran several hundred iterations requeue_pi.c.\n\nSigned-off-by: Darren Hart \u003cdvhltc@us.ibm.com\u003e\nLKML-Reference: \u003c49ED580E.1050502@us.ibm.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "a5a2a0c7fa039c59619bc908b3b1ed24734d442a",
      "tree": "893dd52f07866834e84e63cb940e1dae1623e259",
      "parents": [
        "d2de688891909b148efe83a6fc9520a9cd6015f0"
      ],
      "author": {
        "name": "Darren Hart",
        "email": "dvhltc@us.ibm.com",
        "time": "Fri Apr 10 09:50:05 2009 -0700"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri Apr 10 22:04:24 2009 +0200"
      },
      "message": "futex: fix futex_wait_setup key handling\n\nIf the get_futex_key() call were to fail, the existing code would\ntry and put_futex_key() prior to returning.  This patch makes sure\nwe only put_futex_key() if get_futex_key() succeeded.\n\nReported-by: Clark Williams \u003cwilliams@redhat.com\u003e\nSigned-off-by: Darren Hart \u003cdvhltc@us.ibm.com\u003e\nLKML-Reference: \u003c20090410165005.14342.16973.stgit@Aeon\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n\n"
    },
    {
      "commit": "bab5bc9e857638880facef76e4b4c3fa807f8c73",
      "tree": "8129a3fc18f770021bfe202900ecc2cb144d18c7",
      "parents": [
        "52400ba946759af28442dee6265c5c0180ac7122"
      ],
      "author": {
        "name": "Darren Hart",
        "email": "dvhltc@us.ibm.com",
        "time": "Tue Apr 07 23:23:50 2009 -0700"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Apr 08 12:58:20 2009 +0200"
      },
      "message": "futex: fixup unlocked requeue pi case\n\nThomas\u0027s testing caught a problem when the requeue target futex is\nunowned and multiple tasks are requeued to it. This patch ensures\nthe FUTEX_WAITERS bit gets set if futex_requeue() will requeue one\nor more tasks in addition to the one acquiring the lock.\n\nSigned-off-by: Darren Hart \u003cdvhltc@us.ibm.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "52400ba946759af28442dee6265c5c0180ac7122",
      "tree": "4c9abe885b3cae3cb47b33826b3c5838fc9761b7",
      "parents": [
        "f801073f87aa22ddf0e9146355fec3993163790f"
      ],
      "author": {
        "name": "Darren Hart",
        "email": "dvhltc@us.ibm.com",
        "time": "Fri Apr 03 13:40:49 2009 -0700"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Apr 06 11:14:03 2009 +0200"
      },
      "message": "futex: add requeue_pi functionality\n\nPI Futexes and their underlying rt_mutex cannot be left ownerless if\nthere are pending waiters as this will break the PI boosting logic, so\nthe standard requeue commands aren\u0027t sufficient.  The new commands\nproperly manage pi futex ownership by ensuring a futex with waiters\nhas an owner at all times.  This will allow glibc to properly handle\npi mutexes with pthread_condvars.\n\nThe approach taken here is to create two new futex op codes:\n\nFUTEX_WAIT_REQUEUE_PI:\nTasks will use this op code to wait on a futex (such as a non-pi waitqueue)\nand wake after they have been requeued to a pi futex.  Prior to returning to\nuserspace, they will acquire this pi futex (and the underlying rt_mutex).\n\nfutex_wait_requeue_pi() is the result of a high speed collision between\nfutex_wait() and futex_lock_pi() (with the first part of futex_lock_pi() being\ndone by futex_proxy_trylock_atomic() on behalf of the top_waiter).\n\nFUTEX_REQUEUE_PI (and FUTEX_CMP_REQUEUE_PI):\nThis call must be used to wake tasks waiting with FUTEX_WAIT_REQUEUE_PI,\nregardless of how many tasks the caller intends to wake or requeue.\npthread_cond_broadcast() should call this with nr_wake\u003d1 and\nnr_requeue\u003dINT_MAX.  pthread_cond_signal() should call this with nr_wake\u003d1 and\nnr_requeue\u003d0.  The reason being we need both callers to get the benefit of the\nfutex_proxy_trylock_atomic() routine.  futex_requeue() also enqueues the\ntop_waiter on the rt_mutex via rt_mutex_start_proxy_lock().\n\nSigned-off-by: Darren Hart \u003cdvhltc@us.ibm.com\u003e\nReviewed-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "f801073f87aa22ddf0e9146355fec3993163790f",
      "tree": "5499760cfb1abcebdda8868ec0074ae3ff4da0d5",
      "parents": [
        "9121e4783cd5c7e2a407763f3b61c2d573891133"
      ],
      "author": {
        "name": "Darren Hart",
        "email": "dvhltc@us.ibm.com",
        "time": "Fri Apr 03 13:40:40 2009 -0700"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Apr 06 11:14:02 2009 +0200"
      },
      "message": "futex: split out futex value validation code\n\nRefactor the code to validate the expected futex value in order to\nreuse it with the requeue_pi code.\n\nSigned-off-by: Darren Hart \u003cdvhltc@us.ibm.com\u003e\nReviewed-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "9121e4783cd5c7e2a407763f3b61c2d573891133",
      "tree": "0a3079a738d199514d1ecdb479567e772ca1e03d",
      "parents": [
        "a72188d8a64ebe74722f1cf7ffac41b41ffdba21"
      ],
      "author": {
        "name": "Darren Hart",
        "email": "dvhltc@us.ibm.com",
        "time": "Fri Apr 03 13:40:31 2009 -0700"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Apr 06 11:14:02 2009 +0200"
      },
      "message": "futex: distangle futex_requeue()\n\nfutex_requeue() is getting a bit long-winded, and will be getting more\nso after the requeue_pi patch. Factor out the actual requeueing into a\nnicely contained inline function to reduce function length and improve\nlegibility.\n\nSigned-off-by: Darren Hart \u003cdvhltc@us.ibm.com\u003e\nReviewed-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "a72188d8a64ebe74722f1cf7ffac41b41ffdba21",
      "tree": "5283404345b270bf5ca95ce8d792baacdf8cf7dc",
      "parents": [
        "8dac456a681bd94272ff50ecb31be6b669382c2b"
      ],
      "author": {
        "name": "Darren Hart",
        "email": "dvhltc@us.ibm.com",
        "time": "Fri Apr 03 13:40:22 2009 -0700"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Apr 06 11:14:02 2009 +0200"
      },
      "message": "futex: add FUTEX_HAS_TIMEOUT flag to restart.futex.flags\n\nCurrently restart is only used if there is a timeout. The requeue_pi\nfunctionality requires restarting to futex_lock_pi() on signal after\nwakeup in futex_wait_requeue_pi() regardless of if there was a timeout\nor not. Using 0 for the timeout value is confusing as that could\nindicate an expired timer. The flag makes this explicit. While the\ncheck is not technically needed in futex_wait_restart(), doing so\nmakes the code consistent with and will avoid confusion should the\nneed arise to restart wait without a timeout.\n\nSigned-off-by: Darren Hart \u003cdvhltc@us.ibm.com\u003e\nReviewed-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "dd9739980b50c8cde33e1f8eb08b7e0140bcd61e",
      "tree": "d263d1632397e74c60bc3102853ccc437a65aabf",
      "parents": [
        "1a52084d0919c2799258737c21fb328a9de159b5"
      ],
      "author": {
        "name": "Darren Hart",
        "email": "dvhltc@us.ibm.com",
        "time": "Fri Apr 03 13:40:02 2009 -0700"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Apr 06 11:14:02 2009 +0200"
      },
      "message": "futex: split out fixup owner logic from futex_lock_pi()\n\nRefactor the post lock acquisition logic from futex_lock_pi(). This\ncode will be reused in futex_wait_requeue_pi().\n\nSigned-off-by: Darren Hart \u003cdvhltc@us.ibm.com\u003e\nReviewed-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "1a52084d0919c2799258737c21fb328a9de159b5",
      "tree": "1b5351a83913d1c583912b933ad838d2a024286b",
      "parents": [
        "4b1c486b3587d2abf50bee4a05eb488cd4045f2c"
      ],
      "author": {
        "name": "Darren Hart",
        "email": "dvhltc@us.ibm.com",
        "time": "Fri Apr 03 13:39:52 2009 -0700"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Apr 06 11:14:01 2009 +0200"
      },
      "message": "futex: split out atomic logic from futex_lock_pi()\n\nRefactor the atomic portion of futex_lock_pi() into futex_lock_pi_atomic().\n\nThis logic will be needed by requeue_pi, so modularize it to reduce\ncode duplication.  The only significant change is passing of the task\nto try and take the lock for.  This simplifies the -EDEADLK test as if\nthe lock is owned by task t, it\u0027s a deadlock, regardless of if we are\ndoing requeue pi or not.  This patch updates the corresponding comment\naccordingly.\n\nSigned-off-by: Darren Hart \u003cdvhltc@us.ibm.com\u003e\nReviewed-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "4b1c486b3587d2abf50bee4a05eb488cd4045f2c",
      "tree": "17b2a04c34787cb8af37d8d73d27710a42b870de",
      "parents": [
        "ca5f9524d61f54b1f618293ab92fc6b49cac864d"
      ],
      "author": {
        "name": "Darren Hart",
        "email": "dvhltc@us.ibm.com",
        "time": "Fri Apr 03 13:39:42 2009 -0700"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Apr 06 11:14:01 2009 +0200"
      },
      "message": "futex: add helper to find the top prio waiter of a futex\n\nImprove legibility by wrapping finding the top waiter in a function.\nThis will be used by the follow-on patches for enabling requeue pi.\n\nSigned-off-by: Darren Hart \u003cdvhltc@us.ibm.com\u003e\nReviewed-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "ca5f9524d61f54b1f618293ab92fc6b49cac864d",
      "tree": "5c7b464dc98257670b815da85e03a1f674a50f2f",
      "parents": [
        "6bb597507f9839b13498781e481f5458aea33620"
      ],
      "author": {
        "name": "Darren Hart",
        "email": "dvhltc@us.ibm.com",
        "time": "Fri Apr 03 13:39:33 2009 -0700"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Apr 06 11:14:01 2009 +0200"
      },
      "message": "futex: separate futex_wait_queue_me() logic from futex_wait()\n\nRefactor futex_wait() in preparation for futex_wait_requeue_pi(). In\norder to reuse a good chunk of the futex_wait() code for the upcoming\nfutex_wait_requeue_pi() function, this patch breaks out the\nqueue-to-wakeup section of futex_wait() into futex_wait_queue_me().\n\nSigned-off-by: Darren Hart \u003cdvhltc@us.ibm.com\u003e\nReviewed-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "cd84a42f315e50edd454c27a3da3951ccd3d735a",
      "tree": "fa13b2faa6c2f73255f52a65cd4f572d9bd95e1a",
      "parents": [
        "833bb3046b6cb320e775ea2160ddca87d53260d5"
      ],
      "author": {
        "name": "Darren Hart",
        "email": "dvhltc@us.ibm.com",
        "time": "Thu Apr 02 14:19:38 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Apr 02 23:39:53 2009 +0200"
      },
      "message": "futex: comment requeue key reference semantics\n\nWe\u0027ve tripped over the futex_requeue drop_count refering to key2\ninstead of key1.  The code is actually correct, but is non-intuitive.\nThis patch adds an explicit comment explaining the requeue.\n\nSigned-off-by: Darren Hart \u003cdvhltc@us.ibm.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "88f502fedba82eff252b6420e8b8328e4ae25c67",
      "tree": "5063980d641f077da073ce972028c2b07ccb1bbc",
      "parents": [
        "f061d35150003b7fd5b133d14d66a74500fdaa60"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Mar 13 10:32:07 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Mar 13 10:32:07 2009 +0100"
      },
      "message": "futex: remove the pointer math from double_unlock_hb, fix\n\nImpact: fix double unlock crash\n\nThomas Gleixner noticed that the simplified double_unlock_hb()\nbecame ... too unsophisticated: in the hb1 \u003d\u003d hb2 case it will\ndo a double unlock.\n\nReported-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Darren Hart \u003cdvhltc@us.ibm.com\u003e\nLKML-Reference: \u003c20090312221118.11146.68610.stgit@Aeon\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "f061d35150003b7fd5b133d14d66a74500fdaa60",
      "tree": "4181a2a13841804ed6ccb4345d2b340eeba941a2",
      "parents": [
        "e4dc5b7a36a49eff97050894cf1b3a9a02523717"
      ],
      "author": {
        "name": "Darren Hart",
        "email": "dvhltc@us.ibm.com",
        "time": "Thu Mar 12 15:11:18 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Mar 13 01:15:46 2009 +0100"
      },
      "message": "futex: remove the pointer math from double_unlock_hb\n\nImpact: simplify code\n\nI mistakenly included the pointer value ordering in the\ndouble_unlock_hb() in my previous patch. It\u0027s only necessary\nin the double_lock_hb() function. This patch removes it.\n\nSigned-off-by: Darren Hart \u003cdvhltc@us.ibm.com\u003e\nAcked-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nLKML-Reference: \u003c20090312221118.11146.68610.stgit@Aeon\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "e4dc5b7a36a49eff97050894cf1b3a9a02523717",
      "tree": "91a0aceb21b1869385507c2631bf97fbf180697b",
      "parents": [
        "e8f6386c01a5699c115bdad10271a24076364c97"
      ],
      "author": {
        "name": "Darren Hart",
        "email": "dvhltc@us.ibm.com",
        "time": "Thu Mar 12 00:56:13 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Mar 12 11:20:57 2009 +0100"
      },
      "message": "futex: clean up fault logic\n\nImpact: cleanup\n\nOlder versions of the futex code held the mmap_sem which had to\nbe dropped in order to call get_user(), so a two-pronged fault\nhandling mechanism was employed to handle faults of the atomic\noperations.  The mmap_sem is no longer held, so get_user()\nshould be adequate.  This patch greatly simplifies the logic and\nimproves legibility.\n\nBuild and boot tested on a 4 way Intel x86_64 workstation.\nPasses basic pthread_mutex and PI tests out of\nltp/testcases/realtime.\n\nSigned-off-by: Darren Hart \u003cdvhltc@us.ibm.com\u003e\nAcked-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nLKML-Reference: \u003c20090312075612.9856.48612.stgit@Aeon\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "e8f6386c01a5699c115bdad10271a24076364c97",
      "tree": "7375a9b8961c0e0fd8e25176c7912375aaaa4d1e",
      "parents": [
        "16f4993f4e9860715918efd4eeac928f8de1218b"
      ],
      "author": {
        "name": "Darren Hart",
        "email": "dvhltc@us.ibm.com",
        "time": "Thu Mar 12 00:56:06 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Mar 12 11:20:57 2009 +0100"
      },
      "message": "futex: unlock before returning -EFAULT\n\nImpact: rt-mutex failure case fix\n\nfutex_lock_pi can potentially return -EFAULT with the rt_mutex\nheld.  This seems like the wrong thing to do as userspace should\nassume -EFAULT means the lock was not taken.  Even if it could\nfigure this out, we\u0027d be leaving the pi_state-\u003eowner in an\ninconsistent state.  This patch unlocks the rt_mutex prior to\nreturning -EFAULT to userspace.\n\nBuild and boot tested on a 4 way Intel x86_64 workstation.\nPasses basic pthread_mutex and PI tests out of\nltp/testcases/realtime.\n\nSigned-off-by: Darren Hart \u003cdvhltc@us.ibm.com\u003e\nAcked-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nLKML-Reference: \u003c20090312075606.9856.88729.stgit@Aeon\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "16f4993f4e9860715918efd4eeac928f8de1218b",
      "tree": "d5416de0cd3df09700e58c8148f67d6963ba19e9",
      "parents": [
        "5eb3dc62fc5986e85715041c23dcf3832812be4b"
      ],
      "author": {
        "name": "Darren Hart",
        "email": "dvhltc@us.ibm.com",
        "time": "Thu Mar 12 00:55:59 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Mar 12 11:20:57 2009 +0100"
      },
      "message": "futex: use current-\u003etime_slack_ns for rt tasks too\n\nRT tasks should set their timer slack to 0 on their own.  This\npatch removes the \u0027if (rt_task()) slack \u003d 0;\u0027 block in\nfutex_wait.\n\nBuild and boot tested on a 4 way Intel x86_64 workstation.\nPasses basic pthread_mutex and PI tests out of\nltp/testcases/realtime.\n\nSigned-off-by: Darren Hart \u003cdvhltc@us.ibm.com\u003e\nAcked-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nLKML-Reference: \u003c20090312075559.9856.28822.stgit@Aeon\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "5eb3dc62fc5986e85715041c23dcf3832812be4b",
      "tree": "e8b55b84cc50841ab7f7c87afdcc3d5e419cb4e9",
      "parents": [
        "de87fcc124a5d4a171aa32707b3265608ebda6e7"
      ],
      "author": {
        "name": "Darren Hart",
        "email": "dvhltc@us.ibm.com",
        "time": "Thu Mar 12 00:55:52 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Mar 12 11:20:56 2009 +0100"
      },
      "message": "futex: add double_unlock_hb()\n\nImpact: cleanup\n\nThe futex code uses double_lock_hb() which locks the hb-\u003elock\u0027s\nin pointer value order.  There is no parallel unlock routine,\nand the code unlocks them in name order, ignoring pointer value.\n\nThis patch adds double_unlock_hb() to refactor the duplicated\ncode segments.\n\nBuild and boot tested on a 4 way Intel x86_64 workstation.\nPasses basic pthread_mutex and PI tests out of\nltp/testcases/realtime.\n\nSigned-off-by: Darren Hart \u003cdvhltc@us.ibm.com\u003e\nAcked-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nLKML-Reference: \u003c20090312075552.9856.48021.stgit@Aeon\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "de87fcc124a5d4a171aa32707b3265608ebda6e7",
      "tree": "5ba695dc0b13c7613c8e9306f9703c1b61ef41fc",
      "parents": [
        "b2d0994b1301fc3a6a89e1889578dac9227840e3"
      ],
      "author": {
        "name": "Darren Hart",
        "email": "dvhltc@us.ibm.com",
        "time": "Thu Mar 12 00:55:46 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Mar 12 11:20:56 2009 +0100"
      },
      "message": "futex: additional (get|put)_futex_key() fixes\n\nImpact: fix races\n\nfutex_requeue and futex_lock_pi still had some bad\n(get|put)_futex_key() usage. This patch adds the missing\nput_futex_keys() and corrects a goto in futex_lock_pi() to avoid\na double get.\n\nBuild and boot tested on a 4 way Intel x86_64 workstation.\nPasses basic pthread_mutex and PI tests out of\nltp/testcases/realtime.\n\nSigned-off-by: Darren Hart \u003cdvhltc@us.ibm.com\u003e\nAcked-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nLKML-Reference: \u003c20090312075545.9856.75152.stgit@Aeon\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "b2d0994b1301fc3a6a89e1889578dac9227840e3",
      "tree": "176a417a86d7072b014f1f872787eff7da2034de",
      "parents": [
        "ebdcc81c71937b30e09110c02a1e8a21fa770b6f"
      ],
      "author": {
        "name": "Darren Hart",
        "email": "dvhltc@us.ibm.com",
        "time": "Thu Mar 12 00:55:37 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Mar 12 11:20:55 2009 +0100"
      },
      "message": "futex: update futex commentary\n\nImpact: cleanup\n\nThe futex_hash_bucket can be a bit confusing when first looking\nat the code as it is a shared queue (and futex_q isn\u0027t a queue\nat all, but rather an element on the queue).\n\nThe mmap_sem is no longer held outside of the\nfutex_handle_fault() routine, yet numerous comments refer to it.\nThe fshared argument is no an integer.  I left some of these\ncomments along as they are simply removed in future patches.\n\nSome of the commentary refering to futexes by virtual page\nmappings was not very clear, and completely accurate (as for\nshared futexes both the page and the offset are used to\ndetermine the key).  For the purposes of the function\ndescription, just referring to \"the futex\" seems sufficient.\n\nWith hashed futexes we now access the page after the hash-bucket\nis locked, and not only after it is enqueued.\n\nSigned-off-by: Darren Hart \u003cdvhltc@us.ibm.com\u003e\nAcked-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nLKML-Reference: \u003c20090312075537.9856.29954.stgit@Aeon\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "2fff78c784ed97a8e5aa225ef5228f0a6d862d82",
      "tree": "2adfba52dbd8e410909a538b7c27189932acc995",
      "parents": [
        "6c6f1f0f4db31a192916eaa31ec2f114fda7d5e5"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "peterz@infradead.org",
        "time": "Wed Feb 11 18:10:10 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Feb 11 18:24:08 2009 +0100"
      },
      "message": "futex: fix reference leak\n\nCatalin noticed that (38d47c1b7075: futex: rely on get_user_pages() for\nshared futexes) caused an mm_struct leak.\n\nSome tracing with the function graph tracer quickly pointed out that\nfutex_wait() has exit paths with unbalanced reference counts.\n\nThis regression was discovered by kmemleak.\n\nReported-by: Catalin Marinas \u003ccatalin.marinas@arm.com\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nTested-by: \"Pallipadi, Venkatesh\" \u003cvenkatesh.pallipadi@intel.com\u003e\nTested-by: Catalin Marinas \u003ccatalin.marinas@arm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "836f92adf121f806e9beb5b6b88bd5c9c4ea3f24",
      "tree": "0deccad6d01b7761a8d96cbc12b8e9541317380e",
      "parents": [
        "6559eed8ca7db0531a207cd80be5e28cd6f213c5"
      ],
      "author": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Wed Jan 14 14:14:33 2009 +0100"
      },
      "committer": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Wed Jan 14 14:15:31 2009 +0100"
      },
      "message": "[CVE-2009-0029] System call wrappers part 31\n\nSigned-off-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\n"
    },
    {
      "commit": "17da2bd90abf428523de0fb98f7075e00e3ed42e",
      "tree": "4f2daf3cb792b7da62e6ae771b58902cc5ea24ab",
      "parents": [
        "754fe8d297bfae7b77f7ce866e2fb0c5fb186506"
      ],
      "author": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Wed Jan 14 14:14:10 2009 +0100"
      },
      "committer": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Wed Jan 14 14:15:21 2009 +0100"
      },
      "message": "[CVE-2009-0029] System call wrappers part 08\n\nSigned-off-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\n"
    },
    {
      "commit": "fdbc0450df12cc9cb397f3497db4b0cad7c1a8ff",
      "tree": "3d266bd156f140f06b22f27784a7487bba6d6da5",
      "parents": [
        "46483d10e5123d78cf9abf37577aa8e75f18b8a4",
        "90621c40cc4ab7b0a414311ce37e7cc7173403b6",
        "ea319518ba3de282c13ae1cf4bf2215c5e03e67e",
        "238c6d54830c624f34ac9cf123ac04aebfca5013"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Jan 06 09:32:11 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Jan 06 09:32:11 2009 +0100"
      },
      "message": "Merge branches \u0027core/futexes\u0027, \u0027core/locking\u0027, \u0027core/rcu\u0027 and \u0027linus\u0027 into core/urgent\n"
    },
    {
      "commit": "90621c40cc4ab7b0a414311ce37e7cc7173403b6",
      "tree": "3f5797462898f3f85bad1a31df04e671df8aadd3",
      "parents": [
        "42d35d48ce7cefb9429880af19d1c329d1554e7a"
      ],
      "author": {
        "name": "Darren Hart",
        "email": "dvhltc@us.ibm.com",
        "time": "Mon Dec 29 19:43:21 2008 -0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jan 02 23:10:44 2009 +0100"
      },
      "message": "futex: catch certain assymetric (get|put)_futex_key calls\n\nImpact: add debug check\n\nFollowing up on my previous key reference accounting patches, this patch\nwill catch puts on keys that haven\u0027t been \"got\".  This won\u0027t catch nested\nget/put mismatches though.\n\nBuild and boot tested, with minimal desktop activity and a run of the\nopen_posix_testsuite in LTP for testing.  No warnings logged.\n\nSigned-off-by: Darren Hart \u003cdvhltc@us.ibm.com\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "5f34fe1cfc1bdd8b4711bbe37421fba4ed0d1ed4",
      "tree": "85b21c8bb0e53005bd970d648ca093acfd0584a3",
      "parents": [
        "eca1bf5b4fab56d2feb1572d34d59fcd92ea7df3",
        "6638101c1124c19c8a65b1645e4ecd09e0572f3e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 30 16:10:19 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 30 16:10:19 2008 -0800"
      },
      "message": "Merge branch \u0027core-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027core-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (63 commits)\n  stacktrace: provide save_stack_trace_tsk() weak alias\n  rcu: provide RCU options on non-preempt architectures too\n  printk: fix discarding message when recursion_bug\n  futex: clean up futex_(un)lock_pi fault handling\n  \"Tree RCU\": scalable classic RCU implementation\n  futex: rename field in futex_q to clarify single waiter semantics\n  x86/swiotlb: add default swiotlb_arch_range_needs_mapping\n  x86/swiotlb: add default phys\u003c-\u003ebus conversion\n  x86: unify pci iommu setup and allow swiotlb to compile for 32 bit\n  x86: add swiotlb allocation functions\n  swiotlb: consolidate swiotlb info message printing\n  swiotlb: support bouncing of HighMem pages\n  swiotlb: factor out copy to/from device\n  swiotlb: add arch hook to force mapping\n  swiotlb: allow architectures to override phys\u003c-\u003ebus\u003c-\u003ephys conversions\n  swiotlb: add comment where we handle the overflow of a dma mask on 32 bit\n  rcu: fix rcutorture behavior during reboot\n  resources: skip sanity check of busy resources\n  swiotlb: move some definitions to header\n  swiotlb: allow architectures to override swiotlb pool allocation\n  ...\n\nFix up trivial conflicts in\n  arch/x86/kernel/Makefile\n  arch/x86/mm/init_32.c\n  include/linux/hardirq.h\nas per Ingo\u0027s suggestions.\n"
    },
    {
      "commit": "42d35d48ce7cefb9429880af19d1c329d1554e7a",
      "tree": "a8c73b7ffd1e481e3b5152e3142c9feb5f7464a1",
      "parents": [
        "b56863630ddbdea6e22df8835f78f0b1da037103"
      ],
      "author": {
        "name": "Darren Hart",
        "email": "dvhltc@us.ibm.com",
        "time": "Mon Dec 29 15:49:53 2008 -0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Dec 30 06:38:15 2008 +0100"
      },
      "message": "futex: make futex_(get|put)_key() calls symmetric\n\nImpact: cleanup\n\nThis patch makes the calls to futex_get_key_refs() and futex_drop_key_refs()\nexplicitly symmetric by only \"putting\" keys we successfully \"got\".  Also\ncleanup a couple return points that didn\u0027t \"put\" after a successful \"get\".\n\nBuild and boot tested on an x86_64 system.\n\nSigned-off-by: Darren Hart \u003cdvhltc@us.ibm.com\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "b56863630ddbdea6e22df8835f78f0b1da037103",
      "tree": "7b04a35cc94be4e40708855ec644bdaf69e77d65",
      "parents": [
        "73500ac545d24610eb2cf8579ffc88957e9c5847"
      ],
      "author": {
        "name": "Darren Hart",
        "email": "dvhltc@us.ibm.com",
        "time": "Thu Dec 18 15:06:34 2008 -0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Dec 19 09:20:21 2008 +0100"
      },
      "message": "futex: clean up futex_(un)lock_pi fault handling\n\nImpact: cleanup\n\nSome apparently left over cruft code was complicating the fault logic:\n\nTesting if uval !\u003d -EFAULT doesn\u0027t have any meaning, get_user() sets ret\nto either 0 or -EFAULT, there\u0027s no need to compare uval, especially not\nagainst EFAULT which it will never be.  This patch removes the superfluous\ntest and clarifies the comment blocks.\n\nBuild and boot tested on an 8way x86_64 system.\n\nSigned-off-by: Darren Hart \u003cdvhltc@us.ibm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "73500ac545d24610eb2cf8579ffc88957e9c5847",
      "tree": "1e36cc5585bd25a1d8cbe973d229250bee0cef32",
      "parents": [
        "1acdac104668a0834cfa267de9946fac7764d486"
      ],
      "author": {
        "name": "Darren Hart",
        "email": "dvhltc@us.ibm.com",
        "time": "Wed Dec 17 17:29:56 2008 -0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Dec 18 11:42:23 2008 +0100"
      },
      "message": "futex: rename field in futex_q to clarify single waiter semantics\n\nImpact: simplify code\n\nI\u0027ve tripped over the naming of this field a couple times.\n\nThe futex_q uses a \"waiters\" list to represent a single blocked task and\nthen calles wake_up_all().\n\nThis can lead to confusion in trying to understand the intent of the code,\nwhich is to have a single futex_q for every task waiting on a futex.\n\nThis patch corrects the problem, using a single pointer to the waiting\ntask, and an appropriate call to wake_up, rather than wake_up_all.\n\nCompile and boot tested on an 8way x86_64 machine.\n\nSigned-off-by: Darren Hart \u003cdvhltc@us.ibm.com\u003e\nAcked-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "1acdac104668a0834cfa267de9946fac7764d486",
      "tree": "bae8ffeb2425412c0bffbdf728b45104fe3178f2",
      "parents": [
        "3e1d7a6219ab64e13b10b1a77c0625db9a8bd8db"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Thu Nov 20 10:02:53 2008 -0800"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Nov 24 20:00:40 2008 +0100"
      },
      "message": "futex: make clock selectable for FUTEX_WAIT_BITSET\n\nFUTEX_WAIT_BITSET could be used instead of FUTEX_WAIT by setting the\nbit set to FUTEX_BITSET_MATCH_ANY, but FUTEX_WAIT uses CLOCK_REALTIME\nwhile FUTEX_WAIT_BITSET uses CLOCK_MONOTONIC.\n\nAdd a flag to select CLOCK_REALTIME for FUTEX_WAIT_BITSET so glibc can\nreplace the FUTEX_WAIT logic which needs to do gettimeofday() calls\nbefore and after the syscall to convert the absolute timeout to a\nrelative timeout for FUTEX_WAIT.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Ulrich Drepper \u003cdrepper@redhat.com\u003e\n\n"
    },
    {
      "commit": "3e1d7a6219ab64e13b10b1a77c0625db9a8bd8db",
      "tree": "c682da7317845d7b1336e3d8498cf83bdf8f5900",
      "parents": [
        "42569c39917a08e8de1e8b5685463be7b74baebd",
        "13d428afc007fcfcd6deeb215618f54cf9c0cae6"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Nov 24 19:54:37 2008 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Nov 24 19:54:37 2008 +0100"
      },
      "message": "Merge branch \u0027linus\u0027 into core/futexes\n"
    },
    {
      "commit": "c69e8d9c01db2adc503464993c358901c9af9de4",
      "tree": "bed94aaa9aeb7a7834d1c880f72b62a11a752c78",
      "parents": [
        "86a264abe542cfececb4df129bc45a0338d8cdb9"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Nov 14 10:39:19 2008 +1100"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Fri Nov 14 10:39:19 2008 +1100"
      },
      "message": "CRED: Use RCU to access another task\u0027s creds and to release a task\u0027s own creds\n\nUse RCU to access another task\u0027s creds and to release a task\u0027s own creds.\nThis means that it will be possible for the credentials of a task to be\nreplaced without another task (a) requiring a full lock to read them, and (b)\nseeing deallocated memory.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: James Morris \u003cjmorris@namei.org\u003e\nAcked-by: Serge Hallyn \u003cserue@us.ibm.com\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "b6dff3ec5e116e3af6f537d4caedcad6b9e5082a",
      "tree": "9e76f972eb7ce9b84e0146c8e4126a3f86acb428",
      "parents": [
        "15a2460ed0af7538ca8e6c610fe607a2cd9da142"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Nov 14 10:39:16 2008 +1100"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Fri Nov 14 10:39:16 2008 +1100"
      },
      "message": "CRED: Separate task security context from task_struct\n\nSeparate the task security context from task_struct.  At this point, the\nsecurity data is temporarily embedded in the task_struct with two pointers\npointing to it.\n\nNote that the Alpha arch is altered as it refers to (E)UID and (E)GID in\nentry.S via asm-offsets.\n\nWith comment fixes Signed-off-by: Marc Dionne \u003cmarc.c.dionne@gmail.com\u003e\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: James Morris \u003cjmorris@namei.org\u003e\nAcked-by: Serge Hallyn \u003cserue@us.ibm.com\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "76aac0e9a17742e60d408be1a706e9aaad370891",
      "tree": "e873a000d9c96209726e0958e311f005c13b2ed5",
      "parents": [
        "b103c59883f1ec6e4d548b25054608cb5724453c"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Nov 14 10:39:12 2008 +1100"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Fri Nov 14 10:39:12 2008 +1100"
      },
      "message": "CRED: Wrap task credential accesses in the core kernel\n\nWrap access to task credentials so that they can be separated more easily from\nthe task_struct during the introduction of COW creds.\n\nChange most current-\u003e(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id().\n\nChange some task-\u003ee?[ug]id to task_e?[ug]id().  In some places it makes more\nsense to use RCU directly rather than a convenient wrapper; these will be\naddressed by later patches.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nReviewed-by: James Morris \u003cjmorris@namei.org\u003e\nAcked-by: Serge Hallyn \u003cserue@us.ibm.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: linux-audit@redhat.com\nCc: containers@lists.linux-foundation.org\nCc: linux-mm@kvack.org\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "42569c39917a08e8de1e8b5685463be7b74baebd",
      "tree": "94c451340cd59bf30d226fdc10068f4dd46b27a4",
      "parents": [
        "c2f9f20154bfb137ccdf8c9159992429a40dfe20"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Tue Sep 30 12:33:07 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Sep 30 12:36:02 2008 +0200"
      },
      "message": "futex: fixup get_futex_key() for private futexes\n\nWith the get_user_pages_fast() patches we made get_futex_key() obtain a\nreference on the returned key, but failed to do so for private futexes.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nAcked-by: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "c2f9f20154bfb137ccdf8c9159992429a40dfe20",
      "tree": "d9f38f55b9c490967393919a10929bac3d6a7dff",
      "parents": [
        "734b05b10e51d4ba38c8fc3ee02e846aab09eedf"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Fri Sep 26 19:32:23 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Sep 30 12:35:54 2008 +0200"
      },
      "message": "futex: cleanup fshared\n\nfshared doesn\u0027t need to be a rw_sem pointer anymore, so clean that up.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nAcked-by: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "734b05b10e51d4ba38c8fc3ee02e846aab09eedf",
      "tree": "f9d98cdeb64e2077a77fb8f65b4ab7e331b6fca9",
      "parents": [
        "61270708ecf1cda148e84fbf6e0703ee5aa81814"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Fri Sep 26 19:32:22 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Sep 30 12:35:46 2008 +0200"
      },
      "message": "futex: use fast_gup()\n\nChange the get_user_pages() call with fast_gup() which doesn\u0027t require holding\nthe mmap_sem thereby removing the mmap_sem from all fast paths.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nAcked-by: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "61270708ecf1cda148e84fbf6e0703ee5aa81814",
      "tree": "4c5bf27f99e5371da667e8c4105d2839e664409a",
      "parents": [
        "38d47c1b7075bd7ec3881141bb3629da58f88dab"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Fri Sep 26 19:32:21 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Sep 30 12:35:36 2008 +0200"
      },
      "message": "futex: reduce mmap_sem usage\n\nnow that we rely on get_user_pages() for the shared key handling\nmove all the mmap_sem stuff closely around the slow paths.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nAcked-by: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "38d47c1b7075bd7ec3881141bb3629da58f88dab",
      "tree": "44c6ddc753738e69c908706a6b0cad04a7b59f95",
      "parents": [
        "94aca1dac6f6d21f4b07e4864baf7768cabcc6e7"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Fri Sep 26 19:32:20 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Sep 30 12:35:20 2008 +0200"
      },
      "message": "futex: rely on get_user_pages() for shared futexes\n\nOn the way of getting rid of the mmap_sem requirement for shared futexes,\nstart by relying on get_user_pages().\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nAcked-by: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "ae4b748e81b7e366f04f55229d5e372e372c33af",
      "tree": "27ce1d7a205df69c79bbdd35fc721401d79a13cb",
      "parents": [
        "3bd012060f962567aadb52b27b2fc8fdc91102c7"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Mon Sep 08 09:03:57 2008 -0700"
      },
      "committer": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Thu Sep 11 07:17:00 2008 -0700"
      },
      "message": "hrtimer: make the futex() system call use the per process slack value\n\nThis patch makes the futex() system call use the per process\nslack value; with this users are able to externally control existing\napplications to reduce the wakeup rate.\n\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\n"
    },
    {
      "commit": "cc584b213f252bf698849cf4be2377cd3ec7501a",
      "tree": "621ba11da6a2ab8598f9ed453836cd2c44192260",
      "parents": [
        "23dd7bb09bd8d7efd8a602aed97b93d52f85e675"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Mon Sep 01 15:02:30 2008 -0700"
      },
      "committer": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Fri Sep 05 21:35:13 2008 -0700"
      },
      "message": "hrtimer: convert kernel/* to the new hrtimer apis\n\nIn order to be able to do range hrtimers we need to use accessor functions\nto the \"expire\" member of the hrtimer struct.\nThis patch converts kernel/* to these accessors.\n\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\n"
    }
  ],
  "next": "1b7558e457ed0de61023cfc913d2c342c7c3d9f2"
}
