)]}'
{
  "log": [
    {
      "commit": "35010334aa007480a833401b80922299cb1a15ef",
      "tree": "6e318eb89da45d37ea8dceddd1ae6858b74dee1e",
      "parents": [
        "8ce9a75a307e142a8871c649627555e0e4a1eefb",
        "be716615fe596ee117292dc615e95f707fb67fd1"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Feb 17 14:27:39 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Feb 17 14:27:39 2009 -0800"
      },
      "message": "Merge branch \u0027x86-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027x86-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  x86, vm86: fix preemption bug\n  x86, olpc: fix model detection without OFW\n  x86, hpet: fix for LS21 + HPET \u003d boot hang\n  x86: CPA avoid repeated lazy mmu flush\n  x86: warn if arch_flush_lazy_mmu_cpu is called in preemptible context\n  x86/paravirt: make arch_flush_lazy_mmu/cpu disable preemption\n  x86, pat: fix warn_on_once() while mapping 0-1MB range with /dev/mem\n  x86/cpa: make sure cpa is safe to call in lazy mmu mode\n  x86, ptrace, mm: fix double-free on race\n"
    },
    {
      "commit": "9f339e7028e2855717af3193c938f9960ad13b38",
      "tree": "76e0e9181f4ee2b324742d517518e837d5c250bf",
      "parents": [
        "06eb23b1ba39c61ee5d5faeb42a097635693e370"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Wed Feb 11 15:10:27 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Feb 11 15:44:20 2009 +0100"
      },
      "message": "x86, ptrace, mm: fix double-free on race\n\nPtrace_detach() races with __ptrace_unlink() if the traced task is\nreaped while detaching. This might cause a double-free of the BTS\nbuffer.\n\nChange the ptrace_detach() path to only do the memory accounting in\nptrace_bts_detach() and leave the buffer free to ptrace_bts_untrace()\nwhich will be called from __ptrace_unlink().\n\nThe fix follows a proposal from Oleg Nesterov.\n\nReported-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "d5b562330ec766292a3ac54ae5e0673610bd5b3d",
      "tree": "a0e10b64c1f7264efd073bbb0d93011c2064730f",
      "parents": [
        "8e4921515c1a379539607eb443d51c30f4f7f338"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Sun Feb 08 20:56:58 2009 +0000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Feb 08 13:53:28 2009 -0800"
      },
      "message": "mm: fix error case in mlock downgrade reversion\n\nCommit 27421e211a39784694b597dbf35848b88363c248, Manually revert\n\"mlock: downgrade mmap sem while populating mlocked regions\", has\nintroduced its own regression: __mlock_vma_pages_range() may report\nan error (for example, -EFAULT from trying to lock down pages from\nbeyond EOF), but mlock_vma_pages_range() must hide that from its\ncallers as before.\n\nReported-by: Sami Farin \u003csafari-kernel@safari.iki.fi\u003e\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "27421e211a39784694b597dbf35848b88363c248",
      "tree": "8d9a06e453c40dea7db3a3d0d9d3d864690427db",
      "parents": [
        "45c82b5a770be66845687a7d027c8b52946d59af"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Feb 01 11:00:16 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Feb 01 11:00:16 2009 -0800"
      },
      "message": "Manually revert \"mlock: downgrade mmap sem while populating mlocked regions\"\n\nThis essentially reverts commit 8edb08caf68184fb170f4f69c7445929e199eaea.\n\nIt downgraded our mmap semaphore to a read-lock while mlocking pages, in\norder to allow other threads (and external accesses like \"ps\" et al) to\nwalk the vma lists and take page faults etc.  Which is a nice idea, but\nthe implementation does not work.\n\nBecause we cannot upgrade the lock back to a write lock without\nreleasing the mmap semaphore, the code had to release the lock entirely\nand then re-take it as a writelock.  However, that meant that the caller\npossibly lost the vma chain that it was following, since now another\nthread could come in and mmap/munmap the range.\n\nThe code tried to work around that by just looking up the vma again and\nerroring out if that happened, but quite frankly, that was just a buggy\nhack that doesn\u0027t actually protect against anything (the other thread\ncould just have replaced the vma with another one instead of totally\nunmapping it).\n\nThe only way to downgrade to a read map _reliably_ is to do it at the\nend, which is likely the right thing to do: do all the \u0027vma\u0027 operations\nwith the write-lock held, then downgrade to a read after completing them\nall, and then do the \"populate the newly mlocked regions\" while holding\njust the read lock.  And then just drop the read-lock and return to user\nspace.\n\nThe (perhaps somewhat simpler) alternative is to just make all the\ncallers of mlock_vma_pages_range() know that the mmap lock got dropped,\nand just re-grab the mmap semaphore if it needs to mlock more than one\nvma region.\n\nSo we can do this \"downgrade mmap sem while populating mlocked regions\"\nthing right, but the way it was done here was absolutely not correct.\nThus the revert, in the expectation that we will do it all correctly\nsome day.\n\nCc: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: stable@kernel.org\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3480b25743cb7404928d57efeaa3d085708b04c2",
      "tree": "14d7b42301f2e76cea6772c446f3ee920b29a1b6",
      "parents": [
        "6a6160a7b5c27b3c38651baef92a14fa7072b3c1"
      ],
      "author": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Wed Jan 14 14:14:16 2009 +0100"
      },
      "committer": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Wed Jan 14 14:15:24 2009 +0100"
      },
      "message": "[CVE-2009-0029] System call wrappers part 14\n\nSigned-off-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\n"
    },
    {
      "commit": "6a6160a7b5c27b3c38651baef92a14fa7072b3c1",
      "tree": "a4a7640bd12611c445dfc013f69ce307674d1b13",
      "parents": [
        "64fd1de3d821659ac0a3004fd5ee1de59e64af30"
      ],
      "author": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Wed Jan 14 14:14:15 2009 +0100"
      },
      "committer": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Wed Jan 14 14:15:23 2009 +0100"
      },
      "message": "[CVE-2009-0029] System call wrappers part 13\n\nSigned-off-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\n"
    },
    {
      "commit": "4779280d1ea4d361af13ae77ba55217fbcd16d4c",
      "tree": "1abb35d85f2280aebb9cd565cc223d14b8731203",
      "parents": [
        "91bf189c3a766927694ce9de7d545e96b23f20fc"
      ],
      "author": {
        "name": "Ying Han",
        "email": "yinghan@google.com",
        "time": "Tue Jan 06 14:40:18 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:08 2009 -0800"
      },
      "message": "mm: make get_user_pages() interruptible\n\nThe initial implementation of checking TIF_MEMDIE covers the cases of OOM\nkilling.  If the process has been OOM killed, the TIF_MEMDIE is set and it\nreturn immediately.  This patch includes:\n\n1.  add the case that the SIGKILL is sent by user processes.  The\n   process can try to get_user_pages() unlimited memory even if a user\n   process has sent a SIGKILL to it(maybe a monitor find the process\n   exceed its memory limit and try to kill it).  In the old\n   implementation, the SIGKILL won\u0027t be handled until the get_user_pages()\n   returns.\n\n2.  change the return value to be ERESTARTSYS.  It makes no sense to\n   return ENOMEM if the get_user_pages returned by getting a SIGKILL\n   signal.  Considering the general convention for a system call\n   interrupted by a signal is ERESTARTNOSYS, so the current return value\n   is consistant to that.\n\nLee:\n\nAn unfortunate side effect of \"make-get_user_pages-interruptible\" is that\nit prevents a SIGKILL\u0027d task from munlock-ing pages that it had mlocked,\nresulting in freeing of mlocked pages.  Freeing of mlocked pages, in\nitself, is not so bad.  We just count them now--altho\u0027 I had hoped to\nremove this stat and add PG_MLOCKED to the free pages flags check.\n\nHowever, consider pages in shared libraries mapped by more than one task\nthat a task mlocked--e.g., via mlockall().  If the task that mlocked the\npages exits via SIGKILL, these pages would be left mlocked and\nunevictable.\n\nProposed fix:\n\nAdd another GUP flag to ignore sigkill when calling get_user_pages from\nmunlock()--similar to Kosaki Motohiro\u0027s \u0027IGNORE_VMA_PERMISSIONS flag for\nthe same purpose.  We are not actually allocating memory in this case,\nwhich \"make-get_user_pages-interruptible\" intends to avoid.  We\u0027re just\nmunlocking pages that are already resident and mapped, and we\u0027re reusing\nget_user_pages() to access those pages.\n\n??  Maybe we should combine \u0027IGNORE_VMA_PERMISSIONS and \u0027_IGNORE_SIGKILL\ninto a single flag: GUP_FLAGS_MUNLOCK ???\n\n[Lee.Schermerhorn@hp.com: ignore sigkill in get_user_pages during munlock]\nSigned-off-by: Paul Menage \u003cmenage@google.com\u003e\nSigned-off-by: Ying Han \u003cyinghan@google.com\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nReviewed-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: Rohit Seth \u003crohitseth@google.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c5dee6177f4bd2095aab7d9be9f6ebdddd6deee9",
      "tree": "fb980dcfc3d3e6f04d4dcef488c370ca653434da",
      "parents": [
        "bf53de907dfdaac178c92d774aae7370d7b97d20"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Fri Dec 19 15:17:02 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Dec 20 09:15:47 2008 +0100"
      },
      "message": "x86, bts: memory accounting\n\nImpact: move the BTS buffer accounting to the mlock bucket\n\nAdd alloc_locked_buffer() and free_locked_buffer() functions to mm/mlock.c\nto kalloc a buffer and account the locked memory to current.\n\nAccount the memory for the BTS buffer to the tracer.\n\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "72eb8c6747b49e41fd2b042510f03ac7c13426fc",
      "tree": "813916b3188d29c1bd3efe604183b9f4e88aaf58",
      "parents": [
        "e14c8bf86350f6c39186a139c5c584a6111b2f01"
      ],
      "author": {
        "name": "Helge Deller",
        "email": "deller@gmx.de",
        "time": "Mon Nov 17 00:30:57 2008 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Nov 16 15:55:36 2008 -0800"
      },
      "message": "unitialized return value in mm/mlock.c: __mlock_vma_pages_range()\n\nFix an unitialized return value when compiling on parisc (with CONFIG_UNEVICTABLE_LRU\u003dy):\n\tmm/mlock.c: In function `__mlock_vma_pages_range\u0027:\n\tmm/mlock.c:165: warning: `ret\u0027 might be used uninitialized in this function\n\nSigned-off-by: Helge Deller \u003cdeller@gmx.de\u003e\n[ It isn\u0027t ever really used uninitialized, since no caller should ever\n  call this function with an empty range.  But the compiler is correct\n  that from a local analysis standpoint that is impossible to see, and\n  fixing the warning is appropriate.  ]\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8891d6da17db0f9bb507d3a017f130b9970c3087",
      "tree": "fd0fa107c4b85649722b9921a4bcdb35776eb36f",
      "parents": [
        "a189d0350f387786b1fb5a5d19e3a5ab0bc0cceb"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Wed Nov 12 13:26:53 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Nov 12 17:17:16 2008 -0800"
      },
      "message": "mm: remove lru_add_drain_all() from the munlock path\n\nlockdep warns about following message at boot time on one of my test\nmachine.  Then, schedule_on_each_cpu() sholdn\u0027t be called when the task\nhave mmap_sem.\n\nActually, lru_add_drain_all() exist to prevent the unevictalble pages\nstay on reclaimable lru list.  but currenct unevictable code can rescue\nunevictable pages although it stay on reclaimable list.\n\nSo removing is better.\n\nIn addition, this patch add lru_add_drain_all() to sys_mlock() and\nsys_mlockall().  it isn\u0027t must.  but it reduce the failure of moving to\nunevictable list.  its failure can rescue in vmscan later.  but reducing\nis better.\n\nNote, if above rescuing happend, the Mlocked and the Unevictable field\nmismatching happend in /proc/meminfo.  but it doesn\u0027t cause any real\ntrouble.\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n[ INFO: possible circular locking dependency detected ]\n2.6.28-rc2-mm1 #2\n-------------------------------------------------------\nlvm/1103 is trying to acquire lock:\n (\u0026cpu_hotplug.lock){--..}, at: [\u003cc0130789\u003e] get_online_cpus+0x29/0x50\n\nbut task is already holding lock:\n (\u0026mm-\u003emmap_sem){----}, at: [\u003cc01878ae\u003e] sys_mlockall+0x4e/0xb0\n\nwhich lock already depends on the new lock.\n\nthe existing dependency chain (in reverse order) is:\n\n-\u003e #3 (\u0026mm-\u003emmap_sem){----}:\n       [\u003cc0153da2\u003e] check_noncircular+0x82/0x110\n       [\u003cc0185e6a\u003e] might_fault+0x4a/0xa0\n       [\u003cc0156161\u003e] validate_chain+0xb11/0x1070\n       [\u003cc0185e6a\u003e] might_fault+0x4a/0xa0\n       [\u003cc0156923\u003e] __lock_acquire+0x263/0xa10\n       [\u003cc015714c\u003e] lock_acquire+0x7c/0xb0\t\t\t(*) grab mmap_sem\n       [\u003cc0185e6a\u003e] might_fault+0x4a/0xa0\n       [\u003cc0185e9b\u003e] might_fault+0x7b/0xa0\n       [\u003cc0185e6a\u003e] might_fault+0x4a/0xa0\n       [\u003cc0294dd0\u003e] copy_to_user+0x30/0x60\n       [\u003cc01ae3ec\u003e] filldir+0x7c/0xd0\n       [\u003cc01e3a6a\u003e] sysfs_readdir+0x11a/0x1f0\t\t\t(*) grab sysfs_mutex\n       [\u003cc01ae370\u003e] filldir+0x0/0xd0\n       [\u003cc01ae370\u003e] filldir+0x0/0xd0\n       [\u003cc01ae4c6\u003e] vfs_readdir+0x86/0xa0\t\t\t(*) grab i_mutex\n       [\u003cc01ae75b\u003e] sys_getdents+0x6b/0xc0\n       [\u003cc010355a\u003e] syscall_call+0x7/0xb\n       [\u003cffffffff\u003e] 0xffffffff\n\n-\u003e #2 (sysfs_mutex){--..}:\n       [\u003cc0153da2\u003e] check_noncircular+0x82/0x110\n       [\u003cc01e3d2c\u003e] sysfs_addrm_start+0x2c/0xc0\n       [\u003cc0156161\u003e] validate_chain+0xb11/0x1070\n       [\u003cc01e3d2c\u003e] sysfs_addrm_start+0x2c/0xc0\n       [\u003cc0156923\u003e] __lock_acquire+0x263/0xa10\n       [\u003cc015714c\u003e] lock_acquire+0x7c/0xb0\t\t\t(*) grab sysfs_mutex\n       [\u003cc01e3d2c\u003e] sysfs_addrm_start+0x2c/0xc0\n       [\u003cc04f8b55\u003e] mutex_lock_nested+0xa5/0x2f0\n       [\u003cc01e3d2c\u003e] sysfs_addrm_start+0x2c/0xc0\n       [\u003cc01e3d2c\u003e] sysfs_addrm_start+0x2c/0xc0\n       [\u003cc01e3d2c\u003e] sysfs_addrm_start+0x2c/0xc0\n       [\u003cc01e422f\u003e] create_dir+0x3f/0x90\n       [\u003cc01e42a9\u003e] sysfs_create_dir+0x29/0x50\n       [\u003cc04faaf5\u003e] _spin_unlock+0x25/0x40\n       [\u003cc028f21d\u003e] kobject_add_internal+0xcd/0x1a0\n       [\u003cc028f37a\u003e] kobject_set_name_vargs+0x3a/0x50\n       [\u003cc028f41d\u003e] kobject_init_and_add+0x2d/0x40\n       [\u003cc019d4d2\u003e] sysfs_slab_add+0xd2/0x180\n       [\u003cc019d580\u003e] sysfs_add_func+0x0/0x70\n       [\u003cc019d5dc\u003e] sysfs_add_func+0x5c/0x70\t\t\t(*) grab slub_lock\n       [\u003cc01400f2\u003e] run_workqueue+0x172/0x200\n       [\u003cc014008f\u003e] run_workqueue+0x10f/0x200\n       [\u003cc0140bd0\u003e] worker_thread+0x0/0xf0\n       [\u003cc0140c6c\u003e] worker_thread+0x9c/0xf0\n       [\u003cc0143c80\u003e] autoremove_wake_function+0x0/0x50\n       [\u003cc0140bd0\u003e] worker_thread+0x0/0xf0\n       [\u003cc0143972\u003e] kthread+0x42/0x70\n       [\u003cc0143930\u003e] kthread+0x0/0x70\n       [\u003cc01042db\u003e] kernel_thread_helper+0x7/0x1c\n       [\u003cffffffff\u003e] 0xffffffff\n\n-\u003e #1 (slub_lock){----}:\n       [\u003cc0153d2d\u003e] check_noncircular+0xd/0x110\n       [\u003cc04f650f\u003e] slab_cpuup_callback+0x11f/0x1d0\n       [\u003cc0156161\u003e] validate_chain+0xb11/0x1070\n       [\u003cc04f650f\u003e] slab_cpuup_callback+0x11f/0x1d0\n       [\u003cc015433d\u003e] mark_lock+0x35d/0xd00\n       [\u003cc0156923\u003e] __lock_acquire+0x263/0xa10\n       [\u003cc015714c\u003e] lock_acquire+0x7c/0xb0\n       [\u003cc04f650f\u003e] slab_cpuup_callback+0x11f/0x1d0\n       [\u003cc04f93a3\u003e] down_read+0x43/0x80\n       [\u003cc04f650f\u003e] slab_cpuup_callback+0x11f/0x1d0\t\t(*) grab slub_lock\n       [\u003cc04f650f\u003e] slab_cpuup_callback+0x11f/0x1d0\n       [\u003cc04fd9ac\u003e] notifier_call_chain+0x3c/0x70\n       [\u003cc04f5454\u003e] _cpu_up+0x84/0x110\n       [\u003cc04f552b\u003e] cpu_up+0x4b/0x70\t\t\t\t(*) grab cpu_hotplug.lock\n       [\u003cc06d1530\u003e] kernel_init+0x0/0x170\n       [\u003cc06d15e5\u003e] kernel_init+0xb5/0x170\n       [\u003cc06d1530\u003e] kernel_init+0x0/0x170\n       [\u003cc01042db\u003e] kernel_thread_helper+0x7/0x1c\n       [\u003cffffffff\u003e] 0xffffffff\n\n-\u003e #0 (\u0026cpu_hotplug.lock){--..}:\n       [\u003cc0155bff\u003e] validate_chain+0x5af/0x1070\n       [\u003cc040f7e0\u003e] dev_status+0x0/0x50\n       [\u003cc0156923\u003e] __lock_acquire+0x263/0xa10\n       [\u003cc015714c\u003e] lock_acquire+0x7c/0xb0\n       [\u003cc0130789\u003e] get_online_cpus+0x29/0x50\n       [\u003cc04f8b55\u003e] mutex_lock_nested+0xa5/0x2f0\n       [\u003cc0130789\u003e] get_online_cpus+0x29/0x50\n       [\u003cc0130789\u003e] get_online_cpus+0x29/0x50\n       [\u003cc017bc30\u003e] lru_add_drain_per_cpu+0x0/0x10\n       [\u003cc0130789\u003e] get_online_cpus+0x29/0x50\t\t\t(*) grab cpu_hotplug.lock\n       [\u003cc0140cf2\u003e] schedule_on_each_cpu+0x32/0xe0\n       [\u003cc0187095\u003e] __mlock_vma_pages_range+0x85/0x2c0\n       [\u003cc0156945\u003e] __lock_acquire+0x285/0xa10\n       [\u003cc0188f09\u003e] vma_merge+0xa9/0x1d0\n       [\u003cc0187450\u003e] mlock_fixup+0x180/0x200\n       [\u003cc0187548\u003e] do_mlockall+0x78/0x90\t\t\t(*) grab mmap_sem\n       [\u003cc01878e1\u003e] sys_mlockall+0x81/0xb0\n       [\u003cc010355a\u003e] syscall_call+0x7/0xb\n       [\u003cffffffff\u003e] 0xffffffff\n\nother info that might help us debug this:\n\n1 lock held by lvm/1103:\n #0:  (\u0026mm-\u003emmap_sem){----}, at: [\u003cc01878ae\u003e] sys_mlockall+0x4e/0xb0\n\nstack backtrace:\nPid: 1103, comm: lvm Not tainted 2.6.28-rc2-mm1 #2\nCall Trace:\n [\u003cc01555fc\u003e] print_circular_bug_tail+0x7c/0xd0\n [\u003cc0155bff\u003e] validate_chain+0x5af/0x1070\n [\u003cc040f7e0\u003e] dev_status+0x0/0x50\n [\u003cc0156923\u003e] __lock_acquire+0x263/0xa10\n [\u003cc015714c\u003e] lock_acquire+0x7c/0xb0\n [\u003cc0130789\u003e] get_online_cpus+0x29/0x50\n [\u003cc04f8b55\u003e] mutex_lock_nested+0xa5/0x2f0\n [\u003cc0130789\u003e] get_online_cpus+0x29/0x50\n [\u003cc0130789\u003e] get_online_cpus+0x29/0x50\n [\u003cc017bc30\u003e] lru_add_drain_per_cpu+0x0/0x10\n [\u003cc0130789\u003e] get_online_cpus+0x29/0x50\n [\u003cc0140cf2\u003e] schedule_on_each_cpu+0x32/0xe0\n [\u003cc0187095\u003e] __mlock_vma_pages_range+0x85/0x2c0\n [\u003cc0156945\u003e] __lock_acquire+0x285/0xa10\n [\u003cc0188f09\u003e] vma_merge+0xa9/0x1d0\n [\u003cc0187450\u003e] mlock_fixup+0x180/0x200\n [\u003cc0187548\u003e] do_mlockall+0x78/0x90\n [\u003cc01878e1\u003e] sys_mlockall+0x81/0xb0\n [\u003cc010355a\u003e] syscall_call+0x7/0xb\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nTested-by: Kamalesh Babulal \u003ckamalesh@linux.vnet.ibm.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9978ad583e100945b74e4f33e73317983ea32df9",
      "tree": "132d3a06664e04cac4635ddba55a0ec36ff2a001",
      "parents": [
        "c11d69d8c830e09a0e7b3935c952afb26c48bba8"
      ],
      "author": {
        "name": "Lee Schermerhorn",
        "email": "lee.schermerhorn@hp.com",
        "time": "Sat Oct 18 20:26:56 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:52:31 2008 -0700"
      },
      "message": "mlock: make mlock error return Posixly Correct\n\nRework Posix error return for mlock().\n\nPosix requires error code for mlock*() system calls for some conditions\nthat differ from what kernel low level functions, such as\nget_user_pages(), return for those conditions.  For more info, see:\n\nhttp://marc.info/?l\u003dlinux-kernel\u0026m\u003d121750892930775\u0026w\u003d2\n\nThis patch provides the same translation of get_user_pages()\nerror codes to posix specified error codes in the context\nof the mlock rework for unevictable lru.\n\n[akpm@linux-foundation.org: fix build]\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5344b7e648980cc2ca613ec03a56a8222ff48820",
      "tree": "f9f8773ae8e38fb91aec52ca9ad2bd81f039b565",
      "parents": [
        "ba470de43188cdbff795b5da43a1474523c6c2fb"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Sat Oct 18 20:26:51 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:52:31 2008 -0700"
      },
      "message": "vmstat: mlocked pages statistics\n\nAdd NR_MLOCK zone page state, which provides a (conservative) count of\nmlocked pages (actually, the number of mlocked pages moved off the LRU).\n\nReworked by lts to fit in with the modified mlock page support in the\nReclaim Scalability series.\n\n[kosaki.motohiro@jp.fujitsu.com: fix incorrect Mlocked field of /proc/meminfo]\n[lee.schermerhorn@hp.com: mlocked-pages: add event counting with statistics]\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nSigned-off-by: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ba470de43188cdbff795b5da43a1474523c6c2fb",
      "tree": "0477460fa8c3e61edd9f1534cd2193656e586f8b",
      "parents": [
        "8edb08caf68184fb170f4f69c7445929e199eaea"
      ],
      "author": {
        "name": "Rik van Riel",
        "email": "riel@redhat.com",
        "time": "Sat Oct 18 20:26:50 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:52:31 2008 -0700"
      },
      "message": "mmap: handle mlocked pages during map, remap, unmap\n\nOriginally by Nick Piggin \u003cnpiggin@suse.de\u003e\n\nRemove mlocked pages from the LRU using \"unevictable infrastructure\"\nduring mmap(), munmap(), mremap() and truncate().  Try to move back to\nnormal LRU lists on munmap() when last mlocked mapping removed.  Remove\nPageMlocked() status when page truncated from file.\n\n[akpm@linux-foundation.org: cleanup]\n[kamezawa.hiroyu@jp.fujitsu.com: fix double unlock_page()]\n[kosaki.motohiro@jp.fujitsu.com: split LRU: munlock rework]\n[lee.schermerhorn@hp.com: mlock: fix __mlock_vma_pages_range comment block]\n[akpm@linux-foundation.org: remove bogus kerneldoc token]\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nSigned-off-by: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamewzawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8edb08caf68184fb170f4f69c7445929e199eaea",
      "tree": "c0d8f24971c90e5627207f0f0cb7c06f9bdb5dc4",
      "parents": [
        "fa07e787733416c42938a310a8e717295934e33c"
      ],
      "author": {
        "name": "Lee Schermerhorn",
        "email": "lee.schermerhorn@hp.com",
        "time": "Sat Oct 18 20:26:49 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:52:31 2008 -0700"
      },
      "message": "mlock: downgrade mmap sem while populating mlocked regions\n\nWe need to hold the mmap_sem for write to initiatate mlock()/munlock()\nbecause we may need to merge/split vmas.  However, this can lead to very\nlong lock hold times attempting to fault in a large memory region to mlock\nit into memory.  This can hold off other faults against the mm\n[multithreaded tasks] and other scans of the mm, such as via /proc.  To\nalleviate this, downgrade the mmap_sem to read mode during the population\nof the region for locking.  This is especially the case if we need to\nreclaim memory to lock down the region.  We [probably?] don\u0027t need to do\nthis for unlocking as all of the pages should be resident--they\u0027re already\nmlocked.\n\nNow, the caller\u0027s of the mlock functions [mlock_fixup() and\nmlock_vma_pages_range()] expect the mmap_sem to be returned in write mode.\n Changing all callers appears to be way too much effort at this point.\nSo, restore write mode before returning.  Note that this opens a window\nwhere the mmap list could change in a multithreaded process.  So, at least\nfor mlock_fixup(), where we could be called in a loop over multiple vmas,\nwe check that a vma still exists at the start address and that vma still\ncovers the page range [start,end).  If not, we return an error, -EAGAIN,\nand let the caller deal with it.\n\nReturn -EAGAIN from mlock_vma_pages_range() function and mlock_fixup() if\nthe vma at \u0027start\u0027 disappears or changes so that the page range\n[start,end) is no longer contained in the vma.  Again, let the caller deal\nwith it.  Looks like only sys_remap_file_pages() [via mmap_region()]\nshould actually care.\n\nWith this patch, I no longer see processes like ps(1) blocked for seconds\nor minutes at a time waiting for a large [multiple gigabyte] region to be\nlocked down.  However, I occassionally see delays while unlocking or\nunmapping a large mlocked region.  Should we also downgrade the mmap_sem\nfor the unlock path?\n\nSigned-off-by: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nSigned-off-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": "b291f000393f5a0b679012b39d79fbc85c018233",
      "tree": "28eb785d4d157d3396e4377294e6054635a4bd90",
      "parents": [
        "89e004ea55abe201b29e2d6e35124101f1288ef7"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Sat Oct 18 20:26:44 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:52:30 2008 -0700"
      },
      "message": "mlock: mlocked pages are unevictable\n\nMake sure that mlocked pages also live on the unevictable LRU, so kswapd\nwill not scan them over and over again.\n\nThis is achieved through various strategies:\n\n1) add yet another page flag--PG_mlocked--to indicate that\n   the page is locked for efficient testing in vmscan and,\n   optionally, fault path.  This allows early culling of\n   unevictable pages, preventing them from getting to\n   page_referenced()/try_to_unmap().  Also allows separate\n   accounting of mlock\u0027d pages, as Nick\u0027s original patch\n   did.\n\n   Note:  Nick\u0027s original mlock patch used a PG_mlocked\n   flag.  I had removed this in favor of the PG_unevictable\n   flag + an mlock_count [new page struct member].  I\n   restored the PG_mlocked flag to eliminate the new\n   count field.\n\n2) add the mlock/unevictable infrastructure to mm/mlock.c,\n   with internal APIs in mm/internal.h.  This is a rework\n   of Nick\u0027s original patch to these files, taking into\n   account that mlocked pages are now kept on unevictable\n   LRU list.\n\n3) update vmscan.c:page_evictable() to check PageMlocked()\n   and, if vma passed in, the vm_flags.  Note that the vma\n   will only be passed in for new pages in the fault path;\n   and then only if the \"cull unevictable pages in fault\n   path\" patch is included.\n\n4) add try_to_unlock() to rmap.c to walk a page\u0027s rmap and\n   ClearPageMlocked() if no other vmas have it mlocked.\n   Reuses as much of try_to_unmap() as possible.  This\n   effectively replaces the use of one of the lru list links\n   as an mlock count.  If this mechanism let\u0027s pages in mlocked\n   vmas leak through w/o PG_mlocked set [I don\u0027t know that it\n   does], we should catch them later in try_to_unmap().  One\n   hopes this will be rare, as it will be relatively expensive.\n\nOriginal mm/internal.h, mm/rmap.c and mm/mlock.c changes:\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\n\nsplitlru: introduce __get_user_pages():\n\n  New munlock processing need to GUP_FLAGS_IGNORE_VMA_PERMISSIONS.\n  because current get_user_pages() can\u0027t grab PROT_NONE pages theresore it\n  cause PROT_NONE pages can\u0027t munlock.\n\n[akpm@linux-foundation.org: fix this for pagemap-pass-mm-into-pagewalkers.patch]\n[akpm@linux-foundation.org: untangle patch interdependencies]\n[akpm@linux-foundation.org: fix things after out-of-order merging]\n[hugh@veritas.com: fix page-flags mess]\n[lee.schermerhorn@hp.com: fix munlock page table walk - now requires \u0027mm\u0027]\n[kosaki.motohiro@jp.fujitsu.com: build fix]\n[kosaki.motohiro@jp.fujitsu.com: fix truncate race and sevaral comments]\n[kosaki.motohiro@jp.fujitsu.com: splitlru: introduce __get_user_pages()]\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Dave Hansen \u003cdave@linux.vnet.ibm.com\u003e\nCc: Matt Mackall \u003cmpm@selenic.com\u003e\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a477097d9c37c1cf289c7f0257dffcfa42d50197",
      "tree": "9c8a0b2ec1de35ae01c807c8da603f1868f86885",
      "parents": [
        "dc329442b9fd365bec95718013586c07ff600c34"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Mon Aug 04 13:41:14 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 04 16:58:45 2008 -0700"
      },
      "message": "mlock() fix return values\n\nHalesh says:\n\nPlease find the below testcase provide to test mlock.\n\nTest Case :\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\n#include \u003csys/resource.h\u003e\n#include \u003cstdio.h\u003e\n#include \u003csys/stat.h\u003e\n#include \u003csys/types.h\u003e\n#include \u003cunistd.h\u003e\n#include \u003csys/mman.h\u003e\n#include \u003cfcntl.h\u003e\n#include \u003cerrno.h\u003e\n#include \u003cstdlib.h\u003e\n\nint main(void)\n{\n  int fd,ret, i \u003d 0;\n  char *addr, *addr1 \u003d NULL;\n  unsigned int page_size;\n  struct rlimit rlim;\n\n  if (0 !\u003d geteuid())\n  {\n   printf(\"Execute this pgm as root\\n\");\n   exit(1);\n  }\n\n  /* create a file */\n  if ((fd \u003d open(\"mmap_test.c\",O_RDWR|O_CREAT,0755)) \u003d\u003d -1)\n  {\n   printf(\"cant create test file\\n\");\n   exit(1);\n  }\n\n  page_size \u003d sysconf(_SC_PAGE_SIZE);\n\n  /* set the MEMLOCK limit */\n  rlim.rlim_cur \u003d 2000;\n  rlim.rlim_max \u003d 2000;\n\n  if ((ret \u003d setrlimit(RLIMIT_MEMLOCK,\u0026rlim)) !\u003d 0)\n  {\n   printf(\"Cant change limit values\\n\");\n   exit(1);\n  }\n\n  addr \u003d 0;\n  while (1)\n  {\n  /* map a page into memory each time*/\n  if ((addr \u003d (char *) mmap(addr,page_size, PROT_READ |\nPROT_WRITE,MAP_SHARED,fd,0)) \u003d\u003d MAP_FAILED)\n  {\n   printf(\"cant do mmap on file\\n\");\n   exit(1);\n  }\n\n  if (0 \u003d\u003d i)\n    addr1 \u003d addr;\n  i++;\n  errno \u003d 0;\n  /* lock the mapped memory pagewise*/\n  if ((ret \u003d mlock((char *)addr, 1500)) \u003d\u003d -1)\n  {\n   printf(\"errno value is %d\\n\", errno);\n   printf(\"cant lock maped region\\n\");\n   exit(1);\n  }\n  addr \u003d addr + page_size;\n }\n}\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nThis testcase results in an mlock() failure with errno 14 that is EFAULT,\nbut it has nowhere been specified that mlock() will return EFAULT.  When I\ntested the same on older kernels like 2.6.18, I got the correct result i.e\nerrno 12 (ENOMEM).\n\nI think in source code mlock(2), setting errno ENOMEM has been missed in\ndo_mlock() , on mlock_fixup() failure.\n\nSUSv3 requires the following behavior frmo mlock(2).\n\n[ENOMEM]\n    Some or all of the address range specified by the addr and\n    len arguments does not correspond to valid mapped pages\n    in the address space of the process.\n\n[EAGAIN]\n    Some or all of the memory identified by the operation could not\n    be locked when the call was made.\n\nThis rule isn\u0027t so nice and slighly strange.  but many people think\nPOSIX/SUS compliance is important.\n\nReported-by: Halesh Sadashiv \u003chalesh.sadashiv@ap.sony.com\u003e\nTested-by: Halesh Sadashiv \u003chalesh.sadashiv@ap.sony.com\u003e\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: \u003cstable@kernel.org\u003e\t\t[2.6.25.x, 2.6.26.x]\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5ed44a401ddfc60e11c3484e86f0c8285051139a",
      "tree": "96a44aac2853fc38aac801b3b628fb58adada2fb",
      "parents": [
        "84a01c2f8ea9bf210b961c6301e8e870a46505a6"
      ],
      "author": {
        "name": "Herbert van den Bergh",
        "email": "Herbert.van.den.Bergh@oracle.com",
        "time": "Sun Jul 15 23:38:25 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Jul 16 09:05:37 2007 -0700"
      },
      "message": "do not limit locked memory when RLIMIT_MEMLOCK is RLIM_INFINITY\n\nFix a bug in mm/mlock.c on 32-bit architectures that prevents a user from\nlocking more than 4GB of shared memory, or allocating more than 4GB of\nshared memory in hugepages, when rlim[RLIMIT_MEMLOCK] is set to\nRLIM_INFINITY.\n\nSigned-off-by: Herbert van den Bergh \u003cherbert.van.den.bergh@oracle.com\u003e\nAcked-by: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e8edc6e03a5c8562dc70a6d969f732bdb355a7e7",
      "tree": "fc86c863655128a7041dfe613d14393d761fa7b9",
      "parents": [
        "ff1be9ad61e3e17ba83702d8ed0b534e5b8ee15c"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon May 21 01:22:52 2007 +0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 21 09:18:19 2007 -0700"
      },
      "message": "Detach sched.h from mm.h\n\nFirst thing mm.h does is including sched.h solely for can_do_mlock() inline\nfunction which has \"current\" dereference inside. By dealing with can_do_mlock()\nmm.h can be detached from sched.h which is good. See below, why.\n\nThis patch\na) removes unconditional inclusion of sched.h from mm.h\nb) makes can_do_mlock() normal function in mm/mlock.c\nc) exports can_do_mlock() to not break compilation\nd) adds sched.h inclusions back to files that were getting it indirectly.\ne) adds less bloated headers to some files (asm/signal.h, jiffies.h) that were\n   getting them indirectly\n\nNet result is:\na) mm.h users would get less code to open, read, preprocess, parse, ... if\n   they don\u0027t need sched.h\nb) sched.h stops being dependency for significant number of files:\n   on x86_64 allmodconfig touching sched.h results in recompile of 4083 files,\n   after patch it\u0027s only 3744 (-8.3%).\n\nCross-compile tested on\n\n\tall arm defconfigs, all mips defconfigs, all powerpc defconfigs,\n\talpha alpha-up\n\tarm\n\ti386 i386-up i386-defconfig i386-allnoconfig\n\tia64 ia64-up\n\tm68k\n\tmips\n\tparisc parisc-up\n\tpowerpc powerpc-up\n\ts390 s390-up\n\tsparc sparc-up\n\tsparc64 sparc64-up\n\tum-x86_64\n\tx86_64 x86_64-up x86_64-defconfig x86_64-allnoconfig\n\nas well as my two usual configs.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a3eea484f7a1aadb70ed6665338026a09ad6ce85",
      "tree": "95bf0a3d1bc65d00b4cb26e5cf2a419f13ac5814",
      "parents": [
        "8fb4fc68ca391862b061b3d358a288ccf6abed39"
      ],
      "author": {
        "name": "Rik Bobbaers",
        "email": "Rik.Bobbaers@cc.kuleuven.be",
        "time": "Wed Dec 06 20:32:25 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:22 2006 -0800"
      },
      "message": "[PATCH] mlock cleanup\n\nmm is defined as vma-\u003evm_mm, so use that.\n\nAcked-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "c59ede7b78db329949d9cdcd7064e22d357560ef",
      "tree": "f9dc9d464fdad5bfd464d983e77c1af031389dda",
      "parents": [
        "e16885c5ad624a6efe1b1bf764e075d75f65a788"
      ],
      "author": {
        "name": "Randy.Dunlap",
        "email": "rdunlap@xenotime.net",
        "time": "Wed Jan 11 12:17:46 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Jan 11 18:42:13 2006 -0800"
      },
      "message": "[PATCH] move capable() to capability.h\n\n- Move capable() from sched.h to capability.h;\n\n- Use \u003clinux/capability.h\u003e where capable() is used\n\t(in include/, block/, ipc/, kernel/, a few drivers/,\n\tmm/, security/, \u0026 sound/;\n\tmany more drivers/ to go)\n\nSigned-off-by: Randy Dunlap \u003crdunlap@xenotime.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "1da177e4c3f41524e886b7f1b8a0c1fc7321cac2",
      "tree": "0bba044c4ce775e45a88a51686b5d9f90697ea9d",
      "parents": [],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "message": "Linux-2.6.12-rc2\n\nInitial git repository build. I\u0027m not bothering with the full history,\neven though we have it. We can create a separate \"historical\" git\narchive of that later if we want to, and in the meantime it\u0027s about\n3.2GB when imported into git - space that would just make the early\ngit days unnecessarily complicated, when we don\u0027t have a lot of good\ninfrastructure for it.\n\nLet it rip!\n"
    }
  ]
}
