)]}'
{
  "log": [
    {
      "commit": "ce36394269ccd9d1d286d6192ba09fa6894365e9",
      "tree": "fb235ff6ea1363ae4fd933e29268e76cdade5682",
      "parents": [
        "d210baf53b699fc61aa891c177b71d7082d3b957"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Sep 03 16:09:47 2008 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 03 19:58:53 2008 -0700"
      },
      "message": "mmap: fix petty bug in anonymous shared mmap offset handling\n\nAnonymous mappings should ignore offset but shared anonymous mapping\nforgot to clear it and makes the following legit test program trigger\nSIGBUS.\n\n #include \u003csys/mman.h\u003e\n #include \u003cstdio.h\u003e\n #include \u003cerrno.h\u003e\n\n #define PAGE_SIZE\t4096\n\n int main(void)\n {\n\t char *p;\n\t int i;\n\n\t p \u003d mmap(NULL, 2 * PAGE_SIZE, PROT_READ|PROT_WRITE,\n\t\t  MAP_SHARED|MAP_ANONYMOUS, -1, PAGE_SIZE);\n\t if (p \u003d\u003d MAP_FAILED) {\n\t\t perror(\"mmap\");\n\t\t return 1;\n\t }\n\n\t for (i \u003d 0; i \u003c 2; i++) {\n\t\t printf(\"page %d\\n\", i);\n\t\t p[i * 4096] \u003d i;\n\t }\n\t return 0;\n }\n\nFix it.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Hugh Dickins \u003chugh@veritas.com\u003e\nAcked-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "23a0ee908cbfba3264d19729c67c22b20fa73886",
      "tree": "541103f6283cbac6b82cff88a7b91128acfce046",
      "parents": [
        "cc7a486cac78f6fc1a24e8cd63036bae8d2ab431",
        "0f2bc27be27ca1dcc66b96131e44bf7648b959c6"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Aug 12 00:11:49 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Aug 12 00:11:49 2008 +0200"
      },
      "message": "Merge branch \u0027core/locking\u0027 into core/urgent\n"
    },
    {
      "commit": "7cd5a02f54f4c9d16cf7fdffa2122bc73bb09b43",
      "tree": "05b0be34c4dd02899c4f771e89795780465810a6",
      "parents": [
        "454ed842d55740160334efc9ad56cfef54ed37bc"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Mon Aug 11 09:30:25 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Aug 11 09:30:25 2008 +0200"
      },
      "message": "mm: fix mm_take_all_locks() locking order\n\nLockdep spotted:\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.27-rc1 #270\n-------------------------------------------------------\nqemu-kvm/2033 is trying to acquire lock:\n (\u0026inode-\u003ei_data.i_mmap_lock){----}, at: [\u003cffffffff802996cc\u003e] mm_take_all_locks+0xc2/0xea\n\nbut task is already holding lock:\n (\u0026anon_vma-\u003elock){----}, at: [\u003cffffffff8029967a\u003e] mm_take_all_locks+0x70/0xea\n\nwhich lock already depends on the new lock.\n\nthe existing dependency chain (in reverse order) is:\n\n-\u003e #1 (\u0026anon_vma-\u003elock){----}:\n       [\u003cffffffff8025cd37\u003e] __lock_acquire+0x11be/0x14d2\n       [\u003cffffffff8025d0a9\u003e] lock_acquire+0x5e/0x7a\n       [\u003cffffffff804c655b\u003e] _spin_lock+0x3b/0x47\n       [\u003cffffffff8029a2ef\u003e] vma_adjust+0x200/0x444\n       [\u003cffffffff8029a662\u003e] split_vma+0x12f/0x146\n       [\u003cffffffff8029bc60\u003e] mprotect_fixup+0x13c/0x536\n       [\u003cffffffff8029c203\u003e] sys_mprotect+0x1a9/0x21e\n       [\u003cffffffff8020c0db\u003e] system_call_fastpath+0x16/0x1b\n       [\u003cffffffffffffffff\u003e] 0xffffffffffffffff\n\n-\u003e #0 (\u0026inode-\u003ei_data.i_mmap_lock){----}:\n       [\u003cffffffff8025ca54\u003e] __lock_acquire+0xedb/0x14d2\n       [\u003cffffffff8025d397\u003e] lock_release_non_nested+0x1c2/0x219\n       [\u003cffffffff8025d515\u003e] lock_release+0x127/0x14a\n       [\u003cffffffff804c6403\u003e] _spin_unlock+0x1e/0x50\n       [\u003cffffffff802995d9\u003e] mm_drop_all_locks+0x7f/0xb0\n       [\u003cffffffff802a965d\u003e] do_mmu_notifier_register+0xe2/0x112\n       [\u003cffffffff802a96a8\u003e] mmu_notifier_register+0xe/0x10\n       [\u003cffffffffa0043b6b\u003e] kvm_dev_ioctl+0x11e/0x287 [kvm]\n       [\u003cffffffff802bd0ca\u003e] vfs_ioctl+0x2a/0x78\n       [\u003cffffffff802bd36f\u003e] do_vfs_ioctl+0x257/0x274\n       [\u003cffffffff802bd3e1\u003e] sys_ioctl+0x55/0x78\n       [\u003cffffffff8020c0db\u003e] system_call_fastpath+0x16/0x1b\n       [\u003cffffffffffffffff\u003e] 0xffffffffffffffff\n\nother info that might help us debug this:\n\n5 locks held by qemu-kvm/2033:\n #0:  (\u0026mm-\u003emmap_sem){----}, at: [\u003cffffffff802a95d0\u003e] do_mmu_notifier_register+0x55/0x112\n #1:  (mm_all_locks_mutex){--..}, at: [\u003cffffffff8029963e\u003e] mm_take_all_locks+0x34/0xea\n #2:  (\u0026anon_vma-\u003elock){----}, at: [\u003cffffffff8029967a\u003e] mm_take_all_locks+0x70/0xea\n #3:  (\u0026anon_vma-\u003elock){----}, at: [\u003cffffffff8029967a\u003e] mm_take_all_locks+0x70/0xea\n #4:  (\u0026anon_vma-\u003elock){----}, at: [\u003cffffffff8029967a\u003e] mm_take_all_locks+0x70/0xea\n\nstack backtrace:\nPid: 2033, comm: qemu-kvm Not tainted 2.6.27-rc1 #270\n\nCall Trace:\n [\u003cffffffff8025b7c7\u003e] print_circular_bug_tail+0xb8/0xc3\n [\u003cffffffff8025ca54\u003e] __lock_acquire+0xedb/0x14d2\n [\u003cffffffff80259bb1\u003e] ? add_lock_to_list+0x7e/0xad\n [\u003cffffffff8029967a\u003e] ? mm_take_all_locks+0x70/0xea\n [\u003cffffffff8029967a\u003e] ? mm_take_all_locks+0x70/0xea\n [\u003cffffffff8025d397\u003e] lock_release_non_nested+0x1c2/0x219\n [\u003cffffffff802996cc\u003e] ? mm_take_all_locks+0xc2/0xea\n [\u003cffffffff802996cc\u003e] ? mm_take_all_locks+0xc2/0xea\n [\u003cffffffff8025b202\u003e] ? trace_hardirqs_on_caller+0x4d/0x115\n [\u003cffffffff802995d9\u003e] ? mm_drop_all_locks+0x7f/0xb0\n [\u003cffffffff8025d515\u003e] lock_release+0x127/0x14a\n [\u003cffffffff804c6403\u003e] _spin_unlock+0x1e/0x50\n [\u003cffffffff802995d9\u003e] mm_drop_all_locks+0x7f/0xb0\n [\u003cffffffff802a965d\u003e] do_mmu_notifier_register+0xe2/0x112\n [\u003cffffffff802a96a8\u003e] mmu_notifier_register+0xe/0x10\n [\u003cffffffffa0043b6b\u003e] kvm_dev_ioctl+0x11e/0x287 [kvm]\n [\u003cffffffff8033f9f2\u003e] ? file_has_perm+0x83/0x8e\n [\u003cffffffff802bd0ca\u003e] vfs_ioctl+0x2a/0x78\n [\u003cffffffff802bd36f\u003e] do_vfs_ioctl+0x257/0x274\n [\u003cffffffff802bd3e1\u003e] sys_ioctl+0x55/0x78\n [\u003cffffffff8020c0db\u003e] system_call_fastpath+0x16/0x1b\n\nWhich the locking hierarchy in mm/rmap.c confirms as valid.\n\nFix this by first taking all the mapping-\u003ei_mmap_lock instances and then\ntake all anon_vma-\u003elock instances.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nAcked-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "454ed842d55740160334efc9ad56cfef54ed37bc",
      "tree": "1b60057a0dc7d65c530b6b1ad4514200f828ac9a",
      "parents": [
        "b7d39aff91454f2534db2275f55908656ec0470c"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Mon Aug 11 09:30:25 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Aug 11 09:30:25 2008 +0200"
      },
      "message": "lockdep: annotate mm_take_all_locks()\n\nThe nesting is correct due to holding mmap_sem, use the new annotation\nto annotate this.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "dfe195fb79e88c334481f1362fef52f6d2e30b2d",
      "tree": "4e7c30eabca8e5d8f30f8bf3d45e046281677ac4",
      "parents": [
        "bf1db69fbf4ff511e88736ce2e6318846f34492b"
      ],
      "author": {
        "name": "Benny Halevy",
        "email": "bhalevy@panasas.com",
        "time": "Tue Aug 05 13:01:41 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 05 14:33:50 2008 -0700"
      },
      "message": "mm: fix uninitialized variables for find_vma_prepare callers\n\ngcc 4.3.0 correctly emits the following warnings.\nWhen a vma covering addr is found, find_vma_prepare indeed returns without\nsetting pprev, rb_link, and rb_parent.\n\n  mm/mmap.c: In function `insert_vm_struct\u0027:\n  mm/mmap.c:2085: warning: `rb_parent\u0027 may be used uninitialized in this function\n  mm/mmap.c:2085: warning: `rb_link\u0027 may be used uninitialized in this function\n  mm/mmap.c:2084: warning: `prev\u0027 may be used uninitialized in this function\n  mm/mmap.c: In function `copy_vma\u0027:\n  mm/mmap.c:2124: warning: `rb_parent\u0027 may be used uninitialized in this function\n  mm/mmap.c:2124: warning: `rb_link\u0027 may be used uninitialized in this function\n  mm/mmap.c:2123: warning: `prev\u0027 may be used uninitialized in this function\n  mm/mmap.c: In function `do_brk\u0027:\n  mm/mmap.c:1951: warning: `rb_parent\u0027 may be used uninitialized in this function\n  mm/mmap.c:1951: warning: `rb_link\u0027 may be used uninitialized in this function\n  mm/mmap.c:1949: warning: `prev\u0027 may be used uninitialized in this function\n  mm/mmap.c: In function `mmap_region\u0027:\n  mm/mmap.c:1092: warning: `rb_parent\u0027 may be used uninitialized in this function\n  mm/mmap.c:1092: warning: `rb_link\u0027 may be used uninitialized in this function\n  mm/mmap.c:1089: warning: `prev\u0027 may be used uninitialized in this function\n\nHugh adds: in fact, none of find_vma_prepare\u0027s callers use those values\nwhen a vma is found to be already covering addr, it\u0027s either an error or\nan occasion to munmap and repeat.  Okay, let\u0027s quieten the compiler (but I\nwould prefer it if pprev, rb_link and rb_parent were meaningful in that\ncase, rather than whatever\u0027s in them from descending the tree).\n\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: \"Ryan Hope\" \u003crmh3093@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "cddb8a5c14aa89810b40495d94d3d2a0faee6619",
      "tree": "d0b47b071f7d2dd1d6f9c36084aa8cfcef90d1da",
      "parents": [
        "7906d00cd1f687268f0a3599442d113767795ae6"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "andrea@qumranet.com",
        "time": "Mon Jul 28 15:46:29 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 28 16:30:21 2008 -0700"
      },
      "message": "mmu-notifiers: core\n\nWith KVM/GFP/XPMEM there isn\u0027t just the primary CPU MMU pointing to pages.\n There are secondary MMUs (with secondary sptes and secondary tlbs) too.\nsptes in the kvm case are shadow pagetables, but when I say spte in\nmmu-notifier context, I mean \"secondary pte\".  In GRU case there\u0027s no\nactual secondary pte and there\u0027s only a secondary tlb because the GRU\nsecondary MMU has no knowledge about sptes and every secondary tlb miss\nevent in the MMU always generates a page fault that has to be resolved by\nthe CPU (this is not the case of KVM where the a secondary tlb miss will\nwalk sptes in hardware and it will refill the secondary tlb transparently\nto software if the corresponding spte is present).  The same way\nzap_page_range has to invalidate the pte before freeing the page, the spte\n(and secondary tlb) must also be invalidated before any page is freed and\nreused.\n\nCurrently we take a page_count pin on every page mapped by sptes, but that\nmeans the pages can\u0027t be swapped whenever they\u0027re mapped by any spte\nbecause they\u0027re part of the guest working set.  Furthermore a spte unmap\nevent can immediately lead to a page to be freed when the pin is released\n(so requiring the same complex and relatively slow tlb_gather smp safe\nlogic we have in zap_page_range and that can be avoided completely if the\nspte unmap event doesn\u0027t require an unpin of the page previously mapped in\nthe secondary MMU).\n\nThe mmu notifiers allow kvm/GRU/XPMEM to attach to the tsk-\u003emm and know\nwhen the VM is swapping or freeing or doing anything on the primary MMU so\nthat the secondary MMU code can drop sptes before the pages are freed,\navoiding all page pinning and allowing 100% reliable swapping of guest\nphysical address space.  Furthermore it avoids the code that teardown the\nmappings of the secondary MMU, to implement a logic like tlb_gather in\nzap_page_range that would require many IPI to flush other cpu tlbs, for\neach fixed number of spte unmapped.\n\nTo make an example: if what happens on the primary MMU is a protection\ndowngrade (from writeable to wrprotect) the secondary MMU mappings will be\ninvalidated, and the next secondary-mmu-page-fault will call\nget_user_pages and trigger a do_wp_page through get_user_pages if it\ncalled get_user_pages with write\u003d1, and it\u0027ll re-establishing an updated\nspte or secondary-tlb-mapping on the copied page.  Or it will setup a\nreadonly spte or readonly tlb mapping if it\u0027s a guest-read, if it calls\nget_user_pages with write\u003d0.  This is just an example.\n\nThis allows to map any page pointed by any pte (and in turn visible in the\nprimary CPU MMU), into a secondary MMU (be it a pure tlb like GRU, or an\nfull MMU with both sptes and secondary-tlb like the shadow-pagetable layer\nwith kvm), or a remote DMA in software like XPMEM (hence needing of\nschedule in XPMEM code to send the invalidate to the remote node, while no\nneed to schedule in kvm/gru as it\u0027s an immediate event like invalidating\nprimary-mmu pte).\n\nAt least for KVM without this patch it\u0027s impossible to swap guests\nreliably.  And having this feature and removing the page pin allows\nseveral other optimizations that simplify life considerably.\n\nDependencies:\n\n1) mm_take_all_locks() to register the mmu notifier when the whole VM\n   isn\u0027t doing anything with \"mm\".  This allows mmu notifier users to keep\n   track if the VM is in the middle of the invalidate_range_begin/end\n   critical section with an atomic counter incraese in range_begin and\n   decreased in range_end.  No secondary MMU page fault is allowed to map\n   any spte or secondary tlb reference, while the VM is in the middle of\n   range_begin/end as any page returned by get_user_pages in that critical\n   section could later immediately be freed without any further\n   -\u003einvalidate_page notification (invalidate_range_begin/end works on\n   ranges and -\u003einvalidate_page isn\u0027t called immediately before freeing\n   the page).  To stop all page freeing and pagetable overwrites the\n   mmap_sem must be taken in write mode and all other anon_vma/i_mmap\n   locks must be taken too.\n\n2) It\u0027d be a waste to add branches in the VM if nobody could possibly\n   run KVM/GRU/XPMEM on the kernel, so mmu notifiers will only enabled if\n   CONFIG_KVM\u003dm/y.  In the current kernel kvm won\u0027t yet take advantage of\n   mmu notifiers, but this already allows to compile a KVM external module\n   against a kernel with mmu notifiers enabled and from the next pull from\n   kvm.git we\u0027ll start using them.  And GRU/XPMEM will also be able to\n   continue the development by enabling KVM\u003dm in their config, until they\n   submit all GRU/XPMEM GPLv2 code to the mainline kernel.  Then they can\n   also enable MMU_NOTIFIERS in the same way KVM does it (even if KVM\u003dn).\n   This guarantees nobody selects MMU_NOTIFIER\u003dy if KVM and GRU and XPMEM\n   are all \u003dn.\n\nThe mmu_notifier_register call can fail because mm_take_all_locks may be\ninterrupted by a signal and return -EINTR.  Because mmu_notifier_reigster\nis used when a driver startup, a failure can be gracefully handled.  Here\nan example of the change applied to kvm to register the mmu notifiers.\nUsually when a driver startups other allocations are required anyway and\n-ENOMEM failure paths exists already.\n\n struct  kvm *kvm_arch_create_vm(void)\n {\n        struct kvm *kvm \u003d kzalloc(sizeof(struct kvm), GFP_KERNEL);\n+       int err;\n\n        if (!kvm)\n                return ERR_PTR(-ENOMEM);\n\n        INIT_LIST_HEAD(\u0026kvm-\u003earch.active_mmu_pages);\n\n+       kvm-\u003earch.mmu_notifier.ops \u003d \u0026kvm_mmu_notifier_ops;\n+       err \u003d mmu_notifier_register(\u0026kvm-\u003earch.mmu_notifier, current-\u003emm);\n+       if (err) {\n+               kfree(kvm);\n+               return ERR_PTR(err);\n+       }\n+\n        return kvm;\n }\n\nmmu_notifier_unregister returns void and it\u0027s reliable.\n\nThe patch also adds a few needed but missing includes that would prevent\nkernel to compile after these changes on non-x86 archs (x86 didn\u0027t need\nthem by luck).\n\n[akpm@linux-foundation.org: coding-style fixes]\n[akpm@linux-foundation.org: fix mm/filemap_xip.c build]\n[akpm@linux-foundation.org: fix mm/mmu_notifier.c build]\nSigned-off-by: Andrea Arcangeli \u003candrea@qumranet.com\u003e\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Jack Steiner \u003csteiner@sgi.com\u003e\nCc: Robin Holt \u003cholt@sgi.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Kanoj Sarcar \u003ckanojsarcar@yahoo.com\u003e\nCc: Roland Dreier \u003crdreier@cisco.com\u003e\nCc: Steve Wise \u003cswise@opengridcomputing.com\u003e\nCc: Avi Kivity \u003cavi@qumranet.com\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Anthony Liguori \u003caliguori@us.ibm.com\u003e\nCc: Chris Wright \u003cchrisw@redhat.com\u003e\nCc: Marcelo Tosatti \u003cmarcelo@kvack.org\u003e\nCc: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nCc: \"Paul E. McKenney\" \u003cpaulmck@us.ibm.com\u003e\nCc: Izik Eidus \u003cizike@qumranet.com\u003e\nCc: Anthony Liguori \u003caliguori@us.ibm.com\u003e\nCc: 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": "7906d00cd1f687268f0a3599442d113767795ae6",
      "tree": "63609454d164a088d7f535f826764579c0f297f6",
      "parents": [
        "6beeac76f5f96590fb751af5e138fbc3f62e8460"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "andrea@qumranet.com",
        "time": "Mon Jul 28 15:46:26 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 28 16:30:21 2008 -0700"
      },
      "message": "mmu-notifiers: add mm_take_all_locks() operation\n\nmm_take_all_locks holds off reclaim from an entire mm_struct.  This allows\nmmu notifiers to register into the mm at any time with the guarantee that\nno mmu operation is in progress on the mm.\n\nThis operation locks against the VM for all pte/vma/mm related operations\nthat could ever happen on a certain mm.  This includes vmtruncate,\ntry_to_unmap, and all page faults.\n\nThe caller must take the mmap_sem in write mode before calling\nmm_take_all_locks().  The caller isn\u0027t allowed to release the mmap_sem\nuntil mm_drop_all_locks() returns.\n\nmmap_sem in write mode is required in order to block all operations that\ncould modify pagetables and free pages without need of altering the vma\nlayout (for example populate_range() with nonlinear vmas).  It\u0027s also\nneeded in write mode to avoid new anon_vmas to be associated with existing\nvmas.\n\nA single task can\u0027t take more than one mm_take_all_locks() in a row or it\nwould deadlock.\n\nmm_take_all_locks() and mm_drop_all_locks are expensive operations that\nmay have to take thousand of locks.\n\nmm_take_all_locks() can fail if it\u0027s interrupted by signals.\n\nWhen mmu_notifier_register returns, we must be sure that the driver is\nnotified if some task is in the middle of a vmtruncate for the \u0027mm\u0027 where\nthe mmu notifier was registered (mmu_notifier_invalidate_range_start/end\nis run around the vmtruncation but mmu_notifier_register can run after\nmmu_notifier_invalidate_range_start and before\nmmu_notifier_invalidate_range_end).  Same problem for rmap paths.  And\nwe\u0027ve to remove page pinning to avoid replicating the tlb_gather logic\ninside KVM (and GRU doesn\u0027t work well with page pinning regardless of\nneeding tlb_gather), so without mm_take_all_locks when vmtruncate frees\nthe page, kvm would have no way to notice that it mapped into sptes a page\nthat is going into the freelist without a chance of any further\nmmu_notifier notification.\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Andrea Arcangeli \u003candrea@qumranet.com\u003e\nAcked-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Jack Steiner \u003csteiner@sgi.com\u003e\nCc: Robin Holt \u003cholt@sgi.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Kanoj Sarcar \u003ckanojsarcar@yahoo.com\u003e\nCc: Roland Dreier \u003crdreier@cisco.com\u003e\nCc: Steve Wise \u003cswise@opengridcomputing.com\u003e\nCc: Avi Kivity \u003cavi@qumranet.com\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Anthony Liguori \u003caliguori@us.ibm.com\u003e\nCc: Chris Wright \u003cchrisw@redhat.com\u003e\nCc: Marcelo Tosatti \u003cmarcelo@kvack.org\u003e\nCc: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nCc: \"Paul E. McKenney\" \u003cpaulmck@us.ibm.com\u003e\nCc: Izik Eidus \u003cizike@qumranet.com\u003e\nCc: Anthony Liguori \u003caliguori@us.ibm.com\u003e\nCc: 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": "a5516438959d90b071ff0a484ce4f3f523dc3152",
      "tree": "e356ba9364c76b93c176b4d4a262b7aca3ee8f91",
      "parents": [
        "b7ba30c679ed1eb7ed3ed8f281f6493282042bd4"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@suse.de",
        "time": "Wed Jul 23 21:27:41 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 24 10:47:17 2008 -0700"
      },
      "message": "hugetlb: modular state for hugetlb page size\n\nThe goal of this patchset is to support multiple hugetlb page sizes.  This\nis achieved by introducing a new struct hstate structure, which\nencapsulates the important hugetlb state and constants (eg.  huge page\nsize, number of huge pages currently allocated, etc).\n\nThe hstate structure is then passed around the code which requires these\nfields, they will do the right thing regardless of the exact hstate they\nare operating on.\n\nThis patch adds the hstate structure, with a single global instance of it\n(default_hstate), and does the basic work of converting hugetlb to use the\nhstate.\n\nFuture patches will add more hstate structures to allow for different\nhugetlbfs mounts to have different page sizes.\n\n[akpm@linux-foundation.org: coding-style fixes]\nAcked-by: Adam Litke \u003cagl@us.ibm.com\u003e\nAcked-by: Nishanth Aravamudan \u003cnacc@us.ibm.com\u003e\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "cdfd4325c0d878679bd6a3ba8285b71d9980e3c0",
      "tree": "1b1d52ce2ac528851630c706fbcf9db1072460a5",
      "parents": [
        "e7c4b0bfd025f71cf7624b7c1be174f63caade33"
      ],
      "author": {
        "name": "Andy Whitcroft",
        "email": "apw@shadowen.org",
        "time": "Wed Jul 23 21:27:28 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 24 10:47:16 2008 -0700"
      },
      "message": "mm: record MAP_NORESERVE status on vmas and fix small page mprotect reservations\n\nWith Mel\u0027s hugetlb private reservation support patches applied, strict\novercommit semantics are applied to both shared and private huge page\nmappings.  This can be a problem if an application relied on unlimited\novercommit semantics for private mappings.  An example of this would be an\napplication which maps a huge area with the intention of using it very\nsparsely.  These application would benefit from being able to opt-out of\nthe strict overcommit.  It should be noted that prior to hugetlb\nsupporting demand faulting all mappings were fully populated and so\napplications of this type should be rare.\n\nThis patch stack implements the MAP_NORESERVE mmap() flag for huge page\nmappings.  This flag has the same meaning as for small page mappings,\nsuppressing reservations for that mapping.\n\nThanks to Mel Gorman for reviewing a number of early versions of these\npatches.\n\nThis patch:\n\nWhen a small page mapping is created with mmap() reservations are created\nby default for any memory pages required.  When the region is read/write\nthe reservation is increased for every page, no reservation is needed for\nread-only regions (as they implicitly share the zero page).  Reservations\nare tracked via the VM_ACCOUNT vma flag which is present when the region\nhas reservation backing it.  When we convert a region from read-only to\nread-write new reservations are aquired and VM_ACCOUNT is set.  However,\nwhen a read-only map is created with MAP_NORESERVE it is indistinguishable\nfrom a normal mapping.  When we then convert that to read/write we are\nforced to incorrectly create reservations for it as we have no record of\nthe original MAP_NORESERVE.\n\nThis patch introduces a new vma flag VM_NORESERVE which records the\npresence of the original MAP_NORESERVE flag.  This allows us to\ndistinguish these two circumstances and correctly account the reserve.\n\nAs well as fixing this FIXME in the code, this makes it much easier to\nintroduce MAP_NORESERVE support for huge pages as this flag is available\nconsistantly for the life of the mapping.  VM_ACCOUNT on the other hand is\nheavily used at the generic level in association with small pages.\n\nSigned-off-by: Andy Whitcroft \u003capw@shadowen.org\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Adam Litke \u003cagl@us.ibm.com\u003e\nCc: Johannes Weiner \u003channes@saeurebad.de\u003e\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nCc: William Lee Irwin III \u003cwli@holomorphy.com\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Michael Kerrisk \u003cmtk.manpages@googlemail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "42b7772812d15b86543a23b82bd6070eef9a08b1",
      "tree": "10665ee01fe82ce17c68a6278d044531b1ed64c0",
      "parents": [
        "a352894d07059649398c4769dc8b645e1a1dad88"
      ],
      "author": {
        "name": "Jan Beulich",
        "email": "jbeulich@novell.com",
        "time": "Wed Jul 23 21:27:10 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 24 10:47:15 2008 -0700"
      },
      "message": "mm: remove double indirection on tlb parameter to free_pgd_range() \u0026 Co\n\nThe double indirection here is not needed anywhere and hence (at least)\nconfusing.\n\nSigned-off-by: Jan Beulich \u003cjbeulich@novell.com\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: \"Luck, Tony\" \u003ctony.luck@intel.com\u003e\nCc: Paul Mundt \u003clethal@linux-sh.org\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nAcked-by: Jeremy Fitzhardinge \u003cjeremy@goop.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b845f313d78e4e259ec449909e3bbadf77b53a6d",
      "tree": "03239e77dbc43f627ce112963736c8b4c53117e6",
      "parents": [
        "e5093ff05d36c64e8f36a9ddb26358256dc133ea"
      ],
      "author": {
        "name": "Dave Kleikamp",
        "email": "shaggy@linux.vnet.ibm.com",
        "time": "Tue Jul 08 00:28:51 2008 +1000"
      },
      "committer": {
        "name": "Benjamin Herrenschmidt",
        "email": "benh@kernel.crashing.org",
        "time": "Wed Jul 09 16:30:45 2008 +1000"
      },
      "message": "mm: Allow architectures to define additional protection bits\n\nThis patch allows architectures to define functions to deal with\nadditional protections bits for mmap() and mprotect().\n\narch_calc_vm_prot_bits() maps additonal protection bits to vm_flags\narch_vm_get_page_prot() maps additional vm_flags to the vma\u0027s vm_page_prot\narch_validate_prot() checks for valid values of the protection bits\n\nNote: vm_get_page_prot() is now pretty ugly, but the generated code\nshould be identical for architectures that don\u0027t define additional\nprotection bits.\n\nSigned-off-by: Dave Kleikamp \u003cshaggy@linux.vnet.ibm.com\u003e\nAcked-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nAcked-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\n"
    },
    {
      "commit": "a5b4592cf77b973c29e7c9695873a26052b58951",
      "tree": "9f2af3014d5d41ddc22d7aa2793b871ee15297d8",
      "parents": [
        "33dda515a1995dfb3b6b57d7ace9b3ee9d449c11"
      ],
      "author": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Thu Jun 05 22:46:05 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 06 11:29:09 2008 -0700"
      },
      "message": "brk: make sys_brk() honor COMPAT_BRK when computing lower bound\n\nFix a regression introduced by\n\ncommit 4cc6028d4040f95cdb590a87db478b42b8be0508\nAuthor: Jiri Kosina \u003cjkosina@suse.cz\u003e\nDate:   Wed Feb 6 22:39:44 2008 +0100\n\n    brk: check the lower bound properly\n\nThe check in sys_brk() on minimum value the brk might have must take\nCONFIG_COMPAT_BRK setting into account.  When this option is turned on\n(i.e.  we support ancient legacy binaries, e.g.  libc5-linked stuff), the\nlower bound on brk value is mm-\u003eend_code, otherwise the brk start is\nallowed to be arbitrarily shifted.\n\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\nTested-by: Geert Uytterhoeven \u003cgeert@linux-m68k.org\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": "80119ef5c8153e0a6cc5edf00c083dc98a9bd348",
      "tree": "a2af11a3991b1bebe9d764ab6d4d28891e86eda2",
      "parents": [
        "6c7c6afbb8c0e60d32a563cae7c6889211e9d9d8"
      ],
      "author": {
        "name": "Alan Cox",
        "email": "alan@redhat.com",
        "time": "Fri May 23 13:04:31 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat May 24 09:56:09 2008 -0700"
      },
      "message": "mm: fix atomic_t overflow in vm\n\nThe atomic_t type is 32bit but a 64bit system can have more than 2^32\npages of virtual address space available.  Without this we overflow on\nludicrously large mappings\n\nSigned-off-by: Alan Cox \u003calan@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": "925d1c401fa6cfd0df5d2e37da8981494ccdec07",
      "tree": "4f3b7a09311cd99783b822350628125e44f9902d",
      "parents": [
        "e93b4ea20adb20f1f1f07f10ba5d7dd739d2843e"
      ],
      "author": {
        "name": "Matt Helsley",
        "email": "matthltc@us.ibm.com",
        "time": "Tue Apr 29 01:01:36 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 29 08:06:17 2008 -0700"
      },
      "message": "procfs task exe symlink\n\nThe kernel implements readlink of /proc/pid/exe by getting the file from\nthe first executable VMA.  Then the path to the file is reconstructed and\nreported as the result.\n\nBecause of the VMA walk the code is slightly different on nommu systems.\nThis patch avoids separate /proc/pid/exe code on nommu systems.  Instead of\nwalking the VMAs to find the first executable file-backed VMA we store a\nreference to the exec\u0027d file in the mm_struct.\n\nThat reference would prevent the filesystem holding the executable file\nfrom being unmounted even after unmapping the VMAs.  So we track the number\nof VM_EXECUTABLE VMAs and drop the new reference when the last one is\nunmapped.  This avoids pinning the mounted filesystem.\n\n[akpm@linux-foundation.org: improve comments]\n[yamamoto@valinux.co.jp: fix dup_mmap]\nSigned-off-by: Matt Helsley \u003cmatthltc@us.ibm.com\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc:\"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: YAMAMOTO Takashi \u003cyamamoto@valinux.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "846a16bf0fc80dc95a414ffce465e3cbf9680247",
      "tree": "45e03061c5e3d8242bf470509771926f37177415",
      "parents": [
        "f0be3d32b05d3fea2fcdbbb81a39dac2a7163169"
      ],
      "author": {
        "name": "Lee Schermerhorn",
        "email": "lee.schermerhorn@hp.com",
        "time": "Mon Apr 28 02:13:09 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 28 08:58:23 2008 -0700"
      },
      "message": "mempolicy: rename mpol_copy to mpol_dup\n\nThis patch renames mpol_copy() to mpol_dup() because, well, that\u0027s what it\ndoes.  Like, e.g., strdup() for strings, mpol_dup() takes a pointer to an\nexisting mempolicy, allocates a new one and copies the contents.\n\nIn a later patch, I want to use the name mpol_copy() to copy the contents from\none mempolicy to another like, e.g., strcpy() does for strings.\n\nSigned-off-by: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f0be3d32b05d3fea2fcdbbb81a39dac2a7163169",
      "tree": "5794ce6a8befbce82cd3e44ff15fbf3bb5f2f3bf",
      "parents": [
        "3b1163006332302117b1b2acf226d4014ff46525"
      ],
      "author": {
        "name": "Lee Schermerhorn",
        "email": "lee.schermerhorn@hp.com",
        "time": "Mon Apr 28 02:13:08 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 28 08:58:23 2008 -0700"
      },
      "message": "mempolicy: rename mpol_free to mpol_put\n\nThis is a change that was requested some time ago by Mel Gorman.  Makes sense\nto me, so here it is.\n\nNote: I retain the name \"mpol_free_shared_policy()\" because it actually does\nfree the shared_policy, which is NOT a reference counted object.  However, ...\n\nThe mempolicy object[s] referenced by the shared_policy are reference counted,\nso mpol_put() is used to release the reference held by the shared_policy.  The\nmempolicy might not be freed at this time, because some task attached to the\nshared object associated with the shared policy may be in the process of\nallocating a page based on the mempolicy.  In that case, the task performing\nthe allocation will hold a reference on the mempolicy, obtained via\nmpol_shared_policy_lookup().  The mempolicy will be freed when all tasks\nholding such a reference have called mpol_put() for the mempolicy.\n\nSigned-off-by: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4d3d5b41a72b52555d43efbfc4ccde6ba6e5444f",
      "tree": "5935f5d9e741f63c190c4edf4d5f6f6005e33d0f",
      "parents": [
        "0dd1334faf7e075bfdb6f5284eed65210b296fc1"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Mon Apr 28 02:12:10 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 28 08:58:18 2008 -0700"
      },
      "message": "mmap_region: cleanup the final vma_merge() related code\n\nIt is not easy to actually understand the \"if (!file || !vma_merge())\"\ncode, turn it into \"if (file \u0026\u0026 vma_merge())\".  This makes immediately\nobvious that the subsequent \"if (file)\" is superfluous.\n\nAs Hugh Dickins pointed out, we can also factor out the -\u003ei_writecount\ncorrections, and add a small comment about that.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nCc: 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": "b1d0e4f535e10775cffde922208b49629169aeaa",
      "tree": "c5fa68fb25ffd2485da5de236fcf2b67d9df3dfd",
      "parents": [
        "6a306e8b4c81a1c1f538e390d92bfe80d04b254c"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Sat Feb 09 01:15:19 2008 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Feb 08 18:57:39 2008 -0800"
      },
      "message": "mm: special mapping nopage\n\nConvert special mapping install from nopage to fault.\n\nBecause the \"vm_file\" is NULL for the special mapping, the generic VM\ncode has messed up \"vm_pgoff\" thinking that it\u0027s an anonymous mapping\nand the offset does\u0027t matter.  For that reason, we need to undo the\nvm_pgoff offset that got added into vmf-\u003epgoff.\n\n[ We _really_ should clean that up - either by making this whole special\n  mapping code just use a real file entry rather than that ugly array of\n  \"struct page\" pointers, or by just making the VM code realize that\n  even if vm_file is NULL it may not be a regular anonymous mmap.\n\t\t\t\t\t\t\t - Linus ]\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: linux-mm@kvack.org\nCc: linux-kernel@vger.kernel.org\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4cc6028d4040f95cdb590a87db478b42b8be0508",
      "tree": "9b9879d8b8cc055e4bb8eabd69b979a17e6e52cd",
      "parents": [
        "2d684cd6d9cf0c6a0e28978362671b6e2d8fb56c"
      ],
      "author": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Wed Feb 06 22:39:44 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Feb 06 22:39:44 2008 +0100"
      },
      "message": "brk: check the lower bound properly\n\nThere is a check in sys_brk(), that tries to make sure that we do not\nunderflow the area that is dedicated to brk heap.\n\nThe check is however wrong, as it assumes that brk area starts immediately\nafter the end of the code (+bss), which is wrong for example in\nenvironments with randomized brk start. The proper way is to check whether\nthe address is not below the start_brk address.\n\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "08e7d9b557299ba6ce57165ce8df310780bd681c",
      "tree": "8733b402eaa1de1a6bcdea5ee72ea8655c896dd4",
      "parents": [
        "5e5419734c8719cbc01af959ad9c0844002c0df5"
      ],
      "author": {
        "name": "Martin Schwidefsky",
        "email": "schwidefsky@de.ibm.com",
        "time": "Mon Feb 04 22:29:16 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:18 2008 -0800"
      },
      "message": "arch_rebalance_pgtables call\n\nIn order to change the layout of the page tables after an mmap has crossed the\nadress space limit of the current page table layout a architecture hook in\nget_unmapped_area is needed.  The arguments are the address of the new mapping\nand the length of it.\n\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nSigned-off-by: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: \u003clinux-arch@vger.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": "2f98735c9c24ea1f0d40a364d4e63611b689b795",
      "tree": "a42b3802449af474d36cda3b6f9fb190a717defb",
      "parents": [
        "fe2528b96b02173395f5a75e37714c07f3e25e73"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Sat Feb 02 03:08:53 2008 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Feb 04 07:55:38 2008 -0800"
      },
      "message": "vm audit: add VM_DONTEXPAND to mmap for drivers that need it\n\nDrivers that register a -\u003efault handler, but do not range-check the\noffset argument, must set VM_DONTEXPAND in the vm_flags in order to\nprevent an expanding mremap from overflowing the resource.\n\nI\u0027ve audited the tree and attempted to fix these problems (usually by\nadding VM_DONTEXPAND where it is not obvious).\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c1d171a002942ea2d93b4fbd0c9583c56fce0772",
      "tree": "49249c927dc1644e7c92150808269cb474bdd411",
      "parents": [
        "7b83dae7aa31db4f6d6e78c3c6d490a7ac58699c"
      ],
      "author": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Wed Jan 30 13:30:40 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Jan 30 13:30:40 2008 +0100"
      },
      "message": "x86: randomize brk\n\nRandomize the location of the heap (brk) for i386 and x86_64.  The range is\nrandomized in the range starting at current brk location up to 0x02000000\noffset for both architectures.  This, together with\npie-executable-randomization.patch and\npie-executable-randomization-fix.patch, should make the address space\nrandomization on i386 and x86_64 complete.\n\nArjan says:\n\nThis is known to break older versions of some emacs variants, whose dumper\ncode assumed that the last variable declared in the program is equal to the\nstart of the dynamically allocated memory region.\n\n(The dumper is the code where emacs effectively dumps core at the end of it\u0027s\ncompilation stage; this coredump is then loaded as the main program during\nnormal use)\n\niirc this was 5 years or so; we found this way back when I was at RH and we\nfirst did the security stuff there (including this brk randomization).  It\nwasn\u0027t all variants of emacs, and it got fixed as a result (I vaguely remember\nthat emacs already had code to deal with it for other archs/oses, just\nifdeffed wrongly).\n\nIt\u0027s a rare and wrong assumption as a general thing, just on x86 it mostly\nhappened to be true (but to be honest, it\u0027ll break too if gcc does\nsomething fancy or if the linker does a non-standard order).  Still its\nsomething we should at least document.\n\nNote 2: afaik it only broke the emacs *build*.  I\u0027m not 100% sure about that\n(it IS 5 years ago) though.\n\n[ akpm@linux-foundation.org: deuglification ]\n\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\nCc: Arjan van de Ven \u003carjan@infradead.org\u003e\nCc: Roland McGrath \u003croland@redhat.com\u003e\nCc: Jakub Jelinek \u003cjakub@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "88c3f7a8f2c86be264d326cf6f49a3e8c30d13a6",
      "tree": "9ab4e6996d3630652e55468b0a8ce77242630ac3",
      "parents": [
        "c9180a57a9ab2d5525faf8815a332364ee9e89b7"
      ],
      "author": {
        "name": "Richard Knutsson",
        "email": "ricknu-0@student.ltu.se",
        "time": "Sat Dec 08 12:02:48 2007 +0100"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Fri Jan 25 11:29:48 2008 +1100"
      },
      "message": "Security: remove security_file_mmap hook sparse-warnings (NULL as 0).\n\nFixing:\n  CHECK   mm/mmap.c\nmm/mmap.c:1623:29: warning: Using plain integer as NULL pointer\nmm/mmap.c:1623:29: warning: Using plain integer as NULL pointer\nmm/mmap.c:1944:29: warning: Using plain integer as NULL pointer\n\nSigned-off-by: Richard Knutsson \u003cricknu-0@student.ltu.se\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "5a211a5deabcafdc764817d5b4510c767d317ddc",
      "tree": "d330ce692f43c1b02c84ff81284e6191d567e02f",
      "parents": [
        "7cd94146cd504016315608e297219f9fb7b1413b"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Tue Dec 04 11:06:55 2007 -0500"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Thu Dec 06 00:25:30 2007 +1100"
      },
      "message": "VM/Security: add security hook to do_brk\n\nGiven a specifically crafted binary do_brk() can be used to get low\npages available in userspace virtually memory and can thus be used to\ncircumvent the mmap_min_addr low memory protection.  Add security checks\nin do_brk().\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\nAcked-by: Alan Cox \u003calan@redhat.com\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "7cd94146cd504016315608e297219f9fb7b1413b",
      "tree": "1d118d6af0a6d3efb9be66f7305827aee2ceffea",
      "parents": [
        "8869477a49c3e99def1fcdadd6bbc407fea14b45"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Mon Nov 26 18:47:40 2007 -0500"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Thu Dec 06 00:25:10 2007 +1100"
      },
      "message": "Security: round mmap hint address above mmap_min_addr\n\nIf mmap_min_addr is set and a process attempts to mmap (not fixed) with a\nnon-null hint address less than mmap_min_addr the mapping will fail the\nsecurity checks.  Since this is just a hint address this patch will round\nsuch a hint address above mmap_min_addr.\n\ngcj was found to try to be very frugal with vm usage and give hint addresses\nin the 8k-32k range.  Without this patch all such programs failed and with\nthe patch they happily get a higher address.\n\nThis patch is wrappad in CONFIG_SECURITY since mmap_min_addr doesn\u0027t exist\nwithout it and there would be no security check possible no matter what.  So\nwe should not bother compiling in this rounding if it is just a waste of\ntime.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "8869477a49c3e99def1fcdadd6bbc407fea14b45",
      "tree": "a3f77dcac695a12986715b119750f85f124179bb",
      "parents": [
        "ab5a91a8364c3d6fc617abc47cc81d162c01d90a"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Mon Nov 26 18:47:26 2007 -0500"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Thu Dec 06 00:24:48 2007 +1100"
      },
      "message": "security: protect from stack expantion into low vm addresses\n\nAdd security checks to make sure we are not attempting to expand the\nstack into memory protected by mmap_min_addr\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "1ddd439ef987c9f0209e6ce824b67518f2afe67b",
      "tree": "1f6e0ef40c2b9cf5819d9193d7d06c6a0a33ff6c",
      "parents": [
        "4ae3f847e49e3787eca91bced31f8fd328d50496"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Mon Oct 22 20:45:12 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 23 08:32:06 2007 -0700"
      },
      "message": "fix mprotect vma_wants_writenotify prot\n\nFix mprotect bug in recent commit 3ed75eb8f1cd89565966599c4f77d2edb086d5b0\n(setup vma-\u003evm_page_prot by vm_get_page_prot()): the vma_wants_writenotify\ncase was setting the same prot as when not.\n\nNothing wrong with the use of protection_map[] in mmap_region(),\nbut use vm_get_page_prot() there too in the same ~VM_SHARED way.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Coly Li \u003ccoyli@suse.de\u003e\nCc: Tony Luck \u003ctony.luck@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3ed75eb8f1cd89565966599c4f77d2edb086d5b0",
      "tree": "54e77a47b40da80d76baf5eacc2259e0bc5bdf7c",
      "parents": [
        "1c7037db50ebecf3d5cfbf7082daa5d97d900fef"
      ],
      "author": {
        "name": "Coly Li",
        "email": "coyli@suse.de",
        "time": "Thu Oct 18 23:39:15 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Oct 19 11:53:34 2007 -0700"
      },
      "message": "setup vma-\u003evm_page_prot by vm_get_page_prot()\n\nThis patch uses vm_get_page_prot() to setup vma-\u003evm_page_prot.\n\nThough inside vm_get_page_prot() the protection flags is AND with\n(VM_READ|VM_WRITE|VM_EXEC|VM_SHARED), it does not hurt correct code.\n\nSigned-off-by: Coly Li \u003ccoyli@suse.de\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Tony Luck \u003ctony.luck@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "cbfee34520666862f8ff539e580c48958fbb7706",
      "tree": "ded5cafce333e908a0fbeda1f7c55eaf7c1fbaaa",
      "parents": [
        "b53767719b6cd8789392ea3e7e2eb7b8906898f0"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@kernel.org",
        "time": "Tue Oct 16 23:31:38 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Oct 17 08:43:07 2007 -0700"
      },
      "message": "security/ cleanups\n\nThis patch contains the following cleanups that are now possible:\n- remove the unused security_operations-\u003einode_xattr_getsuffix\n- remove the no longer used security_operations-\u003eunregister_security\n- remove some no longer required exit code\n- remove a bunch of no longer used exports\n\nSigned-off-by: Adrian Bunk \u003cbunk@kernel.org\u003e\nAcked-by: James Morris \u003cjmorris@namei.org\u003e\nCc: Chris Wright \u003cchrisw@sous-sol.org\u003e\nCc: Stephen Smalley \u003csds@tycho.nsa.gov\u003e\nCc: Serge Hallyn \u003cserue@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4af3c9cc4fad54c3627e9afebf905aafde5690ed",
      "tree": "655364e458b8734a86c632316f4b5a1518529c60",
      "parents": [
        "1a614f505193fcfc1b298643268a5db5b48e297f"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Tue Oct 16 23:29:23 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Oct 17 08:42:55 2007 -0700"
      },
      "message": "Drop some headers from mm.h\n\nmm.h doesn\u0027t use directly anything from mutex.h and backing-dev.h, so\nremove them and add them back to files which need them.\n\nCross-compile tested on many configs and archs.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "34b4e4aa3c470ce8fa2bd78abb1741b4b58baad7",
      "tree": "91d620288f1aaf63c12dc84ca1015465818601f2",
      "parents": [
        "afe1ab4d577892822de2c8e803fbfaed6ec44ba3"
      ],
      "author": {
        "name": "Alan Cox",
        "email": "alan@lxorguk.ukuu.org.uk",
        "time": "Wed Aug 22 14:01:28 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Aug 22 19:52:45 2007 -0700"
      },
      "message": "fix NULL pointer dereference in __vm_enough_memory()\n\nThe new exec code inserts an accounted vma into an mm struct which is not\ncurrent-\u003emm.  The existing memory check code has a hard coded assumption\nthat this does not happen as does the security code.\n\nAs the correct mm is known we pass the mm to the security method and the\nhelper function.  A new security test is added for the case where we need\nto pass the mm and the existing one is modified to pass current-\u003emm to\navoid the need to change large amounts of code.\n\n(Thanks to Tobias for fixing rejects and testing)\n\nSigned-off-by: Alan Cox \u003calan@redhat.com\u003e\nCc: WU Fengguang \u003cwfg@mail.ustc.edu.cn\u003e\nCc: James Morris \u003cjmorris@redhat.com\u003e\nCc: Tobias Diedrich \u003cranma+kernel@tdiedrich.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4e950f6f0189f65f8bf069cf2272649ef418f5e4",
      "tree": "95710bedf2a5aa3b61002f3399e0950192fdd504",
      "parents": [
        "673d5b43daa00b42759cecc6b0760b8bf6be80d2"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon Jul 30 02:36:13 2007 +0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sun Jul 29 17:09:29 2007 -0700"
      },
      "message": "Remove fs.h from mm.h\n\nRemove fs.h from mm.h. For this,\n 1) Uninline vma_wants_writenotify(). It\u0027s pretty huge anyway.\n 2) Add back fs.h or less bloated headers (err.h) to files that need it.\n\nAs result, on x86_64 allyesconfig, fs.h dependencies cut down from 3929 files\nrebuilt down to 3444 (-12.3%).\n\nCross-compile tested without regressions on my two usual configs and (sigh):\n\nalpha              arm-mx1ads        mips-bigsur          powerpc-ebony\nalpha-allnoconfig  arm-neponset      mips-capcella        powerpc-g5\nalpha-defconfig    arm-netwinder     mips-cobalt          powerpc-holly\nalpha-up           arm-netx          mips-db1000          powerpc-iseries\narm                arm-ns9xxx        mips-db1100          powerpc-linkstation\narm-assabet        arm-omap_h2_1610  mips-db1200          powerpc-lite5200\narm-at91rm9200dk   arm-onearm        mips-db1500          powerpc-maple\narm-at91rm9200ek   arm-picotux200    mips-db1550          powerpc-mpc7448_hpc2\narm-at91sam9260ek  arm-pleb          mips-ddb5477         powerpc-mpc8272_ads\narm-at91sam9261ek  arm-pnx4008       mips-decstation      powerpc-mpc8313_rdb\narm-at91sam9263ek  arm-pxa255-idp    mips-e55             powerpc-mpc832x_mds\narm-at91sam9rlek   arm-realview      mips-emma2rh         powerpc-mpc832x_rdb\narm-ateb9200       arm-realview-smp  mips-excite          powerpc-mpc834x_itx\narm-badge4         arm-rpc           mips-fulong          powerpc-mpc834x_itxgp\narm-carmeva        arm-s3c2410       mips-ip22            powerpc-mpc834x_mds\narm-cerfcube       arm-shannon       mips-ip27            powerpc-mpc836x_mds\narm-clps7500       arm-shark         mips-ip32            powerpc-mpc8540_ads\narm-collie         arm-simpad        mips-jazz            powerpc-mpc8544_ds\narm-corgi          arm-spitz         mips-jmr3927         powerpc-mpc8560_ads\narm-csb337         arm-trizeps4      mips-malta           powerpc-mpc8568mds\narm-csb637         arm-versatile     mips-mipssim         powerpc-mpc85xx_cds\narm-ebsa110        i386              mips-mpc30x          powerpc-mpc8641_hpcn\narm-edb7211        i386-allnoconfig  mips-msp71xx         powerpc-mpc866_ads\narm-em_x270        i386-defconfig    mips-ocelot          powerpc-mpc885_ads\narm-ep93xx         i386-up           mips-pb1100          powerpc-pasemi\narm-footbridge     ia64              mips-pb1500          powerpc-pmac32\narm-fortunet       ia64-allnoconfig  mips-pb1550          powerpc-ppc64\narm-h3600          ia64-bigsur       mips-pnx8550-jbs     powerpc-prpmc2800\narm-h7201          ia64-defconfig    mips-pnx8550-stb810  powerpc-ps3\narm-h7202          ia64-gensparse    mips-qemu            powerpc-pseries\narm-hackkit        ia64-sim          mips-rbhma4200       powerpc-up\narm-integrator     ia64-sn2          mips-rbhma4500       s390\narm-iop13xx        ia64-tiger        mips-rm200           s390-allnoconfig\narm-iop32x         ia64-up           mips-sb1250-swarm    s390-defconfig\narm-iop33x         ia64-zx1          mips-sead            s390-up\narm-ixp2000        m68k              mips-tb0219          sparc\narm-ixp23xx        m68k-amiga        mips-tb0226          sparc-allnoconfig\narm-ixp4xx         m68k-apollo       mips-tb0287          sparc-defconfig\narm-jornada720     m68k-atari        mips-workpad         sparc-up\narm-kafa           m68k-bvme6000     mips-wrppmc          sparc64\narm-kb9202         m68k-hp300        mips-yosemite        sparc64-allnoconfig\narm-ks8695         m68k-mac          parisc               sparc64-defconfig\narm-lart           m68k-mvme147      parisc-allnoconfig   sparc64-up\narm-lpd270         m68k-mvme16x      parisc-defconfig     um-x86_64\narm-lpd7a400       m68k-q40          parisc-up            x86_64\narm-lpd7a404       m68k-sun3         powerpc              x86_64-allnoconfig\narm-lubbock        m68k-sun3x        powerpc-cell         x86_64-defconfig\narm-lusl7200       mips              powerpc-celleb       x86_64-up\narm-mainstone      mips-atlas        powerpc-chrp32\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b6a2fea39318e43fee84fa7b0b90d68bed92d2ba",
      "tree": "c9c3619cb2730b5c10c7427b837146bce3d69156",
      "parents": [
        "bdf4c48af20a3b0f01671799ace345e3d49576da"
      ],
      "author": {
        "name": "Ollie Wild",
        "email": "aaw@google.com",
        "time": "Thu Jul 19 01:48:16 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:45 2007 -0700"
      },
      "message": "mm: variable length argument support\n\nRemove the arg+env limit of MAX_ARG_PAGES by copying the strings directly from\nthe old mm into the new mm.\n\nWe create the new mm before the binfmt code runs, and place the new stack at\nthe very top of the address space.  Once the binfmt code runs and figures out\nwhere the stack should be, we move it downwards.\n\nIt is a bit peculiar in that we have one task with two mm\u0027s, one of which is\ninactive.\n\n[a.p.zijlstra@chello.nl: limit stack size]\nSigned-off-by: Ollie Wild \u003caaw@google.com\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: \u003clinux-arch@vger.kernel.org\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\n[bunk@stusta.de: unexport bprm_mm_init]\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "54cb8821de07f2ffcd28c380ce9b93d5784b40d7",
      "tree": "1de676534963d96af42863b20191bc9f80060dea",
      "parents": [
        "d00806b183152af6d24f46f0c33f14162ca1262a"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Thu Jul 19 01:46:59 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:41 2007 -0700"
      },
      "message": "mm: merge populate and nopage into fault (fixes nonlinear)\n\nNonlinear mappings are (AFAIKS) simply a virtual memory concept that encodes\nthe virtual address -\u003e file offset differently from linear mappings.\n\n-\u003epopulate is a layering violation because the filesystem/pagecache code\nshould need to know anything about the virtual memory mapping.  The hitch here\nis that the -\u003enopage handler didn\u0027t pass down enough information (ie.  pgoff).\n But it is more logical to pass pgoff rather than have the -\u003enopage function\ncalculate it itself anyway (because that\u0027s a similar layering violation).\n\nHaving the populate handler install the pte itself is likewise a nasty thing\nto be doing.\n\nThis patch introduces a new fault handler that replaces -\u003enopage and\n-\u003epopulate and (later) -\u003enopfn.  Most of the old mechanism is still in place\nso there is a lot of duplication and nice cleanups that can be removed if\neveryone switches over.\n\nThe rationale for doing this in the first place is that nonlinear mappings are\nsubject to the pagefault vs invalidate/truncate race too, and it seemed stupid\nto duplicate the synchronisation logic rather than just consolidate the two.\n\nAfter this patch, MAP_NONBLOCK no longer sets up ptes for pages present in\npagecache.  Seems like a fringe functionality anyway.\n\nNOPAGE_REFAULT is removed.  This should be implemented with -\u003efault, and no\nusers have hit mainline yet.\n\n[akpm@linux-foundation.org: cleanup]\n[randy.dunlap@oracle.com: doc. fixes for readahead]\n[akpm@linux-foundation.org: build fix]\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nCc: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0165ab443556bdfad388da6c33d74a71b77d72b2",
      "tree": "c2449128f60ebed846b7d63633ccee3f88949a1c",
      "parents": [
        "c44939ecb6e05aeaaf12d4e1bb046719c97e457e"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Sun Jul 15 23:38:26 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Jul 16 09:05:37 2007 -0700"
      },
      "message": "split mmap\n\nThis is a straightforward split of do_mmap_pgoff() into two functions:\n\n - do_mmap_pgoff() checks the parameters, and calculates the vma\n   flags.  Then it calls\n\n - mmap_region(), which does the actual mapping\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ed0321895182ffb6ecf210e066d87911b270d587",
      "tree": "832bb54666f73b06e55322df40f915c5e9ef64d7",
      "parents": [
        "13bddc2e9d591e31bf20020dc19ea6ca85de420e"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Jun 28 15:55:21 2007 -0400"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Wed Jul 11 22:52:29 2007 -0400"
      },
      "message": "security: Protection for exploiting null dereference using mmap\n\nAdd a new security check on mmap operations to see if the user is attempting\nto mmap to low area of the address space.  The amount of space protected is\nindicated by the new proc tunable /proc/sys/vm/mmap_min_addr and defaults to\n0, preserving existing behavior.\n\nThis patch uses a new SELinux security class \"memprotect.\"  Policy already\ncontains a number of allow rules like a_t self:process * (unconfined_t being\none of them) which mean that putting this check in the process class (its\nbest current fit) would make it useless as all user processes, which we also\nwant to protect against, would be allowed. By taking the memprotect name of\nthe new class it will also make it possible for us to move some of the other\nmemory protect permissions out of \u0027process\u0027 and into the new class next time\nwe bump the policy version number (which I also think is a good future idea)\n\nAcked-by: Stephen Smalley \u003csds@tycho.nsa.gov\u003e\nAcked-by: Chris Wright \u003cchrisw@sous-sol.org\u003e\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "06b32f3ab6df4c7489729f94bdc7093c72681d4b",
      "tree": "07fabea840fa598e510b4da899ef7f5b06282683",
      "parents": [
        "d2f1c0fa2b346769ac35559ae3bafccf151dd446"
      ],
      "author": {
        "name": "Helge Deller",
        "email": "deller@gmx.de",
        "time": "Tue Dec 19 19:28:33 2006 +0100"
      },
      "committer": {
        "name": "Kyle McMartin",
        "email": "kyle@minerva.i.cabal.ca",
        "time": "Thu Jun 21 17:46:20 2007 -0400"
      },
      "message": "[PARISC] Handle wrapping in expand_upwards()\n\nFunction expand_upwards() did not guarded against wrapping\naround to address 0. This fixes the adjtimex02 testcase from\nthe Linux Test Project on a 32bit PARISC kernel.\n\n[expand_upwards is only used on parisc and ia64; it looks like it does\n the right thing on both. --kyle]\n\nSigned-off-by: Helge Deller \u003cdeller@gmx.de\u003e\nCc: Tony Luck \u003ctony.luck@intel.com\u003e\nSigned-off-by: Kyle McMartin \u003ckyle@parisc-linux.org\u003e\n"
    },
    {
      "commit": "59c51591a0ac7568824f541f57de967e88adaa07",
      "tree": "243d20eb0a26b76d5d312f39ec5a1ff60e036711",
      "parents": [
        "02a3e59a088749c08b0293ee1535f5bf48f5926c"
      ],
      "author": {
        "name": "Michael Opdenacker",
        "email": "michael@free-electrons.com",
        "time": "Wed May 09 08:57:56 2007 +0200"
      },
      "committer": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Wed May 09 08:57:56 2007 +0200"
      },
      "message": "Fix occurrences of \"the the \"\n\nSigned-off-by: Michael Opdenacker \u003cmichael@free-electrons.com\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\n"
    },
    {
      "commit": "74add80cbd7fe246c893b93ee75ac59acdd01dd4",
      "tree": "57ab3f1754bb90fb81721a76b8e342871203a75c",
      "parents": [
        "02a93208edec0d655c9f18613d830dc6afeda7d4"
      ],
      "author": {
        "name": "Roland McGrath",
        "email": "roland@redhat.com",
        "time": "Tue May 08 11:19:38 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:35:28 2007 -0700"
      },
      "message": "Remove unused variable in get_unmapped_area\n\nSigned-off-by: Roland McGrath \u003croland@redhat.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4b1d89290b62bb2db476c94c82cf7442aab440c8",
      "tree": "9db89e2dbf5a0cb222f3d042a5ad167d75df265c",
      "parents": [
        "06abdfb47ee745a4d79721de24260815ec6bca2b"
      ],
      "author": {
        "name": "Benjamin Herrenschmidt",
        "email": "benh@kernel.crashing.org",
        "time": "Sun May 06 14:50:14 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:57 2007 -0700"
      },
      "message": "get_unmapped_area doesn\u0027t need hugetlbfs hacks anymore\n\nRemove the hugetlbfs specific hacks in toplevel get_unmapped_area() now that\nall archs and hugetlbfs itself do the right thing for both cases.\n\nSigned-off-by: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nAcked-by: William Irwin \u003cbill.irwin@oracle.com\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Richard Henderson \u003crth@twiddle.net\u003e\nCc: Ivan Kokshaysky \u003cink@jurassic.park.msu.ru\u003e\nCc: Russell King \u003crmk+kernel@arm.linux.org.uk\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nCc: \"Luck, Tony\" \u003ctony.luck@intel.com\u003e\nCc: Kyle McMartin \u003ckyle@mcmartin.ca\u003e\nCc: Grant Grundler \u003cgrundler@parisc-linux.org\u003e\nCc: Matthew Wilcox \u003cwilly@debian.org\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: Adam Litke \u003cagl@us.ibm.com\u003e\nCc: David Gibson \u003cdavid@gibson.dropbear.id.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "06abdfb47ee745a4d79721de24260815ec6bca2b",
      "tree": "afbf3f7a0f020529317ec115d2b5f62f67c84404",
      "parents": [
        "036e08568cbee4b16e14551e9f004c3d490d6271"
      ],
      "author": {
        "name": "Benjamin Herrenschmidt",
        "email": "benh@kernel.crashing.org",
        "time": "Sun May 06 14:50:13 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:57 2007 -0700"
      },
      "message": "get_unmapped_area handles MAP_FIXED in generic code\n\ngeneric arch_get_unmapped_area() now handles MAP_FIXED.  Now that all\nimplementations have been fixed, change the toplevel get_unmapped_area() to\ncall into arch or drivers for the MAP_FIXED case.\n\nSigned-off-by: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Richard Henderson \u003crth@twiddle.net\u003e\nCc: Ivan Kokshaysky \u003cink@jurassic.park.msu.ru\u003e\nCc: Russell King \u003crmk+kernel@arm.linux.org.uk\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nCc: \"Luck, Tony\" \u003ctony.luck@intel.com\u003e\nCc: Kyle McMartin \u003ckyle@mcmartin.ca\u003e\nCc: Grant Grundler \u003cgrundler@parisc-linux.org\u003e\nCc: Matthew Wilcox \u003cwilly@debian.org\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: William Irwin \u003cbill.irwin@oracle.com\u003e\nCc: Adam Litke \u003cagl@us.ibm.com\u003e\nCc: David Gibson \u003cdavid@gibson.dropbear.id.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d6dd61c831226f9cd7750885da04d360d6455101",
      "tree": "30f84a429821d207f7de5dd6225d3d9515042c0a",
      "parents": [
        "5311ab62cdc7788784971ed816ce85e926f3e994"
      ],
      "author": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@goop.org",
        "time": "Wed May 02 19:27:14 2007 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "andi@basil.nowhere.org",
        "time": "Wed May 02 19:27:14 2007 +0200"
      },
      "message": "[PATCH] x86: PARAVIRT: add hooks to intercept mm creation and destruction\n\nAdd hooks to allow a paravirt implementation to track the lifetime of\nan mm.  Paravirtualization requires three hooks, but only two are\nneeded in common code.  They are:\n\narch_dup_mmap, which is called when a new mmap is created at fork\n\narch_exit_mmap, which is called when the last process reference to an\n  mm is dropped, which typically happens on exit and exec.\n\nThe third hook is activate_mm, which is called from the arch-specific\nactivate_mm() macro/function, and so doesn\u0027t need stub versions for\nother architectures.  It\u0027s called when an mm is first used.\n\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\nCc: linux-arch@vger.kernel.org\nCc: James Bottomley \u003cJames.Bottomley@SteelEye.com\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "d1af65d13f3625543916a85c86d02826df910fcf",
      "tree": "6f04906a3837bd92d89751925e2b4937439e74c0",
      "parents": [
        "04a51e66adcdc0de6ffaa488934ce3ffb3818ecf"
      ],
      "author": {
        "name": "David Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Feb 28 20:13:13 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Mar 01 14:53:38 2007 -0800"
      },
      "message": "[PATCH] Bug in MM_RB debugging\n\nThe code is seemingly trying to make sure that rb_next() brings us to\nsuccessive increasing vma entries.\n\nBut the two variables, prev and pend, used to perform these checks, are\nnever advanced.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\nCc: Andrea Arcangeli \u003candrea@novell.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "fa5dc22f8586cc3742413dd05f5cd9e039dfab9e",
      "tree": "39a97d91e25794f64e3cc03f1d4a8fa2c8ad78d2",
      "parents": [
        "a25700a53f715fde30443e737e52310c6d4a311a"
      ],
      "author": {
        "name": "Roland McGrath",
        "email": "roland@redhat.com",
        "time": "Thu Feb 08 14:20:41 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Feb 09 09:25:47 2007 -0800"
      },
      "message": "[PATCH] Add install_special_mapping\n\nThis patch adds a utility function install_special_mapping, for creating a\nspecial vma using a fixed set of preallocated pages as backing, such as for a\nvDSO.  This consolidates some nearly identical code used for vDSO mapping\nreimplemented for different architectures.\n\nSigned-off-by: Roland McGrath \u003croland@redhat.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0d59a01bc461bbab4017ff449b8401151ef44cf6",
      "tree": "ec388c127883f8dddde3a933eac44a45aca6520c",
      "parents": [
        "bcdddfb66cc998252d34758ce4109cedc0d24a5c"
      ],
      "author": {
        "name": "Adam Litke",
        "email": "agl@us.ibm.com",
        "time": "Tue Jan 30 14:35:39 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Jan 30 16:01:35 2007 -0800"
      },
      "message": "[PATCH] Don\u0027t allow the stack to grow into hugetlb reserved regions\n\nWhen expanding the stack, we don\u0027t currently check if the VMA will cross\ninto an area of the address space that is reserved for hugetlb pages.\nSubsequent faults on the expanded portion of such a VMA will confuse the\nlow-level MMU code, resulting in an OOPS.  Check for this.\n\nSigned-off-by: Adam Litke \u003cagl@us.ibm.com\u003e\nCc: David Gibson \u003cdavid@gibson.dropbear.id.au\u003e\nCc: William Lee Irwin III \u003cwli@holomorphy.com\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d3ac7f892b7d07d61d0895caa4f6e190e43112f8",
      "tree": "0ff35e7e5ab822b600075d79910d3cc136ba07ef",
      "parents": [
        "f3a43f3f64bff8e205c3702f6b4804d66e306848"
      ],
      "author": {
        "name": "Josef \"Jeff\" Sipek",
        "email": "jsipek@cs.sunysb.edu",
        "time": "Fri Dec 08 02:36:44 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Dec 08 08:28:43 2006 -0800"
      },
      "message": "[PATCH] mm: change uses of f_{dentry,vfsmnt} to use f_path\n\nChange all the uses of f_{dentry,vfsmnt} to f_path.{dentry,mnt} in linux/mm/.\n\nSigned-off-by: Josef \"Jeff\" Sipek \u003cjsipek@cs.sunysb.edu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "e94b1766097d53e6f3ccfb36c8baa562ffeda3fc",
      "tree": "93fa0a8ab84976d4e89c50768ca8b8878d642a0d",
      "parents": [
        "54e6ecb23951b195d02433a741c7f7cb0b796c78"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed Dec 06 20:33:17 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:24 2006 -0800"
      },
      "message": "[PATCH] slab: remove SLAB_KERNEL\n\nSLAB_KERNEL is an alias of GFP_KERNEL.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "cd2579d7aa7bfc966cc271a88e77f8cfc3b0b7ba",
      "tree": "47687e0e88bf5f5ea266112490a63f55085b8c18",
      "parents": [
        "1f794b6082a5ff88f7c48d1634056026acf806f4"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Nov 14 13:43:38 2006 +0000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Tue Nov 14 15:15:01 2006 -0800"
      },
      "message": "[PATCH] hugetlb: fix error return for brk() entering a hugepage region\n\nCommit cb07c9a1864a8eac9f3123e428100d5b2a16e65a causes the wrong return\nvalue.  is_hugepage_only_range() is a boolean, so we should return\n-EINVAL rather than 1.\n\nAlso - we can use \"mm\" instead of looking up \"current-\u003emm\" again.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "cb07c9a1864a8eac9f3123e428100d5b2a16e65a",
      "tree": "fadc568154bbe3c1466081b718e9638438c82c46",
      "parents": [
        "68589bc353037f233fe510ad9ff432338c95db66"
      ],
      "author": {
        "name": "David Gibson",
        "email": "david@gibson.dropbear.id.au",
        "time": "Tue Nov 14 02:03:38 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Tue Nov 14 09:09:27 2006 -0800"
      },
      "message": "[PATCH] hugetlb: check for brk() entering a hugepage region\n\nUnlike mmap(), the codepath for brk() creates a vma without first checking\nthat it doesn\u0027t touch a region exclusively reserved for hugepages.  On\npowerpc, this can allow it to create a normal page vma in a hugepage\nregion, causing oopses and other badness.\n\nAdd a test to prevent this.  With this patch, brk() will simply fail if it\nattempts to move the break into a hugepage reserved region.\n\nSigned-off-by: David Gibson \u003cdavid@gibson.dropbear.id.au\u003e\nCc: Adam Litke \u003cagl@us.ibm.com\u003e\nCc: 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": "68589bc353037f233fe510ad9ff432338c95db66",
      "tree": "dedc58ff66134f54796642917e2a2a26ac6802b0",
      "parents": [
        "69ae9e3ee4ce99140a7db424bebf55d8d180da2f"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Nov 14 02:03:32 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Tue Nov 14 09:09:27 2006 -0800"
      },
      "message": "[PATCH] hugetlb: prepare_hugepage_range check offset too\n\n(David:)\n\nIf hugetlbfs_file_mmap() returns a failure to do_mmap_pgoff() - for example,\nbecause the given file offset is not hugepage aligned - then do_mmap_pgoff\nwill go to the unmap_and_free_vma backout path.\n\nBut at this stage the vma hasn\u0027t been marked as hugepage, and the backout path\nwill call unmap_region() on it.  That will eventually call down to the\nnon-hugepage version of unmap_page_range().  On ppc64, at least, that will\ncause serious problems if there are any existing hugepage pagetable entries in\nthe vicinity - for example if there are any other hugepage mappings under the\nsame PUD.  unmap_page_range() will trigger a bad_pud() on the hugepage pud\nentries.  I suspect this will also cause bad problems on ia64, though I don\u0027t\nhave a machine to test it on.\n\n(Hugh:)\n\nprepare_hugepage_range() should check file offset alignment when it checks\nvirtual address and length, to stop MAP_FIXED with a bad huge offset from\nunmapping before it fails further down.  PowerPC should apply the same\nprepare_hugepage_range alignment checks as ia64 and all the others do.\n\nThen none of the alignment checks in hugetlbfs_file_mmap are required (nor\nis the check for too small a mapping); but even so, move up setting of\nVM_HUGETLB and add a comment to warn of what David Gibson discovered - if\nhugetlbfs_file_mmap fails before setting it, do_mmap_pgoff\u0027s unmap_region\nwhen unwinding from error will go the non-huge way, which may cause bad\nbehaviour on architectures (powerpc and ia64) which segregate their huge\nmappings into a separate region of the address space.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: \"Luck, Tony\" \u003ctony.luck@intel.com\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nAcked-by: Adam Litke \u003cagl@us.ibm.com\u003e\nAcked-by: David Gibson \u003cdavid@gibson.dropbear.id.au\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "80c5606c3b45e0176c32d3108ade1e1cb0b954f3",
      "tree": "441944cc1c2e47e2d34cabb5313c25e03f3284d3",
      "parents": [
        "a7a0d86f5aa40a2215e36fe21d7911cf718ba428"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Oct 15 14:09:55 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Oct 15 14:09:55 2006 -0700"
      },
      "message": "Fix VM_MAYEXEC calculation\n\n.. and clean up the file mapping code while at it.  No point in having a\n\"if (file)\" repeated twice, and generally doing similar checks in two\ndifferent sections of the same code\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "972d1a7b140569084439a81265a0f15b74e924e0",
      "tree": "e86e676e407503ef3d98020a88bb925235f11434",
      "parents": [
        "8417bba4b151346ed475fcc923693c9e3be89063"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Sep 25 23:31:51 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Sep 26 08:48:51 2006 -0700"
      },
      "message": "[PATCH] ZVC: Support NR_SLAB_RECLAIMABLE / NR_SLAB_UNRECLAIMABLE\n\nRemove the atomic counter for slab_reclaim_pages and replace the counter\nand NR_SLAB with two ZVC counter that account for unreclaimable and\nreclaimable slab pages: NR_SLAB_RECLAIMABLE and NR_SLAB_UNRECLAIMABLE.\n\nChange the check in vmscan.c to refer to to NR_SLAB_RECLAIMABLE.  The\nintend seems to be to check for slab pages that could be freed.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "d08b3851da41d0ee60851f2c75b118e1f7a5fc89",
      "tree": "a01f6930a1387e8f66607e2fe16c62bb7044353b",
      "parents": [
        "725d704ecaca4a43f067092c140d4f3271cf2856"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Mon Sep 25 23:30:57 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Sep 26 08:48:44 2006 -0700"
      },
      "message": "[PATCH] mm: tracking shared dirty pages\n\nTracking of dirty pages in shared writeable mmap()s.\n\nThe idea is simple: write protect clean shared writeable pages, catch the\nwrite-fault, make writeable and set dirty.  On page write-back clean all the\nPTE dirty bits and write protect them once again.\n\nThe implementation is a tad harder, mainly because the default\nbacking_dev_info capabilities were too loosely maintained.  Hence it is not\nenough to test the backing_dev_info for cap_account_dirty.\n\nThe current heuristic is as follows, a VMA is eligible when:\n - its shared writeable\n    (vm_flags \u0026 (VM_WRITE|VM_SHARED)) \u003d\u003d (VM_WRITE|VM_SHARED)\n - it is not a \u0027special\u0027 mapping\n    (vm_flags \u0026 (VM_PFNMAP|VM_INSERTPAGE)) \u003d\u003d 0\n - the backing_dev_info is cap_account_dirty\n    mapping_cap_account_dirty(vma-\u003evm_file-\u003ef_mapping)\n - f_op-\u003emmap() didn\u0027t change the default page protection\n\nPage from remap_pfn_range() are explicitly excluded because their COW\nsemantics are already horrid enough (see vm_normal_page() in do_wp_page()) and\nbecause they don\u0027t have a backing store anyway.\n\nmprotect() is taught about the new behaviour as well.  However it overrides\nthe last condition.\n\nCleaning the pages on write-back is done with page_mkclean() a new rmap call.\nIt can be called on any page, but is currently only implemented for mapped\npages, if the page is found the be of a VMA that accounts dirty pages it will\nalso wrprotect the PTE.\n\nFinally, in fs/buffers.c:try_to_free_buffers(); remove clear_page_dirty() from\nunder -\u003eprivate_lock.  This seems to be safe, since -\u003eprivate_lock is used to\nserialize access to the buffers, not the page itself.  This is needed because\nclear_page_dirty() will call into page_mkclean() and would thereby violate\nlocking order.\n\n[dhowells@redhat.com: Provide a page_mkclean() implementation for NOMMU]\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "6585b572402e5ec7936422123b44b65fef7a5ea6",
      "tree": "52eef1d14bcf6f6ad6226fca02e8198a30d7abe3",
      "parents": [
        "2ee8099f2c2bc74a7c2fac7f83e12a5d651681d3",
        "edf03fb0575cbee2595a63374b17dc0921f2094a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Sep 22 17:50:50 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Sep 22 17:50:50 2006 -0700"
      },
      "message": "Merge master.kernel.org:/pub/scm/linux/kernel/git/davej/agpgart\n\n* master.kernel.org:/pub/scm/linux/kernel/git/davej/agpgart:\n  [AGPGART] Rework AGPv3 modesetting fallback.\n  [AGPGART] Add suspend callback for i965\n  [AGPGART] Fix number of aperture sizes in 830 gart structs.\n  [AGPGART] Intel 965 Express support.\n  [AGPGART] agp.h: constify struct agp_bridge_data::version\n  [AGPGART] const\u0027ify VIA AGP PCI table.\n  [AGPGART] CONFIG_PM\u003dn slim: drivers/char/agp/intel-agp.c\n  [AGPGART] CONFIG_PM\u003dn slim: drivers/char/agp/efficeon-agp.c\n  [AGPGART] Const\u0027ify the agpgart driver version.\n  [AGPGART] remove private page protection map\n"
    },
    {
      "commit": "3a459756810912d2c2bf188cef566af255936b4d",
      "tree": "1b52d90a2412811ebf5078b4f55112864e1890df",
      "parents": [
        "10387e5eb45c6e48d67102b88229f5bc6037461c"
      ],
      "author": {
        "name": "Kirill Korotaev",
        "email": "dev@openvz.org",
        "time": "Thu Sep 07 14:17:04 2006 +0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Sep 08 08:40:46 2006 -0700"
      },
      "message": "[PATCH] IA64,sparc: local DoS with corrupted ELFs\n\nThis prevents cross-region mappings on IA64 and SPARC which could lead\nto system crash.  They were correctly trapped for normal mmap() calls,\nbut not for the kernel internal calls generated by executable loading.\n\nThis code just moves the architecture-specific cross-region checks into\nan arch-specific \"arch_mmap_check()\" macro, and defines that for the\narchitectures that needed it (ia64, sparc and sparc64).\n\nArchitectures that don\u0027t have any special requirements can just ignore\nthe new cross-region check, since the mmap() code will just notice on\nits own when the macro isn\u0027t defined.\n\nSigned-off-by: Pavel Emelianov \u003cxemul@openvz.org\u003e\nSigned-off-by: Kirill Korotaev \u003cdev@openvz.org\u003e\nAcked-by: David Miller \u003cdavem@davemloft.net\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n[ Cleaned up to not affect architectures that don\u0027t need it ]\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "804af2cf6e7af31d2e664b54e657dddd9b531dbd",
      "tree": "a9127236c76953ddc627b8133aae208651e206fd",
      "parents": [
        "64821324ca49f24be1a66f2f432108f96a24e596"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Wed Jul 26 21:39:49 2006 +0100"
      },
      "committer": {
        "name": "Dave Jones",
        "email": "davej@redhat.com",
        "time": "Wed Jul 26 19:58:39 2006 -0400"
      },
      "message": "[AGPGART] remove private page protection map\n\nAGP keeps its own copy of the protection_map, upcoming DRM changes will\nalso require access to this map from modules.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Dave Airlie \u003cairlied@linux.ie\u003e\nSigned-off-by: Dave Jones \u003cdavej@redhat.com\u003e\n"
    },
    {
      "commit": "347ce434d57da80fd5809c0c836f206a50999c26",
      "tree": "f730d151be77977f594e5cc083a93bbeb4c602cc",
      "parents": [
        "65ba55f500a37272985d071c9bbb35256a2f7c14"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Fri Jun 30 01:55:35 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jun 30 11:25:34 2006 -0700"
      },
      "message": "[PATCH] zoned vm counters: conversion of nr_pagecache to per zone counter\n\nCurrently a single atomic variable is used to establish the size of the page\ncache in the whole machine.  The zoned VM counters have the same method of\nimplementation as the nr_pagecache code but also allow the determination of\nthe pagecache size per zone.\n\nRemove the special implementation for nr_pagecache and make it a zoned counter\nnamed NR_FILE_PAGES.\n\nUpdates of the page cache counters are always performed with interrupts off.\nWe can therefore use the __ variant here.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "9637a5efd4fbe36164c5ce7f6a0ee68b2bf22b7f",
      "tree": "38b86e3e2151e78f952076e36bee4fd7d77e3baf",
      "parents": [
        "bd96b9eb7cfd6ab24ba244360a09980a720874d2"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Jun 23 02:03:43 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jun 23 07:42:51 2006 -0700"
      },
      "message": "[PATCH] add page_mkwrite() vm_operations method\n\nAdd a new VMA operation to notify a filesystem or other driver about the\nMMU generating a fault because userspace attempted to write to a page\nmapped through a read-only PTE.\n\nThis facility permits the filesystem or driver to:\n\n (*) Implement storage allocation/reservation on attempted write, and so to\n     deal with problems such as ENOSPC more gracefully (perhaps by generating\n     SIGBUS).\n\n (*) Delay making the page writable until the contents have been written to a\n     backing cache. This is useful for NFS/AFS when using FS-Cache/CacheFS.\n     It permits the filesystem to have some guarantee about the state of the\n     cache.\n\n (*) Account and limit number of dirty pages. This is one piece of the puzzle\n     needed to make shared writable mapping work safely in FUSE.\n\nNeeded by cachefs (Or is it cachefiles?  Or fscache? \u003chead spins\u003e).\n\nAt least four other groups have stated an interest in it or a desire to use\nthe functionality it provides: FUSE, OCFS2, NTFS and JFFS2.  Also, things like\nEXT3 really ought to use it to deal with the case of shared-writable mmap\nencountering ENOSPC before we permit the page to be dirtied.\n\nFrom: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\n\n  get_user_pages(.write\u003d1, .force\u003d1) can generate COW hits on read-only\n  shared mappings, this patch traps those as mkpage_write candidates and fails\n  to handle them the old way.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nCc: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nCc: Joel Becker \u003cJoel.Becker@oracle.com\u003e\nCc: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\nCc: Anton Altaparmakov \u003caia21@cantab.net\u003e\nCc: David Woodhouse \u003cdwmw2@infradead.org\u003e\nCc: 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": "6d9f78396583244258080f3369889644c06c37c8",
      "tree": "645f5e8630bc57e3a8f5653dc941fc0232b5e98b",
      "parents": [
        "cb45b0e966cbe747b6189c15b108901cc7d6c97c"
      ],
      "author": {
        "name": "Hideo AOKI",
        "email": "haoki@redhat.com",
        "time": "Mon Apr 10 22:53:00 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Apr 11 06:18:32 2006 -0700"
      },
      "message": "[PATCH] overcommit: use totalreserve_pages\n\nThis patch is an enhancement of OVERCOMMIT_GUESS algorithm in\n__vm_enough_memory() in mm/mmap.c.\n\nWhen the OVERCOMMIT_GUESS algorithm calculates the number of free pages,\nthe algorithm subtracts the number of reserved pages from the result\nnr_free_pages().\n\nSigned-off-by: Hideo Aoki \u003chaoki@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "1e624196f43c3a62122959e15c5f03572cdadb5d",
      "tree": "4196ccebe125c17dabc011422c6ff251835d1933",
      "parents": [
        "d6fef9da19b7acd46e04b7dbbba726b3febeca94"
      ],
      "author": {
        "name": "Ram Gupta",
        "email": "ram.gupta5@gmail.com",
        "time": "Mon Apr 10 22:52:57 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Apr 11 06:18:32 2006 -0700"
      },
      "message": "[PATCH] mm: fix bug in brk()\n\nThe code checks for newbrk with oldbrk which are page aligned before making\na check for the memory limit set of data segment.  If the memory limit is\nnot page aligned in that case it bypasses the test for the limit if the\nmemory allocation is still for the same page.\n\nSigned-off-by: Ram Gupta \u003cram.gupta5@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "46a350ef9803a2526a128c55cdb27dd73b2ad966",
      "tree": "abd046a56c524965862f056e8edff0be629847cb",
      "parents": [
        "8abd8e298eb15e2c1b993df0634daf29e43e0aab"
      ],
      "author": {
        "name": "Eric Sesterhenn",
        "email": "snakebyte@gmx.de",
        "time": "Sat Apr 01 01:23:29 2006 +0200"
      },
      "committer": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Sat Apr 01 01:23:29 2006 +0200"
      },
      "message": "BUG_ON() Conversion in mm/mmap.c\n\nthis changes if() BUG(); constructs to BUG_ON() which is\ncleaner, contains unlikely() and can better optimized away.\n\nSigned-off-by: Eric Sesterhenn \u003csnakebyte@gmx.de\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\n"
    },
    {
      "commit": "c5e3b83e97be4e09961c0af101644643e5d03d17",
      "tree": "29863b7ff7452d10f0af51c3ff7ef72235e81c90",
      "parents": [
        "40c07ae8daa659b8feb149c84731629386873c16"
      ],
      "author": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Sat Mar 25 03:06:43 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Mar 25 08:22:49 2006 -0800"
      },
      "message": "[PATCH] mm: use kmem_cache_zalloc\n\nConvert mm/ to use the new kmem_cache_zalloc allocator.\n\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "a6f563db09c54c80d80e9013182dc512a5e53d0f",
      "tree": "7fa43d6a7d83a30042356f06a9cc6b09472a70e7",
      "parents": [
        "fb8d14e172a29ba5ac69a73b61196be86fdfc3e1"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Wed Mar 22 00:08:29 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Mar 22 07:54:01 2006 -0800"
      },
      "message": "[PATCH] remove VM_DONTCOPY bogosities\n\nNow that it\u0027s madvisable, remove two pieces of VM_DONTCOPY bogosity:\n\n1. There was and is no logical reason why VM_DONTCOPY should be in the\n   list of flags which forbid vma merging (and those drivers which set\n   it are also setting VM_IO, which itself forbids the merge).\n\n2. It\u0027s hard to understand the purpose of the VM_HUGETLB, VM_DONTCOPY\n   block in vm_stat_account: but never mind, it\u0027s under CONFIG_HUGETLB,\n   which (unlike CONFIG_HUGETLB_PAGE or CONFIG_HUGETLBFS) has never been\n   defined.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: William Lee Irwin III \u003cwli@holomorphy.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": "4d7672b46244abffea1953e55688c0ea143dd617",
      "tree": "9f3bdf438bcb0d5f6e723665ced23308fffb8368",
      "parents": [
        "281ab031a8c9e5b593142eb4ec59a87faae8676a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Dec 16 10:21:23 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Dec 16 10:21:23 2005 -0800"
      },
      "message": "Make sure we copy pages inserted with \"vm_insert_page()\" on fork\n\nThe logic that decides that a fork() might be able to avoid copying a VM\narea when it can be re-created by page faults didn\u0027t know about the new\nvm_insert_page() case.\n\nAlso make some things a bit more anal wrt VM_PFNMAP.\n\nPointed out by Hugh Dickins \u003chugh@veritas.com\u003e\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "83e9b7e929d1323b9a155d186f77aa8c06155cc3",
      "tree": "3cad39e867ca337b08bc4a7309c2b17787abd527",
      "parents": [
        "ed5297a94090d9a9f27b0ce1f9601ebe73561cff"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Mon Nov 21 21:32:12 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Nov 22 09:13:42 2005 -0800"
      },
      "message": "[PATCH] unpaged: private write VM_RESERVED\n\nThe PageReserved removal in 2.6.15-rc1 issued a \"deprecated\" message when you\ntried to mmap or mprotect MAP_PRIVATE PROT_WRITE a VM_RESERVED, and failed\nwith -EACCES: because do_wp_page lacks the refinement to COW pages in those\nareas, nor do we expect to find anonymous pages in them; and it seemed just\nbloat to add code for handling such a peculiar case.  But immediately it\ncaused vbetool and ddcprobe (using lrmi) to fail.\n\nSo revert the \"deprecated\" messages, letting mmap and mprotect succeed.  But\nleave do_wp_page\u0027s BUG_ON(vma-\u003evm_flags \u0026 VM_RESERVED) in place until we\u0027ve\nadded the code to do it right: so this particular patch is only good if the\napp doesn\u0027t really need to write to that private area.\n\nSigned-off-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": "9ab8851549fb9ed570013c33e0786a3fd084be41",
      "tree": "a5ed61d5e2a09ee0f8bd1a9e707b46954dff13ae",
      "parents": [
        "a39cf72ceb406e152c4682c0b635a96f1439c5ed"
      ],
      "author": {
        "name": "Matthew Wilcox",
        "email": "willy@parisc-linux.org",
        "time": "Fri Nov 18 16:16:42 2005 -0500"
      },
      "committer": {
        "name": "Kyle McMartin",
        "email": "kyle@parisc-linux.org",
        "time": "Fri Nov 18 16:16:42 2005 -0500"
      },
      "message": "[PARISC] Fix compile warning caused by conflicting types of expand_upwards()\n\nFix compile warning caused by conflicting types of expand_upwards. IA64\nrequires it to not be static inline, as it\u0027s used outside mm/mmap.c\n\nSigned-off-by: Matthew Wilcox \u003cwilly@parisc-linux.org\u003e\nSigned-off-by: Kyle McMartin \u003ckyle@parisc-linux.org\u003e\n"
    },
    {
      "commit": "55be570c529643e83195d6688805127533184aa4",
      "tree": "ab5789c467842e1d056f36d75ab8c73ddcce935f",
      "parents": [
        "a7f988ba304c5f6e78f937a06d120a0097b4d351"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Mon Nov 07 01:01:37 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Nov 07 07:54:06 2005 -0800"
      },
      "message": "[PATCH] mm/{mmap,nommu}.c: several unexports\n\nI didn\u0027t find any possible modular usage in the kernel.\n\nThis patch was already ACK\u0027ed by Christoph Hellwig.\n\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "a241ec65aeac3d69a08a7b153cccbdb7ea35063f",
      "tree": "e96585e8b1e699f31bad1fa61f34d2ec7c3a187c",
      "parents": [
        "b3099b48da23686d8378133b0264ee00385ee5fa"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@us.ibm.com",
        "time": "Sun Oct 30 15:03:12 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Oct 30 17:37:27 2005 -0800"
      },
      "message": "[PATCH] RCU torture-testing kernel module\n\nThis patch is a rewrite of the one submitted on October 1st, using modules\n(http://marc.theaimsgroup.com/?l\u003dlinux-kernel\u0026m\u003d112819093522998\u0026w\u003d2).\n\nThis rewrite adds a tristate CONFIG_RCU_TORTURE_TEST, which enables an\nintense torture test of the RCU infratructure.  This is needed due to the\ncontinued changes to the RCU infrastructure to accommodate dynamic ticks,\nCPU hotplug, realtime, and so on.  Most of the code is in a separate file\nthat is compiled only if the CONFIG variable is set.  Documentation on how\nto run the test and interpret the output is also included.\n\nThis code has been tested on i386 and ppc64, and an earlier version of the\ncode has received extensive testing on a number of architectures as part of\nthe PREEMPT_RT patchset.\n\nSigned-off-by: \"Paul E. McKenney\" \u003cpaulmck@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "508034a32b819a2d40aa7ac0dbc8cd2e044c2de6",
      "tree": "906a8f0095af24f403b30d649d3ec1ffb4ff2f50",
      "parents": [
        "8f4f8c164cb4af1432cc25eda82928ea4519ba72"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Sat Oct 29 18:16:30 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 29 21:40:41 2005 -0700"
      },
      "message": "[PATCH] mm: unmap_vmas with inner ptlock\n\nRemove the page_table_lock from around the calls to unmap_vmas, and replace\nthe pte_offset_map in zap_pte_range by pte_offset_map_lock: all callers are\nnow safe to descend without page_table_lock.\n\nDon\u0027t attempt fancy locking for hugepages, just take page_table_lock in\nunmap_hugepage_range.  Which makes zap_hugepage_range, and the hugetlb test in\nzap_page_range, redundant: unmap_vmas calls unmap_hugepage_range anyway.  Nor\ndoes unmap_vmas have much use for its mm arg now.\n\nThe tlb_start_vma and tlb_end_vma in unmap_page_range are now called without\npage_table_lock: if they\u0027re implemented at all, they typically come down to\nflush_cache_range (usually done outside page_table_lock) and flush_tlb_range\n(which we already audited for the mprotect case).\n\nSigned-off-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": "8f4f8c164cb4af1432cc25eda82928ea4519ba72",
      "tree": "49cd3c62069df1f8d6c863b9806923de16c10e8b",
      "parents": [
        "663b97f7efd001b0c56bd5fce059c5272725b86f"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Sat Oct 29 18:16:29 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 29 21:40:40 2005 -0700"
      },
      "message": "[PATCH] mm: unlink vma before pagetables\n\nIn most places the descent from pgd to pud to pmd to pte holds mmap_sem\n(exclusively or not), which ensures that free_pgtables cannot be freeing page\ntables from any level at the same time.  But truncation and reverse mapping\ndescend without mmap_sem.\n\nNo problem: just make sure that a vma is unlinked from its prio_tree (or\nnonlinear list) and from its anon_vma list, after zapping the vma, but before\nfreeing its page tables.  Then neither vmtruncate nor rmap can reach that vma\nwhose page tables are now volatile (nor do they need to reach it, since all\nits page entries have been zapped by this stage).\n\nThe i_mmap_lock and anon_vma-\u003elock already serialize this correctly; but the\nlocking hierarchy is such that we cannot take them while holding\npage_table_lock.  Well, we\u0027re trying to push that down anyway.  So in this\npatch, move anon_vma_unlink and unlink_file_vma into free_pgtables, at the\nsame time as moving page_table_lock around calls to unmap_vmas.\n\ntlb_gather_mmu and tlb_finish_mmu then fall outside the page_table_lock, but\nwe made them preempt_disable and preempt_enable earlier; and a long source\naudit of all the architectures has shown no problem with removing\npage_table_lock from them.  free_pgtables doesn\u0027t need page_table_lock for\nitself, nor for what it calls; tlb-\u003emm-\u003enr_ptes is usually protected by\npage_table_lock, but partly by non-exclusive mmap_sem - here it\u0027s decremented\nwith exclusive mmap_sem, or mm_users 0.  update_hiwater_rss and\nvm_unacct_memory don\u0027t need page_table_lock either.\n\nSigned-off-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": "46dea3d092d23a58b42499cc8a21de0fad079f4a",
      "tree": "6ca46fb09d18e8ea51a354a1494cc742fcf2f2e7",
      "parents": [
        "f449952bc8bde7fbc73c6d20dff92b627a21f8b9"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Sat Oct 29 18:16:20 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 29 21:40:39 2005 -0700"
      },
      "message": "[PATCH] mm: ia64 use expand_upwards\n\nia64 has expand_backing_store function for growing its Register Backing Store\nvma upwards.  But more complete code for this purpose is found in the\nCONFIG_STACK_GROWSUP part of mm/mmap.c.  Uglify its #ifdefs further to provide\nexpand_upwards for ia64 as well as expand_stack for parisc.\n\nThe Register Backing Store vma should be marked VM_ACCOUNT.  Implement the\nintention of growing it only a page at a time, instead of passing an address\noutside of the vma to handle_mm_fault, with unknown consequences.\n\nSigned-off-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": "365e9c87a982c03d0af3886e29d877f581b59611",
      "tree": "d06c1918ca9fe6677d7e4e869555e095004274f7",
      "parents": [
        "861f2fb8e796022b4928cab9c74fca6681a1c557"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Sat Oct 29 18:16:18 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 29 21:40:39 2005 -0700"
      },
      "message": "[PATCH] mm: update_hiwaters just in time\n\nupdate_mem_hiwater has attracted various criticisms, in particular from those\nconcerned with mm scalability.  Originally it was called whenever rss or\ntotal_vm got raised.  Then many of those callsites were replaced by a timer\ntick call from account_system_time.  Now Frank van Maarseveen reports that to\nbe found inadequate.  How about this?  Works for Frank.\n\nReplace update_mem_hiwater, a poor combination of two unrelated ops, by macros\nupdate_hiwater_rss and update_hiwater_vm.  Don\u0027t attempt to keep\nmm-\u003ehiwater_rss up to date at timer tick, nor every time we raise rss (usually\nby 1): those are hot paths.  Do the opposite, update only when about to lower\nrss (usually by many), or just before final accounting in do_exit.  Handle\nmm-\u003ehiwater_vm in the same way, though it\u0027s much less of an issue.  Demand\nthat whoever collects these hiwater statistics do the work of taking the\nmaximum with rss or total_vm.\n\nAnd there has been no collector of these hiwater statistics in the tree.  The\nnew convention needs an example, so match Frank\u0027s usage by adding a VmPeak\nline above VmSize to /proc/\u003cpid\u003e/status, and also a VmHWM line above VmRSS\n(High-Water-Mark or High-Water-Memory).\n\nThere was a particular anomaly during mremap move, that hiwater_vm might be\ncaptured too high.  A fleeting such anomaly remains, but it\u0027s quickly\ncorrected now, whereas before it would stick.\n\nWhat locking?  None: if the app is racy then these statistics will be racy,\nit\u0027s not worth any overhead to make them exact.  But whenever it suits,\nhiwater_vm is updated under exclusive mmap_sem, and hiwater_rss under\npage_table_lock (for now) or with preemption disabled (later on): without\ngoing to any trouble, minimize the time between reading current values and\nupdating, to minimize those occasions when a racing thread bumps a count up\nand back down in between.\n\nSigned-off-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": "b5810039a54e5babf428e9a1e89fc1940fabff11",
      "tree": "835836cb527ec9bd525f93eb7e016f3dfb8c8ae2",
      "parents": [
        "f9c98d0287de42221c624482fd4f8d485c98ab22"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "nickpiggin@yahoo.com.au",
        "time": "Sat Oct 29 18:16:12 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 29 21:40:39 2005 -0700"
      },
      "message": "[PATCH] core remove PageReserved\n\nRemove PageReserved() calls from core code by tightening VM_RESERVED\nhandling in mm/ to cover PageReserved functionality.\n\nPageReserved special casing is removed from get_page and put_page.\n\nAll setting and clearing of PageReserved is retained, and it is now flagged\nin the page_alloc checks to help ensure we don\u0027t introduce any refcount\nbased freeing of Reserved pages.\n\nMAP_PRIVATE, PROT_WRITE of VM_RESERVED regions is tentatively being\ndeprecated.  We never completely handled it correctly anyway, and is be\nreintroduced in future if required (Hugh has a proof of concept).\n\nOnce PageReserved() calls are removed from kernel/power/swsusp.c, and all\narch/ and driver code, the Set and Clear calls, and the PG_reserved bit can\nbe trivially removed.\n\nLast real user of PageReserved is swsusp, which uses PageReserved to\ndetermine whether a struct page points to valid memory or not.  This still\nneeds to be addressed (a generic page_is_ram() should work).\n\nA last caveat: the ZERO_PAGE is now refcounted and managed with rmap (and\nthus mapcounted and count towards shared rss).  These writes to the struct\npage could cause excessive cacheline bouncing on big systems.  There are a\nnumber of ways this could be addressed if it is an issue.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\n\nRefcount bug fix for filemap_xip.c\n\nSigned-off-by: Carsten Otte \u003ccotte@de.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "7c1fd6b964860cdcf44b6b98d7dcd8cc16a0a26d",
      "tree": "0193feec4e7a43ce2f15f659cd5c56776da60ce5",
      "parents": [
        "a8fb5618dab7e45c8990f3155628d772a9ed45f9"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Sat Oct 29 18:15:58 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 29 21:40:37 2005 -0700"
      },
      "message": "[PATCH] mm: exit_mmap need not reset\n\nexit_mmap resets various mm_struct fields, but the mm is well on its way out,\nand none of those fields matter by this point.\n\nSigned-off-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": "a8fb5618dab7e45c8990f3155628d772a9ed45f9",
      "tree": "77977b8fb2f57c855da9e3168977521e8393776a",
      "parents": [
        "2c0b381467bc2997be9d741a152f3fc75785eedc"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Sat Oct 29 18:15:57 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 29 21:40:37 2005 -0700"
      },
      "message": "[PATCH] mm: unlink_file_vma, remove_vma\n\nDivide remove_vm_struct into two parts: first anon_vma_unlink plus\nunlink_file_vma, to unlink the vma from the list and tree by which rmap or\nvmtruncate might find it; then remove_vma to close, fput and free.\n\nThe intention here is to do the anon_vma_unlink and unlink_file_vma earlier,\nin free_pgtables before freeing any page tables: so we can be sure that any\npage tables traversed by rmap and vmtruncate are stable (and other, ordinary\ncases are stabilized by holding mmap_sem).\n\nThis will be crucial to traversing pgd,pud,pmd without page_table_lock.  But\ntesting the split-out patch showed that lifting the page_table_lock is\nsymbiotically necessary to make this change - the lock ordering is wrong to\nmove those unlinks into free_pgtables while it\u0027s under ptlock.\n\nSigned-off-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": "2c0b381467bc2997be9d741a152f3fc75785eedc",
      "tree": "f87fffd93dc3f4b5ce9eba5e02fa4ffeb237924e",
      "parents": [
        "ab50b8ed818016cfecd747d6d4bb9139986bc029"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Sat Oct 29 18:15:56 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 29 21:40:37 2005 -0700"
      },
      "message": "[PATCH] mm: remove_vma_list consolidation\n\nunmap_vma doesn\u0027t amount to much, let\u0027s put it inside unmap_vma_list.  Except\nit doesn\u0027t unmap anything, unmap_region just did the unmapping: rename it to\nremove_vma_list.\n\nSigned-off-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": "ab50b8ed818016cfecd747d6d4bb9139986bc029",
      "tree": "33c666578c14dccce05b3f7a5538405098eebcc4",
      "parents": [
        "72866f6f277ec0ddd6df7a3b6ecdcf59a28de115"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Sat Oct 29 18:15:56 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 29 21:40:37 2005 -0700"
      },
      "message": "[PATCH] mm: vm_stat_account unshackled\n\nThe original vm_stat_account has fallen into disuse, with only one user, and\nonly one user of vm_stat_unaccount.  It\u0027s easier to keep track if we convert\nthem all to __vm_stat_account, then free it from its __shackles.\n\nSigned-off-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": "f10df6860498c7f52db4f00ff00a1ba334bcfea0",
      "tree": "aa1a75645a002e869886aaae9d09d332a69f8bba",
      "parents": [
        "8b20f6da20d874a58becc7a08b130c4382ea7325"
      ],
      "author": {
        "name": "Paolo \u0027Blaisorblade\u0027 Giarrusso",
        "email": "blaisorblade@yahoo.it",
        "time": "Wed Sep 21 09:55:37 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Sep 21 10:11:55 2005 -0700"
      },
      "message": "[PATCH] fix locking comment in unmap_region()\n\nThat comment is plain wrong (we even take the pagetable lock inside\nunmap_region()).\n\nSigned-off-by: Paolo \u0027Blaisorblade\u0027 Giarrusso \u003cblaisorblade@yahoo.it\u003e\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": "2fd4ef85e0db9ed75c98e13953257a967ea55e03",
      "tree": "119dfe9f88a832f3db6ff66e631112626f268f18",
      "parents": [
        "fb085cf1d4294824571815d487daccc0609543f0"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Wed Sep 14 06:13:02 2005 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Sep 14 11:18:13 2005 -0700"
      },
      "message": "[PATCH] error path in setup_arg_pages() misses vm_unacct_memory()\n\nPavel Emelianov and Kirill Korotaev observe that fs and arch users of\nsecurity_vm_enough_memory tend to forget to vm_unacct_memory when a\nfailure occurs further down (typically in setup_arg_pages variants).\n\nThese are all users of insert_vm_struct, and that reservation will only\nbe unaccounted on exit if the vma is marked VM_ACCOUNT: which in some\ncases it is (hidden inside VM_STACK_FLAGS) and in some cases it isn\u0027t.\n\nSo x86_64 32-bit and ppc64 vDSO ELFs have been leaking memory into\nCommitted_AS each time they\u0027re run.  But don\u0027t add VM_ACCOUNT to them,\nit\u0027s inappropriate to reserve against the very unlikely case that gdb\nbe used to COW a vDSO page - we ought to do something about that in\ndo_wp_page, but there are yet other inconsistencies to be resolved.\n\nThe safe and economical way to fix this is to let insert_vm_struct do\nthe security_vm_enough_memory check when it finds VM_ACCOUNT is set.\n\nAnd the MIPS irix_brk has been calling security_vm_enough_memory before\ncalling do_brk which repeats it, doubly accounting and so also leaking.\nRemove that, and all the fs and arch calls to security_vm_enough_memory:\ngive it a less misleading name later on.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-Off-By: Kirill Korotaev \u003cdev@sw.ru\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "cdb3826b9958c204bc8ffda2cf9bbe2d899ef90c",
      "tree": "7e1f5a1a7b114f422b0584fc1823f0147b209550",
      "parents": [
        "edf83015fcbff8976b75b42b565a77e9d450c567"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Tue Sep 06 15:16:57 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Sep 07 16:57:23 2005 -0700"
      },
      "message": "[PATCH] remove misleading comment above sys_brk\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "c3d8c1414573be8cf7c8fdc1e076935697c7f6af",
      "tree": "bd2fc21473e03fbbf5c1182ee584b68ebfd8b1cf",
      "parents": [
        "b3dbb4ecd46767b621df3dedd28788da93ee0cac"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "christoph@scalex86.org",
        "time": "Tue Sep 06 15:16:33 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Sep 07 16:57:18 2005 -0700"
      },
      "message": "[PATCH] More __read_mostly variables\n\nMove some more frequently read variables that showed up during some of our\nperformance tests as sometimes ending up in hot cachelines to the\nread_mostly section.\n\nFix: Move the __read_mostly from before hpet_usec_quotient to follow the\nvariable like the other uses of __read_mostly.\n\nSigned-off-by: Alok N Kataria \u003calokk@calsoftinc.com\u003e\nSigned-off-by: Christoph Lameter \u003cchristoph@scalex86.org\u003e\nSigned-off-by: Shai Fultheim \u003cshai@scalex86.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "2f60f8d3573ff90fe5d75a6d11fd2add1248e7d6",
      "tree": "173980b12459aa55586d3f4f56630abf5af1ffcc",
      "parents": [
        "b68e9f857271189bd7a59b74c99890de9195b0e1"
      ],
      "author": {
        "name": "Simon Derr",
        "email": "Simon.Derr@bull.net",
        "time": "Thu Aug 04 19:52:03 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Thu Aug 04 21:43:14 2005 -0700"
      },
      "message": "[PATCH] __vm_enough_memory() signedness fix\n\nWe have found what seems to be a small bug in __vm_enough_memory() when\nsysctl_overcommit_memory is set to OVERCOMMIT_NEVER.\n\nWhen this bug occurs the systems fails to boot, with /sbin/init whining\nabout fork() returning ENOMEM.\n\nWe hunted down the problem to this:\n\nThe deferred update mecanism used in vm_acct_memory(), on a SMP system,\nallows the vm_committed_space counter to have a negative value.\n\nThis should not be a problem since this counter is known to be inaccurate.\n\nBut in __vm_enough_memory() this counter is compared to the `allowed\u0027\nvariable, which is an unsigned long.  This comparison is broken since it\nwill consider the negative values of vm_committed_space to be huge positive\nvalues, resulting in a memory allocation failure.\n\nSigned-off-by: \u003cJean-Marc.Saffroy@ext.bull.net\u003e\nSigned-off-by: \u003cSimon.Derr@bull.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "73219d178051691a56d57184d8c7f6d0cbe3c5c1",
      "tree": "c527691510f5a2b757eac424c5671704084fc9eb",
      "parents": [
        "1363c3cd8603a913a27e2995dccbd70d5312d8e6"
      ],
      "author": {
        "name": "Chris Wright",
        "email": "chrisw@osdl.org",
        "time": "Tue Jun 21 17:14:52 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Tue Jun 21 18:46:16 2005 -0700"
      },
      "message": "[PATCH] mmap topdown fix for large stack limit, large allocation\n\nThe topdown changes in 2.6.12-rc1 can cause large allocations with large\nstack limit to fail, despite there being space available.  The\nmmap_base-len is only valid when len \u003e\u003d mmap_base.  However, nothing in\ntopdown allocator checks this.  It\u0027s only (now) caught at higher level,\nwhich will cause allocation to simply fail.  The following change restores\nthe fallback to bottom-up path, which will allow large allocations with\nlarge stack limit to potentially still succeed.\n\nSigned-off-by: Chris Wright \u003cchrisw@osdl.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "1363c3cd8603a913a27e2995dccbd70d5312d8e6",
      "tree": "405e7fc1ef44678f3ca0a54c536d0457e6e80f45",
      "parents": [
        "e7c8d5c9955a4d2e88e36b640563f5d6d5aba48a"
      ],
      "author": {
        "name": "Wolfgang Wander",
        "email": "wwc@rentec.com",
        "time": "Tue Jun 21 17:14:49 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Tue Jun 21 18:46:16 2005 -0700"
      },
      "message": "[PATCH] Avoiding mmap fragmentation\n\nIngo recently introduced a great speedup for allocating new mmaps using the\nfree_area_cache pointer which boosts the specweb SSL benchmark by 4-5% and\ncauses huge performance increases in thread creation.\n\nThe downside of this patch is that it does lead to fragmentation in the\nmmap-ed areas (visible via /proc/self/maps), such that some applications\nthat work fine under 2.4 kernels quickly run out of memory on any 2.6\nkernel.\n\nThe problem is twofold:\n\n  1) the free_area_cache is used to continue a search for memory where\n     the last search ended.  Before the change new areas were always\n     searched from the base address on.\n\n     So now new small areas are cluttering holes of all sizes\n     throughout the whole mmap-able region whereas before small holes\n     tended to close holes near the base leaving holes far from the base\n     large and available for larger requests.\n\n  2) the free_area_cache also is set to the location of the last\n     munmap-ed area so in scenarios where we allocate e.g.  five regions of\n     1K each, then free regions 4 2 3 in this order the next request for 1K\n     will be placed in the position of the old region 3, whereas before we\n     appended it to the still active region 1, placing it at the location\n     of the old region 2.  Before we had 1 free region of 2K, now we only\n     get two free regions of 1K -\u003e fragmentation.\n\nThe patch addresses thes issues by introducing yet another cache descriptor\ncached_hole_size that contains the largest known hole size below the\ncurrent free_area_cache.  If a new request comes in the size is compared\nagainst the cached_hole_size and if the request can be filled with a hole\nbelow free_area_cache the search is started from the base instead.\n\nThe results look promising: Whereas 2.6.12-rc4 fragments quickly and my\n(earlier posted) leakme.c test program terminates after 50000+ iterations\nwith 96 distinct and fragmented maps in /proc/self/maps it performs nicely\n(as expected) with thread creation, Ingo\u0027s test_str02 with 20000 threads\nrequires 0.7s system time.\n\nTaking out Ingo\u0027s patch (un-patch available per request) by basically\ndeleting all mentions of free_area_cache from the kernel and starting the\nsearch for new memory always at the respective bases we observe: leakme\nterminates successfully with 11 distinctive hardly fragmented areas in\n/proc/self/maps but thread creating is gringdingly slow: 30+s(!) system\ntime for Ingo\u0027s test_str02 with 20000 threads.\n\nNow - drumroll ;-) the appended patch works fine with leakme: it ends with\nonly 7 distinct areas in /proc/self/maps and also thread creation seems\nsufficiently fast with 0.71s for 20000 threads.\n\nSigned-off-by: Wolfgang Wander \u003cwwc@rentec.com\u003e\nCredit-to: \"Richard Purdie\" \u003crpurdie@rpsys.net\u003e\nSigned-off-by: Ken Chen \u003ckenneth.w.chen@intel.com\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e (partly)\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "07ab67c8d0d7c1021343b7d5c045033d6bf7be69",
      "tree": "5857098ebbb760afc8b0d722f119e06b3d1f6511",
      "parents": [
        "66e60f92518268f4d2a702a1c4ffbe1caacd6290"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu May 19 22:43:37 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu May 19 22:43:37 2005 -0700"
      },
      "message": "Fix get_unmapped_area sanity tests\n\nAs noted by Chris Wright, we need to do the full range of tests regardless\nof whether MAP_FIXED is set or not, so re-organize get_unmapped_area()\nslightly to do the sanity checks unconditionally.\n"
    },
    {
      "commit": "49a43876b935c811cfd29d8fe998a6912a1cc5c4",
      "tree": "c7d7a187a2125518e655dfeadffd38156239ffc3",
      "parents": [
        "05d3794aa8bd3b2c9f7920a05003c331cdeb75c5"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@osdl.org",
        "time": "Wed May 18 15:39:33 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu May 19 07:46:36 2005 -0700"
      },
      "message": "[PATCH] prevent NULL mmap in topdown model\n\nPrevent the topdown allocator from allocating mmap areas all the way\ndown to address zero.\n\nWe still allow a MAP_FIXED mapping of page 0 (needed for various things,\nranging from Wine and DOSEMU to people who want to allow speculative\nloads off a NULL pointer).\n\nTested by Chris Wright.\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "93ea1d0a12623dc1a693642b5758261f35f9bf96",
      "tree": "4938d87a7d269f7b3e53328d02eac259cb93515a",
      "parents": [
        "edfbe2b0038723e5699ab22695ccd62b5542a5c1"
      ],
      "author": {
        "name": "Chris Wright",
        "email": "chrisw@osdl.org",
        "time": "Sun May 01 08:58:38 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sun May 01 08:58:38 2005 -0700"
      },
      "message": "[PATCH] RLIMIT_MEMLOCK checking fix\n\nAlways use page counts when doing RLIMIT_MEMLOCK checking to avoid possible\noverflow.\n\nSigned-off-by: Chris Wright \u003cchrisw@osdl.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "119f657c72fc07d6fd28c61de59cfba1566970a9",
      "tree": "33c8070aa904c4919cf244cdcd7c01e54589bb9e",
      "parents": [
        "f021e9210185b46e41ec3a0e78ec1621e168eacb"
      ],
      "author": {
        "name": "akpm@osdl.org",
        "email": "akpm@osdl.org",
        "time": "Sun May 01 08:58:35 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sun May 01 08:58:35 2005 -0700"
      },
      "message": "[PATCH] RLIMIT_AS checking fix\n\nAddress bug #4508: there\u0027s potential for wraparound in the various places\nwhere we perform RLIMIT_AS checking.\n\n(I\u0027m a bit worried about acct_stack_growth().  Are we sure that vma-\u003evm_mm is\nalways equal to current-\u003emm?  If not, then we\u0027re comparing some other\nprocess\u0027s total_vm with the calling process\u0027s rlimits).\n\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "561bbe3235da614562fb26bb14042af684971a2d",
      "tree": "c60b08c7d319dd4799d7910e4f0c58100a80afd1",
      "parents": [
        "d455a3696c72283923e6870e9e4fe1daa861d7cd"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Apr 19 13:29:23 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org.(none)",
        "time": "Tue Apr 19 13:29:23 2005 -0700"
      },
      "message": "[PATCH] freepgt: remove FIRST_USER_ADDRESS hack\n\nOnce all the MMU architectures define FIRST_USER_ADDRESS, remove hack from\nmmap.c which derived it from FIRST_USER_PGD_NR.\n\nSigned-off-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": "e2cdef8c847b480529b7e26991926aab4be008e6",
      "tree": "b936ab7f0964f56bc3312ad9ad956e978ac39895",
      "parents": [
        "021740dc30d184e3b0fa7679936e65a56090c425"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Apr 19 13:29:19 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org.(none)",
        "time": "Tue Apr 19 13:29:19 2005 -0700"
      },
      "message": "[PATCH] freepgt: free_pgtables from FIRST_USER_ADDRESS\n\nThe patches to free_pgtables by vma left problems on any architectures which\nleave some user address page table entries unencapsulated by vma.  Andi has\nfixed the 32-bit vDSO on x86_64 to use a vma.  Now fix arm (and arm26), whose\nfirst PAGE_SIZE is reserved (perhaps) for machine vectors.\n\nOur calls to free_pgtables must not touch that area, and exit_mmap\u0027s\nBUG_ON(nr_ptes) must allow that arm\u0027s get_pgd_slow may (or may not) have\nallocated an extra page table, which its free_pgd_slow would free later.\n\nFIRST_USER_PGD_NR has misled me and others: until all the arches define\nFIRST_USER_ADDRESS instead, a hack in mmap.c to derive one from t\u0027other.  This\npatch fixes the bugs, the remaining patches just clean it up.\n\nSigned-off-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": "146425a316fb937fbdcac018b34a23c67d12214b",
      "tree": "3246589ae0fa8f4c334247222792a9e6339b4ccc",
      "parents": [
        "8f6c99c11ae63ce887686f3e51c412cc4d8d8a7d"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Apr 19 13:29:18 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org.(none)",
        "time": "Tue Apr 19 13:29:18 2005 -0700"
      },
      "message": "[PATCH] freepgt: mpnt to vma cleanup\n\nWhile dabbling here in mmap.c, clean up mysterious \"mpnt\"s to \"vma\"s.\n\nSigned-off-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": "ee39b37b23da0b6ec53a8ebe90ff41c016f8ae27",
      "tree": "4af606913ab8f95551623b788c0c66c1f5902229",
      "parents": [
        "e0da382c92626ad1d7f4b7527d19b80104d67a83"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Apr 19 13:29:15 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org.(none)",
        "time": "Tue Apr 19 13:29:15 2005 -0700"
      },
      "message": "[PATCH] freepgt: remove MM_VM_SIZE(mm)\n\nThere\u0027s only one usage of MM_VM_SIZE(mm) left, and it\u0027s a troublesome macro\nbecause mm doesn\u0027t contain the (32-bit emulation?) info needed.  But it too is\nonly needed because we ignore the end from the vma list.\n\nWe could make flush_pgtables return that end, or unmap_vmas.  Choose the\nlatter, since it\u0027s a natural fit with unmap_mapping_range_vma needing to know\nits restart addr.  This does make more than minimal change, but if unmap_vmas\nhad returned the end before, this is how we\u0027d have done it, rather than\nstoring the break_addr in zap_details.\n\nunmap_vmas used to return count of vmas scanned, but that\u0027s just debug which\nhasn\u0027t been useful in a while; and if we want the map_count 0 on exit check\nback, it can easily come from the final remove_vm_struct loop.\n\nSigned-off-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": "e0da382c92626ad1d7f4b7527d19b80104d67a83",
      "tree": "b3f455518c286ee14cb2755ced8808487bca7911",
      "parents": [
        "9f6c6fc505560465be0964eb4da1b6ca97bd3951"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Apr 19 13:29:15 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org.(none)",
        "time": "Tue Apr 19 13:29:15 2005 -0700"
      },
      "message": "[PATCH] freepgt: free_pgtables use vma list\n\nRecent woes with some arches needing their own pgd_addr_end macro; and 4-level\nclear_page_range regression since 2.6.10\u0027s clear_page_tables; and its\nlong-standing well-known inefficiency in searching throughout the higher-level\npage tables for those few entries to clear and free: all can be blamed on\nignoring the list of vmas when we free page tables.\n\nReplace exit_mmap\u0027s clear_page_range of the total user address space by\nfree_pgtables operating on the mm\u0027s vma list; unmap_region use it in the same\nway, giving floor and ceiling beyond which it may not free tables.  This\nbrings lmbench fork/exec/sh numbers back to 2.6.10 (unless preempt is enabled,\nin which case latency fixes spoil unmap_vmas throughput).\n\nBeware: the do_mmap_pgoff driver failure case must now use unmap_region\ninstead of zap_page_range, since a page table might have been allocated, and\ncan only be freed while it is touched by some vma.\n\nMove free_pgtables from mmap.c to memory.c, where its lower levels are adapted\nfrom the clear_page_range levels.  (Most of free_pgtables\u0027 old code was\nactually for a non-existent case, prev not properly set up, dating from before\nhch gave us split_vma.) Pass mmu_gather** in the public interfaces, since we\nmight want to add latency lockdrops later; but no attempt to do so yet, going\nby vma should itself reduce latency.\n\nBut what if is_hugepage_only_range?  Those ia64 and ppc64 cases need careful\nexamination: put that off until a later patch of the series.\n\nWhat of x86_64\u0027s 32bit vdso page __map_syscall32 maps outside any vma?\n\nAnd the range to sparc64\u0027s flush_tlb_pgtables?  It\u0027s less clear to me now that\nwe need to do more than is done here - every PMD_SIZE ever occupied will be\nflushed, do we really have to flush every PGDIR_SIZE ever partially occupied? \nA shame to complicate it unnecessarily.\n\nSpecial thanks to David Miller for time spent repairing my ceilings.\n\nSigned-off-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": "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"
    }
  ]
}
