)]}'
{
  "log": [
    {
      "commit": "a7016235a61d520e6806f38129001d935c4b6661",
      "tree": "cfd42cc6f0c825c8d9033e91d6d971ea549520e3",
      "parents": [
        "67f15b06c1a7e5417b7042b515ca2695de30beda"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh.dickins@tiscali.co.uk",
        "time": "Fri Jan 29 17:46:34 2010 +0000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 29 10:28:09 2010 -0800"
      },
      "message": "mm: fix migratetype bug which slowed swapping\n\nAfter memory pressure has forced it to dip into the reserves, 2.6.32\u0027s\n5f8dcc21211a3d4e3a7a5ca366b469fb88117f61 \"page-allocator: split per-cpu\nlist into one-list-per-migrate-type\" has been returning MIGRATE_RESERVE\npages to the MIGRATE_MOVABLE free_list: in some sense depleting reserves.\n\nFix that in the most straightforward way (which, considering the overheads\nof alternative approaches, is Mel\u0027s preference): the right migratetype is\nalready in page_private(page), but free_pcppages_bulk() wasn\u0027t using it.\n\nHow did this bug show up?  As a 20% slowdown in my tmpfs loop kbuild\nswapping tests, on PowerMac G5 with SLUB allocator.  Bisecting to that\ncommit was easy, but explaining the magnitude of the slowdown not easy.\n\nThe same effect appears, but much less markedly, with SLAB, and even\nless markedly on other machines (the PowerMac divides into fewer zones\nthan x86, I think that may be a factor).  We guess that lumpy reclaim\nof short-lived high-order pages is implicated in some way, and probably\nthis bug has been tickling a poor decision somewhere in page reclaim.\n\nBut instrumentation hasn\u0027t told me much, I\u0027ve run out of time and\nimagination to determine exactly what\u0027s going on, and shouldn\u0027t hold up\nthe fix any longer: it\u0027s valid, and might even fix other misbehaviours.\n\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: stable@kernel.org\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0531b2aac59c2296570ac52bfc032ef2ace7d5e1",
      "tree": "4ca454bdc03c24654529bab9c882c1cd5f99a88c",
      "parents": [
        "caf0801e0cc482497c14a9ce349469c33c60beec"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jan 27 09:20:03 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jan 27 09:20:03 2010 -0800"
      },
      "message": "mm: add new \u0027read_cache_page_gfp()\u0027 helper function\n\nIt\u0027s a simplified \u0027read_cache_page()\u0027 which takes a page allocation\nflag, so that different paths can control how aggressive the memory\nallocations are that populate a address space.\n\nIn particular, the intel GPU object mapping code wants to be able to do\na certain amount of own internal memory management by automatically\nshrinking the address space when memory starts getting tight.  This\nallows it to dynamically use different memory allocation policies on a\nper-allocation basis, rather than depend on the (static) address space\ngfp policy.\n\nThe actual new function is a one-liner, but re-organizing the helper\nfunctions to the point where you can do this with a single line of code\nis what most of the patch is all about.\n\nTested-by: Chris Wilson \u003cchris@chris-wilson.co.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "88f5004430babb836cfce886d5d54c82166f8ba4",
      "tree": "f1cdd2f63e6344a07a3470f6cd4face94da3e638",
      "parents": [
        "970114a1dacf5f1f47aae9ad75c0abca42d8499c"
      ],
      "author": {
        "name": "Yongseok Koh",
        "email": "yongseok.koh@samsung.com",
        "time": "Tue Jan 19 17:33:49 2010 +0900"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 21 07:20:06 2010 -0800"
      },
      "message": "vmalloc: remove BUG_ON due to racy counting of VM_LAZY_FREE\n\nIn free_unmap_area_noflush(), va-\u003eflags is marked as VM_LAZY_FREE first, and\nthen vmap_lazy_nr is increased atomically.\n\nBut, in __purge_vmap_area_lazy(), while traversing of vmap_are_list, nr\nis counted by checking VM_LAZY_FREE is set to va-\u003eflags.  After counting\nthe variable nr, kernel reads vmap_lazy_nr atomically and checks a\nBUG_ON condition whether nr is greater than vmap_lazy_nr to prevent\nvmap_lazy_nr from being negative.\n\nThe problem is that, if interrupted right after marking VM_LAZY_FREE,\nincrement of vmap_lazy_nr can be delayed.  Consequently, BUG_ON\ncondition can be met because nr is counted more than vmap_lazy_nr.\n\nIt is highly probable when vmalloc/vfree are called frequently.  This\nscenario have been verified by adding delay between marking VM_LAZY_FREE\nand increasing vmap_lazy_nr in free_unmap_area_noflush().\n\nEven the vmap_lazy_nr is for checking high watermark, it never be the\nstrict watermark.  Although the BUG_ON condition is to prevent\nvmap_lazy_nr from being negative, vmap_lazy_nr is signed variable.  So,\nit could go down to negative value temporarily.\n\nConsequently, removing the BUG_ON condition is proper.\n\nA possible BUG_ON message is like the below.\n\n   kernel BUG at mm/vmalloc.c:517!\n   invalid opcode: 0000 [#1] SMP\n   EIP: 0060:[\u003cc04824a4\u003e] EFLAGS: 00010297 CPU: 3\n   EIP is at __purge_vmap_area_lazy+0x144/0x150\n   EAX: ee8a8818 EBX: c08e77d4 ECX: e7c7ae40 EDX: c08e77ec\n   ESI: 000081fe EDI: e7c7ae60 EBP: e7c7ae64 ESP: e7c7ae3c\n   DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068\n   Call Trace:\n   [\u003cc0482ad9\u003e] free_unmap_vmap_area_noflush+0x69/0x70\n   [\u003cc0482b02\u003e] remove_vm_area+0x22/0x70\n   [\u003cc0482c15\u003e] __vunmap+0x45/0xe0\n   [\u003cc04831ec\u003e] vmalloc+0x2c/0x30\n   Code: 8d 59 e0 eb 04 66 90 89 cb 89 d0 e8 87 fe ff ff 8b 43 20 89 da 8d 48 e0 8d 43 20 3b 04 24 75 e7 fe 05 a8 a5 a3 c0 e9 78 ff ff ff \u003c0f\u003e 0b eb fe 90 8d b4 26 00 00 00 00 56 89 c6 b8 ac a5 a3 c0 31\n   EIP: [\u003cc04824a4\u003e] __purge_vmap_area_lazy+0x144/0x150 SS:ESP 0068:e7c7ae3c\n\n[ See also http://marc.info/?l\u003dlinux-kernel\u0026m\u003d126335856228090\u0026w\u003d2 ]\n\nSigned-off-by: Yongseok Koh \u003cyongseok.koh@samsung.com\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6ccf80eb15ccaca4d3f1ab5162b9ded5eecd9971",
      "tree": "23dad05636e88a743755bfd3e7a5dad4ef5e49e0",
      "parents": [
        "1f0b8b95543118f97197a978560438c1ce88cd00"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Fri Jan 15 17:01:18 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jan 16 16:53:55 2010 -0800"
      },
      "message": "page allocator: update NR_FREE_PAGES only when necessary\n\ncommit f2260e6b (page allocator: update NR_FREE_PAGES only as necessary)\nmade one minor regression.  if __rmqueue() was failed, NR_FREE_PAGES stat\ngo wrong.  this patch fixes it.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nReported-by: Huang Shijie \u003cshijie8@gmail.com\u003e\nReviewed-by: Christoph Lameter \u003ccl@linux-foundation.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": "7e6608724c640924aad1d556d17df33ebaa6124d",
      "tree": "b2d90646f5ee52f5b7807bbc0abe09db9adbe478",
      "parents": [
        "81759b5b221107488bda99fe7beeb7b734f61133"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Jan 15 17:01:39 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jan 16 12:15:40 2010 -0800"
      },
      "message": "nommu: fix shared mmap after truncate shrinkage problems\n\nFix a problem in NOMMU mmap with ramfs whereby a shared mmap can happen\nover the end of a truncation.  The problem is that\nramfs_nommu_check_mappings() checks that the reduced file size against the\nVMA tree, but not the vm_region tree.\n\nThe following sequence of events can cause the problem:\n\n\tfd \u003d open(\"/tmp/x\", O_RDWR|O_TRUNC|O_CREAT, 0600);\n\tftruncate(fd, 32 * 1024);\n\ta \u003d mmap(NULL, 32 * 1024, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);\n\tb \u003d mmap(NULL, 16 * 1024, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);\n\tmunmap(a, 32 * 1024);\n\tftruncate(fd, 16 * 1024);\n\tc \u003d mmap(NULL, 32 * 1024, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);\n\nMapping \u0027a\u0027 creates a vm_region covering 32KB of the file.  Mapping \u0027b\u0027\nsees that the vm_region from \u0027a\u0027 is covering the region it wants and so\nshares it, pinning it in memory.\n\nMapping \u0027a\u0027 then goes away and the file is truncated to the end of VMA\n\u0027b\u0027.  However, the region allocated by \u0027a\u0027 is still in effect, and has\n_not_ been reduced.\n\nMapping \u0027c\u0027 is then created, and because there\u0027s a vm_region covering the\ndesired region, get_unmapped_area() is _not_ called to repeat the check,\nand the mapping is granted, even though the pages from the latter half of\nthe mapping have been discarded.\n\nHowever:\n\n\td \u003d mmap(NULL, 16 * 1024, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);\n\nMapping \u0027d\u0027 should work, and should end up sharing the region allocated by\n\u0027a\u0027.\n\nTo deal with this, we shrink the vm_region struct during the truncation,\nlest do_mmap_pgoff() take it as licence to share the full region\nautomatically without calling the get_unmapped_area() file op again.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Greg Ungerer \u003cgerg@snapgear.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "efc1a3b16930c41d64ffefde16b87d82f603a8a0",
      "tree": "1f651e22f534f1b3eacd2fab97e9351aa75abd0b",
      "parents": [
        "779c10232ceb11c1b259232c4845cfb2850287b7"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Jan 15 17:01:35 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jan 16 12:15:40 2010 -0800"
      },
      "message": "nommu: don\u0027t need get_unmapped_area() for NOMMU\n\nget_unmapped_area() is unnecessary for NOMMU as no-one calls it.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Greg Ungerer \u003cgerg@snapgear.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "779c10232ceb11c1b259232c4845cfb2850287b7",
      "tree": "972b07acdcff03b20c84d42425a64b231df52aaa",
      "parents": [
        "1e2ae599d37e60958c03ca5e46b1f657619a30cd"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Jan 15 17:01:34 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jan 16 12:15:40 2010 -0800"
      },
      "message": "nommu: remove a superfluous check of vm_region::vm_usage\n\nIn split_vma(), there\u0027s no need to check if the VMA being split has a\nregion that\u0027s in use by more than one VMA because:\n\n (1) The preceding test prohibits splitting of non-anonymous VMAs and regions\n     (eg: file or chardev backed VMAs).\n\n (2) Anonymous regions can\u0027t be mapped multiple times because there\u0027s no handle\n     by which to refer to the already existing region.\n\n (3) If a VMA has previously been split, then the region backing it has also\n     been split into two regions, each of usage 1.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Greg Ungerer \u003cgerg@snapgear.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1e2ae599d37e60958c03ca5e46b1f657619a30cd",
      "tree": "0a0c9ff0370fbefd4eb8fe3a44106880c1aae8cb",
      "parents": [
        "ed5e5894b234ce4793d78078c026915b853e0678"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Jan 15 17:01:33 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jan 16 12:15:40 2010 -0800"
      },
      "message": "nommu: struct vm_region\u0027s vm_usage count need not be atomic\n\nThe vm_usage count field in struct vm_region does not need to be atomic as\nit\u0027s only even modified whilst nommu_region_sem is write locked.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Greg Ungerer \u003cgerg@snapgear.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "fce66477578d081f19aef5ea218664ff7758c33a",
      "tree": "ef8914767f7834fcd65c2f72eeee59dd2248076b",
      "parents": [
        "d817cd525589765aa5f6798734e422c867685a58"
      ],
      "author": {
        "name": "Daisuke Nishimura",
        "email": "nishimura@mxp.nes.nec.co.jp",
        "time": "Fri Jan 15 17:01:30 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jan 16 12:15:39 2010 -0800"
      },
      "message": "memcg: ensure list is empty at rmdir\n\nCurrent mem_cgroup_force_empty() only ensures mem-\u003eres.usage \u003d\u003d 0 on\nsuccess.  But this doesn\u0027t guarantee memcg\u0027s LRU is really empty, because\nthere are some cases in which !PageCgrupUsed pages exist on memcg\u0027s LRU.\n\nFor example:\n- Pages can be uncharged by its owner process while they are on LRU.\n- race between mem_cgroup_add_lru_list() and __mem_cgroup_uncharge_common().\n\nSo there can be a case in which the usage is zero but some of the LRUs are not empty.\n\nOTOH, mem_cgroup_del_lru_list(), which can be called asynchronously with\nrmdir, accesses the mem_cgroup, so this access can cause a problem if it\nraces with rmdir because the mem_cgroup might have been freed by rmdir.\n\nActually, I saw a bug which seems to be caused by this race.\n\n\t[1530745.949906] BUG: unable to handle kernel NULL pointer dereference at 0000000000000230\n\t[1530745.950651] IP: [\u003cffffffff810fbc11\u003e] mem_cgroup_del_lru_list+0x30/0x80\n\t[1530745.950651] PGD 3863de067 PUD 3862c7067 PMD 0\n\t[1530745.950651] Oops: 0002 [#1] SMP\n\t[1530745.950651] last sysfs file: /sys/devices/system/cpu/cpu7/cache/index1/shared_cpu_map\n\t[1530745.950651] CPU 3\n\t[1530745.950651] Modules linked in: configs ipt_REJECT xt_tcpudp iptable_filter ip_tables x_tables bridge stp nfsd nfs_acl auth_rpcgss exportfs autofs4 hidp rfcomm l2cap crc16 bluetooth lockd sunrpc ib_iser rdma_cm ib_cm iw_cm ib_sa ib_mad ib_core ib_addr iscsi_tcp bnx2i cnic uio ipv6 cxgb3i cxgb3 mdio libiscsi_tcp libiscsi scsi_transport_iscsi dm_mirror dm_multipath scsi_dh video output sbs sbshc battery ac lp kvm_intel kvm sg ide_cd_mod cdrom serio_raw tpm_tis tpm tpm_bios acpi_memhotplug button parport_pc parport rtc_cmos rtc_core rtc_lib e1000 i2c_i801 i2c_core pcspkr dm_region_hash dm_log dm_mod ata_piix libata shpchp megaraid_mbox sd_mod scsi_mod megaraid_mm ext3 jbd uhci_hcd ohci_hcd ehci_hcd [last unloaded: freq_table]\n\t[1530745.950651] Pid: 19653, comm: shmem_test_02 Tainted: G   M       2.6.32-mm1-00701-g2b04386 #3 Express5800/140Rd-4 [N8100-1065]\n\t[1530745.950651] RIP: 0010:[\u003cffffffff810fbc11\u003e]  [\u003cffffffff810fbc11\u003e] mem_cgroup_del_lru_list+0x30/0x80\n\t[1530745.950651] RSP: 0018:ffff8803863ddcb8  EFLAGS: 00010002\n\t[1530745.950651] RAX: 00000000000001e0 RBX: ffff8803abc02238 RCX: 00000000000001e0\n\t[1530745.950651] RDX: 0000000000000000 RSI: ffff88038611a000 RDI: ffff8803abc02238\n\t[1530745.950651] RBP: ffff8803863ddcc8 R08: 0000000000000002 R09: ffff8803a04c8643\n\t[1530745.950651] R10: 0000000000000000 R11: ffffffff810c7333 R12: 0000000000000000\n\t[1530745.950651] R13: ffff880000017f00 R14: 0000000000000092 R15: ffff8800179d0310\n\t[1530745.950651] FS:  0000000000000000(0000) GS:ffff880017800000(0000) knlGS:0000000000000000\n\t[1530745.950651] CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b\n\t[1530745.950651] CR2: 0000000000000230 CR3: 0000000379d87000 CR4: 00000000000006e0\n\t[1530745.950651] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000\n\t[1530745.950651] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400\n\t[1530745.950651] Process shmem_test_02 (pid: 19653, threadinfo ffff8803863dc000, task ffff88038612a8a0)\n\t[1530745.950651] Stack:\n\t[1530745.950651]  ffffea00040c2fe8 0000000000000000 ffff8803863ddd98 ffffffff810c739a\n\t[1530745.950651] \u003c0\u003e 00000000863ddd18 000000000000000c 0000000000000000 0000000000000000\n\t[1530745.950651] \u003c0\u003e 0000000000000002 0000000000000000 ffff8803863ddd68 0000000000000046\n\t[1530745.950651] Call Trace:\n\t[1530745.950651]  [\u003cffffffff810c739a\u003e] release_pages+0x142/0x1e7\n\t[1530745.950651]  [\u003cffffffff810c778f\u003e] ? pagevec_move_tail+0x6e/0x112\n\t[1530745.950651]  [\u003cffffffff810c781e\u003e] pagevec_move_tail+0xfd/0x112\n\t[1530745.950651]  [\u003cffffffff810c78a9\u003e] lru_add_drain+0x76/0x94\n\t[1530745.950651]  [\u003cffffffff810dba0c\u003e] exit_mmap+0x6e/0x145\n\t[1530745.950651]  [\u003cffffffff8103f52d\u003e] mmput+0x5e/0xcf\n\t[1530745.950651]  [\u003cffffffff81043ea8\u003e] exit_mm+0x11c/0x129\n\t[1530745.950651]  [\u003cffffffff8108fb29\u003e] ? audit_free+0x196/0x1c9\n\t[1530745.950651]  [\u003cffffffff81045353\u003e] do_exit+0x1f5/0x6b7\n\t[1530745.950651]  [\u003cffffffff8106133f\u003e] ? up_read+0x2b/0x2f\n\t[1530745.950651]  [\u003cffffffff8137d187\u003e] ? lockdep_sys_exit_thunk+0x35/0x67\n\t[1530745.950651]  [\u003cffffffff81045898\u003e] do_group_exit+0x83/0xb0\n\t[1530745.950651]  [\u003cffffffff810458dc\u003e] sys_exit_group+0x17/0x1b\n\t[1530745.950651]  [\u003cffffffff81002c1b\u003e] system_call_fastpath+0x16/0x1b\n\t[1530745.950651] Code: 54 53 0f 1f 44 00 00 83 3d cc 29 7c 00 00 41 89 f4 75 63 eb 4e 48 83 7b 08 00 75 04 0f 0b eb fe 48 89 df e8 18 f3 ff ff 44 89 e2 \u003c48\u003e ff 4c d0 50 48 8b 05 2b 2d 7c 00 48 39 43 08 74 39 48 8b 4b\n\t[1530745.950651] RIP  [\u003cffffffff810fbc11\u003e] mem_cgroup_del_lru_list+0x30/0x80\n\t[1530745.950651]  RSP \u003cffff8803863ddcb8\u003e\n\t[1530745.950651] CR2: 0000000000000230\n\t[1530745.950651] ---[ end trace c3419c1bb8acc34f ]---\n\t[1530745.950651] Fixing recursive fault but reboot is needed!\n\nThe problem here is pages on LRU may contain pointer to stale memcg.  To\nmake res-\u003eusage to be 0, all pages on memcg must be uncharged or moved to\nanother(parent) memcg.  Moved page_cgroup have already removed from\noriginal LRU, but uncharged page_cgroup contains pointer to memcg withou\nPCG_USED bit.  (This asynchronous LRU work is for improving performance.)\nIf PCG_USED bit is not set, page_cgroup will never be added to memcg\u0027s\nLRU.  So, about pages not on LRU, they never access stale pointer.  Then,\nwhat we have to take care of is page_cgroup _on_ LRU list.  This patch\nfixes this problem by making mem_cgroup_force_empty() visit all LRUs\nbefore exiting its loop and guarantee there are no pages on its LRU.\n\nSigned-off-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "de3fab39348dff18c69a0cd04efee9c276a02f51",
      "tree": "1fc5a20da15541e23d02c33ae0bb574fb1f2e40f",
      "parents": [
        "af2422c42c0ff42b8b93dbb3a5fe65250fb65c40"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Fri Jan 15 17:01:25 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jan 16 12:15:39 2010 -0800"
      },
      "message": "vmscan: kswapd: don\u0027t retry balance_pgdat() if all zones are unreclaimable\n\nCommit f50de2d3 (vmscan: have kswapd sleep for a short interval and double\ncheck it should be asleep) can cause kswapd to enter an infinite loop if\nrunning on a single-CPU system.  If all zones are unreclaimble,\nsleeping_prematurely return 1 and kswapd will call balance_pgdat() again.\nbut it\u0027s totally meaningless, balance_pgdat() doesn\u0027t anything against\nunreclaimable zone!\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nReported-by: Will Newton \u003cwill.newton@gmail.com\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nReviewed-by: Rik van Riel \u003criel@redhat.com\u003e\nTested-by: Will Newton \u003cwill.newton@gmail.com\u003e\nReviewed-by: Wu Fengguang \u003cfengguang.wu@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": "d2dbe08ddceb4ba2b274abb84326d7e69d454e5c",
      "tree": "7b363c03dc6441b3fe6ebdcacd892cbd09b04f29",
      "parents": [
        "5dab600e6a153ceb64832f608069e6c08185411a"
      ],
      "author": {
        "name": "Kazuhisa Ichikawa",
        "email": "ki@epsilou.com",
        "time": "Fri Jan 15 17:01:20 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jan 16 12:15:38 2010 -0800"
      },
      "message": "mm/page_alloc: fix the range check for backward merging\n\nThe current check for \u0027backward merging\u0027 within add_active_range() does\nnot seem correct.  start_pfn must be compared against\nearly_node_map[i].start_pfn (and NOT against .end_pfn) to find out whether\nthe new region is backward-mergeable with the existing range.\n\nSigned-off-by: Kazuhisa Ichikawa \u003cki@epsilou.com\u003e\nAcked-by: David Rientjes \u003crientjes@google.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "cedabed49b39b4319bccc059a63344b6232b619c",
      "tree": "caa84b17d5cfe3a0f71a537cf55498f2019586db",
      "parents": [
        "e80c14e1ae3cb637d1959a6c9a199ba2e7af5910"
      ],
      "author": {
        "name": "OGAWA Hirofumi",
        "email": "hirofumi@mail.parknet.co.jp",
        "time": "Wed Jan 13 21:14:09 2010 +0900"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jan 13 16:09:33 2010 -0800"
      },
      "message": "vfs: Fix vmtruncate() regression\n\nIf __block_prepare_write() was failed in block_write_begin(), the\nallocated blocks can be outside of -\u003ei_size.\n\nBut new truncate_pagecache() in vmtuncate() does nothing if new \u003c old.\nIt means the above usage is not working anymore.\n\nSo, this patch fixes it by removing \"new \u003c old\" check. It would need\nmore cleanup/change. But, now -rc and truncate working is in progress,\nso, this tried to fix it minimum change.\n\nAcked-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: OGAWA Hirofumi \u003chirofumi@mail.parknet.co.jp\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "74dbdd239bb1348ad86d28b18574d9c1f28b62ca",
      "tree": "d29d30ee9d4c3dd64d831fa9d042c76cba829b58",
      "parents": [
        "b5430a04e995081a308b4419bd0940f2badc6e6b"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Fri Jan 08 14:43:05 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jan 11 09:34:06 2010 -0800"
      },
      "message": "mm: hugetlb: fix clear_huge_page()\n\nsz is in bytes, MAX_ORDER_NR_PAGES is in pages.\n\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nAcked-by: David Gibson \u003cdwg@au1.ibm.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "129182e5626972ac0df85d43a36dd46ad61c64e1",
      "tree": "c91d17c697aa29d284dbe065423e01ca7020db73",
      "parents": [
        "8767ba2796a1c894e6d9524584a26a8224f0543d"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Fri Jan 08 14:42:39 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jan 11 09:34:04 2010 -0800"
      },
      "message": "percpu: avoid calling __pcpu_ptr_to_addr(NULL)\n\n__pcpu_ptr_to_addr() can be overridden by the architecture and might not\nbehave well if passed a NULL pointer.  So avoid calling it until we have\nverified that its arg is not NULL.\n\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Kamalesh Babulal \u003ckamalesh@linux.vnet.ibm.com\u003e\nAcked-by: Tejun Heo \u003ctj@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": "6144a85a0e018c19bc4b24f7eb6c1f3f7431813d",
      "tree": "4300bb5d23338884a75d449f17f2538815ac9f8c",
      "parents": [
        "2c1f1895ef2aa8f0e5497893eff71304aef332e1"
      ],
      "author": {
        "name": "Jason Wessel",
        "email": "jason.wessel@windriver.com",
        "time": "Thu Jan 07 11:58:36 2010 -0600"
      },
      "committer": {
        "name": "Jason Wessel",
        "email": "jason.wessel@windriver.com",
        "time": "Thu Jan 07 11:58:36 2010 -0600"
      },
      "message": "maccess,probe_kernel: Allow arch specific override probe_kernel_(read|write)\n\nSome archs such as blackfin, would like to have an arch specific\nprobe_kernel_read() and probe_kernel_write() implementation which can\nfall back to the generic implementation if no special operations are\nneeded.\n\nCC: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCC: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Jason Wessel \u003cjason.wessel@windriver.com\u003e\nSigned-off-by: Mike Frysinger \u003cvapier@gentoo.org\u003e\n"
    },
    {
      "commit": "7959722b951cffcd61a0a35229d007deeed8c2dd",
      "tree": "18badc77e7c79042c9321c279f9b47e8af3b36c5",
      "parents": [
        "cfe79c00a2f4f687eed8b7534d1d3d3d35540c29"
      ],
      "author": {
        "name": "Jie Zhang",
        "email": "jie.zhang@analog.com",
        "time": "Wed Jan 06 17:23:28 2010 +0000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jan 06 18:16:02 2010 -0800"
      },
      "message": "NOMMU: Use copy_*_user_page() in access_process_vm()\n\nThe MMU code uses the copy_*_user_page() variants in access_process_vm()\nrather than copy_*_user() as the former includes an icache flush.  This\nis important when doing things like setting software breakpoints with\ngdb.  So switch the NOMMU code over to do the same.\n\nThis patch makes the reasonable assumption that copy_from_user_page()\nwon\u0027t fail - which is probably fine, as we\u0027ve checked the VMA from which\nwe\u0027re copying is usable, and the copy is not allowed to cross VMAs.  The\none case where it might go wrong is if the VMA is a device rather than\nRAM, and that device returns an error which - in which case rubbish will\nbe returned rather than EIO.\n\nSigned-off-by: Jie Zhang \u003cjie.zhang@analog.com\u003e\nSigned-off-by: Mike Frysinger \u003cvapier@gentoo.org\u003e\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: David McCullough \u003cdavid_mccullough@mcafee.com\u003e\nAcked-by: Paul Mundt \u003clethal@linux-sh.org\u003e\nAcked-by: Greg Ungerer \u003cgerg@uclinux.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "cfe79c00a2f4f687eed8b7534d1d3d3d35540c29",
      "tree": "62c603938e7b740ca16ce1012a6ee7ab08b3f727",
      "parents": [
        "04e4f2b18c8de1389d1e00fef0f42a8099910daf"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier.adi@gmail.com",
        "time": "Wed Jan 06 17:23:23 2010 +0000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jan 06 18:16:02 2010 -0800"
      },
      "message": "NOMMU: Avoiding duplicate icache flushes of shared maps\n\nWhen working with FDPIC, there are many shared mappings of read-only\ncode regions between applications (the C library, applet packages like\nbusybox, etc.), but the current do_mmap_pgoff() function will issue an\nicache flush whenever a VMA is added to an MM instead of only doing it\nwhen the map is initially created.\n\nThe flush can instead be done when a region is first mmapped PROT_EXEC.\nNote that we may not rely on the first mapping of a region being\nexecutable - it\u0027s possible for it to be PROT_READ only, so we have to\nremember whether we\u0027ve flushed the region or not, and then flush the\nentire region when a bit of it is made executable.\n\nHowever, this also affects the brk area.  That will no longer be\nexecutable.  We can mprotect() it to PROT_EXEC on MPU-mode kernels, but\nfor NOMMU mode kernels, when it increases the brk allocation, making\nsys_brk() flush the extra from the icache should suffice.  The brk area\nprobably isn\u0027t used by NOMMU programs since the brk area can only use up\nthe leavings from the stack allocation, where the stack allocation is\nlarger than requested.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Mike Frysinger \u003cvapier@gentoo.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f8e9766dd1bacd5f32f9ac4322b55fbfd46b778e",
      "tree": "f6b5ff90350cf7f8d803c3b25d4b2b174b3e17f0",
      "parents": [
        "d661d76b0262f3ed649a1dea24c0119757592b09",
        "00afa758067ac1c947149ef766adcdfe30c44d7d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 30 13:14:25 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 30 13:14:25 2009 -0800"
      },
      "message": "Merge branch \u0027slab/urgent\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/slab-2.6\n\n* \u0027slab/urgent\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/slab-2.6:\n  SLAB: Fix lockdep annotation breakage\n"
    },
    {
      "commit": "66f0dc481e5b802ab363b979fc1753410c7d82b5",
      "tree": "9f8609685f07d410bc6536a0d3e47e366edf93d4",
      "parents": [
        "75c85a0bc13367aabb36e8208d4e373b022b43b3"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh.dickins@tiscali.co.uk",
        "time": "Wed Dec 30 20:17:34 2009 +0000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 30 12:23:27 2009 -0800"
      },
      "message": "mm: move sys_mmap_pgoff from util.c\n\nMove sys_mmap_pgoff() from mm/util.c to mm/mmap.c and mm/nommu.c,\nwhere we\u0027d expect to find such code: especially now that it contains\nthe MAP_HUGETLB handling.  Revert mm/util.c to how it was in 2.6.32.\n\nThis patch just ignores MAP_HUGETLB in the nommu case, as in 2.6.32,\nwhereas 2.6.33-rc2 reported -ENOSYS.  Perhaps validate_mmap_request()\nshould reject it with -EINVAL?  Add that later if necessary.\n\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "00afa758067ac1c947149ef766adcdfe30c44d7d",
      "tree": "7967c8e1b9876553742a73b6f7d155b2745ea671",
      "parents": [
        "6b7b284958d47b77d06745b36bc7f36dab769d9b"
      ],
      "author": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Sun Dec 27 14:33:14 2009 +0200"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Mon Dec 28 20:57:27 2009 +0200"
      },
      "message": "SLAB: Fix lockdep annotation breakage\n\nCommit ce79ddc8e2376a9a93c7d42daf89bfcbb9187e62 (\"SLAB: Fix lockdep annotations\nfor CPU hotplug\") broke init_node_lock_keys() off-slab logic which causes\nlockdep false positives.\n\nFix that up by reverting the logic back to original while keeping CPU hotplug\nfixes intact.\n\nReported-and-tested-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nReported-and-tested-by: Andi Kleen \u003candi@firstfloor.org\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\n"
    },
    {
      "commit": "0b5e2588d8238b03df66c4e74769fd03ad84f694",
      "tree": "7a7baf0d8309a3473bf265d1354bb756d65a4a02",
      "parents": [
        "6067d7e4f05e5c08617cf95032867d892035e581",
        "443c6f145de813518c36ac6b6e4e08d9445337e7"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Dec 24 13:01:29 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Dec 24 13:01:29 2009 -0800"
      },
      "message": "Merge branch \u0027sysctl\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ak/linux-misc-2.6\n\n* \u0027sysctl\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ak/linux-misc-2.6:\n  SYSCTL: Add a mutex to the page_alloc zone order sysctl\n  SYSCTL: Print binary sysctl warnings (nearly) only once\n"
    },
    {
      "commit": "6067d7e4f05e5c08617cf95032867d892035e581",
      "tree": "ca8205a2514936bce2cd0942e0806dc43b0436dc",
      "parents": [
        "71492fd1bdd4734d8efd20fe00ebf31027d86d3c",
        "27df5068e24f2f88de98e95eb6e8dbc9800bf80e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Dec 24 13:01:13 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Dec 24 13:01:13 2009 -0800"
      },
      "message": "Merge branch \u0027hwpoison\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ak/linux-mce-2.6\n\n* \u0027hwpoison\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ak/linux-mce-2.6:\n  HWPOISON: Add PROC_FS dependency to hwpoison injector v2\n"
    },
    {
      "commit": "443c6f145de813518c36ac6b6e4e08d9445337e7",
      "tree": "d0d635c07185b06ddcd2a82f6b2c90c188366431",
      "parents": [
        "4440095c8268c1a5e11577097d2be429cec036ca"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Dec 23 21:00:47 2009 +0100"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Dec 23 21:01:16 2009 +0100"
      },
      "message": "SYSCTL: Add a mutex to the page_alloc zone order sysctl\n\nThe zone list code clearly cannot tolerate concurrent writers (I couldn\u0027t\nfind any locks for that), so simply add a global mutex. No need for RCU\nin this case.\n\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "dd508ae2dbff0cfc7401eb6e278339fc56bc5033",
      "tree": "daa9f88a4e2e65e86b351ffa2d52dcc07e753c1e",
      "parents": [
        "7801edb0b8b66e83c13623b483bc2e846c007c9d",
        "95cd34b42b43c0ed5a89a764e023189bfe7b1530"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 22 14:18:13 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 22 14:18:13 2009 -0800"
      },
      "message": "Merge branch \u0027merge\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc\n\n* \u0027merge\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc: (36 commits)\n  powerpc/gc/wii: Remove get_irq_desc()\n  powerpc/gc/wii: hlwd-pic: convert irq_desc.lock to raw_spinlock\n  powerpc/gamecube/wii: Fix off-by-one error in ugecon/usbgecko_udbg\n  powerpc/mpic: Fix problem that affinity is not updated\n  powerpc/mm: Fix stupid bug in subpge protection handling\n  powerpc/iseries: use DECLARE_COMPLETION_ONSTACK for non-constant completion\n  powerpc: Fix MSI support on U4 bridge PCIe slot\n  powerpc: Handle VSX alignment faults correctly in little-endian mode\n  powerpc/mm: Fix typo of cpumask_clear_cpu()\n  powerpc/mm: Fix hash_utils_64.c compile errors with DEBUG enabled.\n  powerpc: Convert BUG() to use unreachable()\n  powerpc/pseries: Make declarations of cpu_hotplug_driver_lock() ANSI compatible.\n  powerpc/pseries: Don\u0027t panic when H_PROD fails during cpu-online.\n  powerpc/mm: Fix a WARN_ON() with CONFIG_DEBUG_PAGEALLOC and CONFIG_DEBUG_VM\n  powerpc/defconfigs: Set HZ\u003d100 on pseries and ppc64 defconfigs\n  powerpc/defconfigs: Disable token ring in powerpc defconfigs\n  powerpc/defconfigs: Reduce 64bit vmlinux by making acenic and cramfs modules\n  powerpc/pseries: Select XICS and PCI_MSI PSERIES\n  powerpc/85xx: Wrong variable returned on error\n  powerpc/iseries: Convert to proc_fops\n  ...\n"
    },
    {
      "commit": "27df5068e24f2f88de98e95eb6e8dbc9800bf80e",
      "tree": "a93ae4838cc5a1b6c866005bd79777895d0ba7de",
      "parents": [
        "dd59f6c76b265ed2ff18b497d6105a9511b1feb1"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "andi@firstfloor.org",
        "time": "Mon Dec 21 19:56:42 2009 +0100"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Mon Dec 21 19:56:42 2009 +0100"
      },
      "message": "HWPOISON: Add PROC_FS dependency to hwpoison injector v2\n\nThe injector filter requires stable_page_flags() which is supplied\nby procfs. So make it dependent on that.\n\nAlso add ifdefs around the filter code in memory-failure.c so that\nwhen the filter is disabled due to missing dependencies the whole\ncode still builds.\n\nReported-by: Ingo Molnar\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "3981e152864fcc1dbbb564e1f4c0ae11a09639d2",
      "tree": "76c767a9b25e294c3cc8edd9870304b845cabdd9",
      "parents": [
        "aac3d39693529ca538e37ebdb6ed5d6432a697c7",
        "18374d89e5fe96772102f44f535efb1198d9be08"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Dec 19 09:48:14 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Dec 19 09:48:14 2009 -0800"
      },
      "message": "Merge branch \u0027x86-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027x86-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  x86, irq: Allow 0xff for /proc/irq/[n]/smp_affinity on an 8-cpu system\n  Makefile: Unexport LC_ALL instead of clearing it\n  x86: Fix objdump version check in arch/x86/tools/chkobjdump.awk\n  x86: Reenable TSC sync check at boot, even with NONSTOP_TSC\n  x86: Don\u0027t use POSIX character classes in gen-insn-attr-x86.awk\n  Makefile: set LC_CTYPE, LC_COLLATE, LC_NUMERIC to C\n  x86: Increase MAX_EARLY_RES; insufficient on 32-bit NUMA\n  x86: Fix checking of SRAT when node 0 ram is not from 0\n  x86, cpuid: Add \"volatile\" to asm in native_cpuid()\n  x86, msr: msrs_alloc/free for CONFIG_SMP\u003dn\n  x86, amd: Get multi-node CPU info from NodeId MSR instead of PCI config space\n  x86: Add IA32_TSC_AUX MSR and use it\n  x86, msr/cpuid: Register enough minors for the MSR and CPUID drivers\n  initramfs: add missing decompressor error check\n  bzip2: Add missing checks for malloc returning NULL\n  bzip2/lzma/gzip: pre-boot malloc doesn\u0027t return NULL on failure\n"
    },
    {
      "commit": "925cc71e512a29e2594bcc17dc58d0a0e9c4d524",
      "tree": "7240ccf6ba713cc180d388a28f00c1a43293bc14",
      "parents": [
        "55639353a0035052d9ea6cfe4dde0ac7fcbb2c9f"
      ],
      "author": {
        "name": "Robert Jennings",
        "email": "rcj@linux.vnet.ibm.com",
        "time": "Thu Dec 17 14:44:38 2009 +0000"
      },
      "committer": {
        "name": "Benjamin Herrenschmidt",
        "email": "benh@kernel.crashing.org",
        "time": "Fri Dec 18 14:53:36 2009 +1100"
      },
      "message": "mm: Add notifier in pageblock isolation for balloon drivers\n\nMemory balloon drivers can allocate a large amount of memory which is not\nmovable but could be freed to accomodate memory hotplug remove.\n\nPrior to calling the memory hotplug notifier chain the memory in the\npageblock is isolated.  Currently, if the migrate type is not\nMIGRATE_MOVABLE the isolation will not proceed, causing the memory removal\nfor that page range to fail.\n\nRather than failing pageblock isolation if the migrateteype is not\nMIGRATE_MOVABLE, this patch checks if all of the pages in the pageblock,\nand not on the LRU, are owned by a registered balloon driver (or other\nentity) using a notifier chain.  If all of the non-movable pages are owned\nby a balloon, they can be freed later through the memory notifier chain\nand the range can still be isolated in set_migratetype_isolate().\n\nSigned-off-by: Robert Jennings \u003crcj@linux.vnet.ibm.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Brian King \u003cbrking@linux.vnet.ibm.com\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Gerald Schaefer \u003cgeralds@linux.vnet.ibm.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\n"
    },
    {
      "commit": "55db493b65c7b6bb5d7bd3dd3c8a2fe13f5dc09c",
      "tree": "7f9203f43e7c81687c9aaa0213266bc7b2e89e35",
      "parents": [
        "efc8e7f4c83dc85acbf5f54a8b1b24ae75b20aaa",
        "a4636818f8e0991f32d9528f39cf4f3d6a7d30a3"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Dec 17 17:00:20 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Dec 17 17:00:20 2009 -0800"
      },
      "message": "Merge branch \u0027cpumask-cleanups\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-for-linus\n\n* \u0027cpumask-cleanups\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-for-linus:\n  cpumask: rename tsk_cpumask to tsk_cpus_allowed\n  cpumask: don\u0027t recommend set_cpus_allowed hack in Documentation/cpu-hotplug.txt\n  cpumask: avoid dereferencing struct cpumask\n  cpumask: convert drivers/idle/i7300_idle.c to cpumask_var_t\n  cpumask: use modern cpumask style in drivers/scsi/fcoe/fcoe.c\n  cpumask: avoid deprecated function in mm/slab.c\n  cpumask: use cpu_online in kernel/perf_event.c\n"
    },
    {
      "commit": "efc8e7f4c83dc85acbf5f54a8b1b24ae75b20aaa",
      "tree": "cf7df8a837b719623e13b3ab19e8cfce1e270883",
      "parents": [
        "b5c96f89177b460ef89ecd777d5f2fefd4534d3f",
        "a00ae4d21b2fa9379914f270ffffd8d3bec55430"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Dec 17 16:58:26 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Dec 17 16:58:26 2009 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6:\n  Keys: KEYCTL_SESSION_TO_PARENT needs TIF_NOTIFY_RESUME architecture support\n  NOMMU: Optimise away the {dac_,}mmap_min_addr tests\n  security/min_addr.c: make init_mmap_min_addr() static\n  keys: PTR_ERR return of wrong pointer in keyctl_get_security()\n"
    },
    {
      "commit": "dcc7cd011220d7425a265c9bbf04c5731dacec1b",
      "tree": "4c2244f6e6ce94e2698572e9d2df3baea8449c2a",
      "parents": [
        "bf931a01a2c024a54204b4b02276af6e8d99a2c0",
        "b60e26a2f03d963f8c79ad7920d64abc4d38ecbc"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Dec 17 16:00:19 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Dec 17 16:00:19 2009 -0800"
      },
      "message": "Merge branch \u0027kmemleak\u0027 of git://linux-arm.org/linux-2.6\n\n* \u0027kmemleak\u0027 of git://linux-arm.org/linux-2.6:\n  kmemleak: fix kconfig for crc32 build error\n  kmemleak: Reduce the false positives by checking for modified objects\n  kmemleak: Show the age of an unreferenced object\n  kmemleak: Release the object lock before calling put_object()\n  kmemleak: Scan the _ftrace_events section in modules\n  kmemleak: Simplify the kmemleak_scan_area() function prototype\n  kmemleak: Do not use off-slab management with SLAB_NOLEAKTRACE\n"
    },
    {
      "commit": "65a80b4c61f5b5f6eb0f5669c8fb120893bfb388",
      "tree": "44136f7130ad0a1074502afbfdf8b93efe35976e",
      "parents": [
        "26b3c01f7debc1bbc3117bc9c9e016ca6f2e41d5"
      ],
      "author": {
        "name": "Hisashi Hifumi",
        "email": "hifumi.hisashi@oss.ntt.co.jp",
        "time": "Thu Dec 17 15:27:26 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Dec 17 15:45:32 2009 -0800"
      },
      "message": "readahead: add blk_run_backing_dev\n\nI added blk_run_backing_dev on page_cache_async_readahead so readahead I/O\nis unpluged to improve throughput on especially RAID environment.\n\nThe normal case is, if page N become uptodate at time T(N), then T(N) \u003c\u003d\nT(N+1) holds.  With RAID (and NFS to some degree), there is no strict\nordering, the data arrival time depends on runtime status of individual\ndisks, which breaks that formula.  So in do_generic_file_read(), just\nafter submitting the async readahead IO request, the current page may well\nbe uptodate, so the page won\u0027t be locked, and the block device won\u0027t be\nimplicitly unplugged:\n\n               if (PageReadahead(page))\n                        page_cache_async_readahead()\n                if (!PageUptodate(page))\n                                goto page_not_up_to_date;\n                //...\npage_not_up_to_date:\n                lock_page_killable(page);\n\nTherefore explicit unplugging can help.\n\nFollowing is the test result with dd.\n\n#dd if\u003dtestdir/testfile of\u003d/dev/null bs\u003d16384\n\n-2.6.30-rc6\n1048576+0 records in\n1048576+0 records out\n17179869184 bytes (17 GB) copied, 224.182 seconds, 76.6 MB/s\n\n-2.6.30-rc6-patched\n1048576+0 records in\n1048576+0 records out\n17179869184 bytes (17 GB) copied, 206.465 seconds, 83.2 MB/s\n\n(7Disks RAID-0 Array)\n\n-2.6.30-rc6\n1054976+0 records in\n1054976+0 records out\n17284726784 bytes (17 GB) copied, 212.233 seconds, 81.4 MB/s\n\n-2.6.30-rc6-patched\n1054976+0 records out\n17284726784 bytes (17 GB) copied, 198.878 seconds, 86.9 MB/s\n\n(7Disks RAID-5 Array)\n\nThe patch was found to improve performance with the SCST scsi target\ndriver.  See\nhttp://sourceforge.net/mailarchive/forum.php?thread_name\u003da0272b440906030714g67eabc5k8f847fb1e538cc62%40mail.gmail.com\u0026forum_name\u003dscst-devel\n\n[akpm@linux-foundation.org: unbust comment layout]\n[akpm@linux-foundation.org: \"fix\" CONFIG_BLOCK\u003dn]\nSigned-off-by: Hisashi Hifumi \u003chifumi.hisashi@oss.ntt.co.jp\u003e\nAcked-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nTested-by: Ronald \u003cintercommit@gmail.com\u003e\nCc: Bart Van Assche \u003cbart.vanassche@gmail.com\u003e\nCc: Vladislav Bolkhovitin \u003cvst@vlnb.net\u003e\nCc: Randy Dunlap \u003crandy.dunlap@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": "58463c1fe25f7c4183f30f06a5a86cb6cd9d8231",
      "tree": "62b52d0ccbf7fc258627492240fb1ca1770639cc",
      "parents": [
        "f6325e30ebd6fc870315b017a5d4a6ab15bf790b"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Dec 17 11:43:12 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Dec 17 11:43:13 2009 +1030"
      },
      "message": "cpumask: avoid deprecated function in mm/slab.c\n\nThese days we use cpumask_empty() which takes a pointer.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nAcked-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\n"
    },
    {
      "commit": "718deb6b61e34c200c1f2b706176d9aac334cb2d",
      "tree": "fdf37190a8663d507bc740a6fa21437c6c22e611",
      "parents": [
        "bea4c899f2b5fad80099aea979780ef19f9b1987"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Dec 16 19:35:36 2009 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Dec 16 19:48:48 2009 -0500"
      },
      "message": "Fix breakage in shmem.c\n\nReplacing\n\terror \u003d 0;\n\tif (error)\n\t\top\nwith nothing is not quite an equivalent transformation ;-)\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "329962503692b42d8088f31584e42d52db179d52",
      "tree": "fe8aa709fcbf6154e25c291ec569885a23e2eba1",
      "parents": [
        "45a94d7cd45ed991914011919e7d40eb6d2546d1"
      ],
      "author": {
        "name": "Yinghai Lu",
        "email": "yinghai@kernel.org",
        "time": "Tue Dec 15 17:59:02 2009 -0800"
      },
      "committer": {
        "name": "H. Peter Anvin",
        "email": "hpa@zytor.com",
        "time": "Wed Dec 16 16:43:37 2009 -0800"
      },
      "message": "x86: Fix checking of SRAT when node 0 ram is not from 0\n\nFound one system that boot from socket1 instead of socket0, SRAT get rejected...\n\n[    0.000000] SRAT: Node 1 PXM 0 0-a0000\n[    0.000000] SRAT: Node 1 PXM 0 100000-80000000\n[    0.000000] SRAT: Node 1 PXM 0 100000000-2080000000\n[    0.000000] SRAT: Node 0 PXM 1 2080000000-4080000000\n[    0.000000] SRAT: Node 2 PXM 2 4080000000-6080000000\n[    0.000000] SRAT: Node 3 PXM 3 6080000000-8080000000\n[    0.000000] SRAT: Node 4 PXM 4 8080000000-a080000000\n[    0.000000] SRAT: Node 5 PXM 5 a080000000-c080000000\n[    0.000000] SRAT: Node 6 PXM 6 c080000000-e080000000\n[    0.000000] SRAT: Node 7 PXM 7 e080000000-10080000000\n...\n[    0.000000] NUMA: Allocated memnodemap from 500000 - 701040\n[    0.000000] NUMA: Using 20 for the hash shift.\n[    0.000000] Adding active range (0, 0x2080000, 0x4080000) 0 entries of 3200 used\n[    0.000000] Adding active range (1, 0x0, 0x96) 1 entries of 3200 used\n[    0.000000] Adding active range (1, 0x100, 0x7f750) 2 entries of 3200 used\n[    0.000000] Adding active range (1, 0x100000, 0x2080000) 3 entries of 3200 used\n[    0.000000] Adding active range (2, 0x4080000, 0x6080000) 4 entries of 3200 used\n[    0.000000] Adding active range (3, 0x6080000, 0x8080000) 5 entries of 3200 used\n[    0.000000] Adding active range (4, 0x8080000, 0xa080000) 6 entries of 3200 used\n[    0.000000] Adding active range (5, 0xa080000, 0xc080000) 7 entries of 3200 used\n[    0.000000] Adding active range (6, 0xc080000, 0xe080000) 8 entries of 3200 used\n[    0.000000] Adding active range (7, 0xe080000, 0x10080000) 9 entries of 3200 used\n[    0.000000] SRAT: PXMs only cover 917504MB of your 1048566MB e820 RAM. Not used.\n[    0.000000] SRAT: SRAT not used.\n\nthe early_node_map is not sorted because node0 with non zero start come first.\n\nso try to sort it right away after all regions are registered.\n\nalso fixs refression by 8716273c (x86: Export srat physical topology)\n\n-v2: make it more solid to handle cross node case like node0 [0,4g), [8,12g) and node1 [4g, 8g), [12g, 16g)\n-v3: update comments.\n\nReported-and-tested-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nSigned-off-by: Yinghai Lu \u003cyinghai@kernel.org\u003e\nLKML-Reference: \u003c4B2579D2.3010201@kernel.org\u003e\nSigned-off-by: H. Peter Anvin \u003chpa@zytor.com\u003e\n"
    },
    {
      "commit": "6e1415467614e854fee660ff6648bd10fa976e95",
      "tree": "2ae2e2f51eff0629bc0e26a97eac85483a7ba56f",
      "parents": [
        "dd880fbe8e4792d1185a5101dc751f49eab0a509"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Tue Dec 15 19:27:45 2009 +0000"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Thu Dec 17 09:25:19 2009 +1100"
      },
      "message": "NOMMU: Optimise away the {dac_,}mmap_min_addr tests\n\nIn NOMMU mode clamp dac_mmap_min_addr to zero to cause the tests on it to be\nskipped by the compiler.  We do this as the minimum mmap address doesn\u0027t make\nany sense in NOMMU mode.\n\nmmap_min_addr and round_hint_to_min() can be discarded entirely in NOMMU mode.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: Eric Paris \u003ceparis@redhat.com\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "d4220f987cf473c65a342ca69e3eb13dea919a49",
      "tree": "dbb004a9c805d6de3f6e3955398fee1084a29f16",
      "parents": [
        "61cf693159d6a968a7014e24905143f71ed8ddcf",
        "f2c03debdfb387fa2e35cac6382779072b8b9209"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 16 12:36:49 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 16 12:36:49 2009 -0800"
      },
      "message": "Merge branch \u0027hwpoison\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ak/linux-mce-2.6\n\n* \u0027hwpoison\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ak/linux-mce-2.6: (34 commits)\n  HWPOISON: Remove stray phrase in a comment\n  HWPOISON: Try to allocate migration page on the same node\n  HWPOISON: Don\u0027t do early filtering if filter is disabled\n  HWPOISON: Add a madvise() injector for soft page offlining\n  HWPOISON: Add soft page offline support\n  HWPOISON: Undefine short-hand macros after use to avoid namespace conflict\n  HWPOISON: Use new shake_page in memory_failure\n  HWPOISON: Use correct name for MADV_HWPOISON in documentation\n  HWPOISON: mention HWPoison in Kconfig entry\n  HWPOISON: Use get_user_page_fast in hwpoison madvise\n  HWPOISON: add an interface to switch off/on all the page filters\n  HWPOISON: add memory cgroup filter\n  memcg: add accessor to mem_cgroup.css\n  memcg: rename and export try_get_mem_cgroup_from_page()\n  HWPOISON: add page flags filter\n  mm: export stable page flags\n  HWPOISON: limit hwpoison injector to known page types\n  HWPOISON: add fs/device filters\n  HWPOISON: return 0 to indicate success reliably\n  HWPOISON: make semantics of IGNORED/DELAYED clear\n  ...\n"
    },
    {
      "commit": "bac5e54c29f352d962a2447d22735316b347b9f1",
      "tree": "7642993fa93164835ffaa2dacd341388193f1979",
      "parents": [
        "529e89430d6c0d64db8ac474cb95e68e2527c79a",
        "c05c4edd876b7ae92787d1295868afcb89b6a348"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 16 12:04:02 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 16 12:04:02 2009 -0800"
      },
      "message": "Merge branch \u0027master\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6\n\n* \u0027master\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6: (38 commits)\n  direct I/O fallback sync simplification\n  ocfs: stop using do_sync_mapping_range\n  cleanup blockdev_direct_IO locking\n  make generic_acl slightly more generic\n  sanitize xattr handler prototypes\n  libfs: move EXPORT_SYMBOL for d_alloc_name\n  vfs: force reval of target when following LAST_BIND symlinks (try #7)\n  ima: limit imbalance msg\n  Untangling ima mess, part 3: kill dead code in ima\n  Untangling ima mess, part 2: deal with counters\n  Untangling ima mess, part 1: alloc_file()\n  O_TRUNC open shouldn\u0027t fail after file truncation\n  ima: call ima_inode_free ima_inode_free\n  IMA: clean up the IMA counts updating code\n  ima: only insert at inode creation time\n  ima: valid return code from ima_inode_alloc\n  fs: move get_empty_filp() deffinition to internal.h\n  Sanitize exec_permission_lite()\n  Kill cached_lookup() and real_lookup()\n  Kill path_lookup_open()\n  ...\n\nTrivial conflicts in fs/direct-io.c\n"
    },
    {
      "commit": "c05c4edd876b7ae92787d1295868afcb89b6a348",
      "tree": "8dc4ce17c0a9be223a70e99d246035fee0a7168e",
      "parents": [
        "2cfd30adf6130dab3fbb130eb5f7b1fd42a70e31"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Wed Sep 23 15:07:30 2009 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Dec 16 12:16:50 2009 -0500"
      },
      "message": "direct I/O fallback sync simplification\n\nIn the case of direct I/O falling back to buffered I/O we sync data\ntwice currently: once at the end of generic_file_buffered_write using\nfilemap_write_and_wait_range and once a little later in\n__generic_file_aio_write using do_sync_mapping_range with all flags set.\n\nThe wait before write of the do_sync_mapping_range call does not make\nany sense, so just keep the filemap_write_and_wait_range call and move\nit to the right spot.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "1c7c474c31aea6d5cb2fb35f31d9e9e91ae466b1",
      "tree": "89a5fd1146be1744ce3ac94789542841512315b8",
      "parents": [
        "431547b3c4533b8c7fd150ab36980b9a3147797b"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Tue Nov 03 16:44:44 2009 +0100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Dec 16 12:16:49 2009 -0500"
      },
      "message": "make generic_acl slightly more generic\n\nNow that we cache the ACL pointers in the generic inode all the generic_acl\ncruft can go away and generic_acl.c can directly implement xattr handlers\ndealing with the full Posix ACL semantics for in-memory filesystems.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "431547b3c4533b8c7fd150ab36980b9a3147797b",
      "tree": "807ff2790f3c13c7c91ed2afd6d833032899482d",
      "parents": [
        "ef26ca97e83052790940cbc444b01b0d17a813c1"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri Nov 13 09:52:56 2009 +0000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Dec 16 12:16:49 2009 -0500"
      },
      "message": "sanitize xattr handler prototypes\n\nAdd a flags argument to struct xattr_handler and pass it to all xattr\nhandler methods.  This allows using the same methods for multiple\nhandlers, e.g. for the ACL methods which perform exactly the same action\nfor the access and default ACLs, just using a different underlying\nattribute.  With a little more groundwork it\u0027ll also allow sharing the\nmethods for the regular user/trusted/secure handlers in extN, ocfs2 and\njffs2 like it\u0027s already done for xfs in this patch.\n\nAlso change the inode argument to the handlers to a dentry to allow\nusing the handlers mechnism for filesystems that require it later,\ne.g. cifs.\n\n[with GFS2 bits updated by Steven Whitehouse \u003cswhiteho@redhat.com\u003e]\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: James Morris \u003cjmorris@namei.org\u003e\nAcked-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "0552f879d45cecc35d8e372a591fc5ed863bca58",
      "tree": "f3e0d76f7d5e7cf9a11ef4771294c7b4b552cd89",
      "parents": [
        "7715b521222b6ebb6e927fa261ed91ed687fe454"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Dec 16 04:53:03 2009 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Dec 16 12:16:47 2009 -0500"
      },
      "message": "Untangling ima mess, part 1: alloc_file()\n\nThere are 2 groups of alloc_file() callers:\n\t* ones that are followed by ima_counts_get\n\t* ones giving non-regular files\nSo let\u0027s pull that ima_counts_get() into alloc_file();\nit\u0027s a no-op in case of non-regular files.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "2c48b9c45579a9b5e3e74694eebf3d2451f3dbd3",
      "tree": "cecbf786ae0650368a8136bdd90910e05d9b95c3",
      "parents": [
        "a95161aaa801c18c52b2e7cf3d6b4b141c00a20a"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Aug 09 00:52:35 2009 +0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Dec 16 12:16:42 2009 -0500"
      },
      "message": "switch alloc_file() to passing struct path\n\n... and have the caller grab both mnt and dentry; kill\nleak in infiniband, while we are at it.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "4b42af81f0d7f95dff320f47d99c201925f406f5",
      "tree": "49829a9c58a5f7cac9a7b5e7efb22d6287794d72",
      "parents": [
        "853b3da10d617f08340e5fe569c99e7b54f2a568"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Aug 05 18:25:56 2009 +0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Dec 16 12:16:40 2009 -0500"
      },
      "message": "switch shmem_file_setup() to alloc_file()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "aa20d489ceb024f91aae084ee00c47fc6a12255c",
      "tree": "1fc8e826114b1020d0e938d3b915e8a2016ded57",
      "parents": [
        "9ab322caa347c4b580bcaf08f2253ea4cbd9e9ad"
      ],
      "author": {
        "name": "Bob Liu",
        "email": "lliubbo@gmail.com",
        "time": "Tue Dec 15 16:47:14 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 16 07:20:08 2009 -0800"
      },
      "message": "memcg: code clean, remove unused variable in mem_cgroup_resize_limit()\n\nVariable `progress\u0027 isn\u0027t used in mem_cgroup_resize_limit() any more.\nRemove it.\n\n[akpm@linux-foundation.org: cleanup]\nSigned-off-by: Bob Liu \u003clliubbo@gmail.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nReviewed-by: Balbir Singh \u003cbalbir@linux.vnet.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": "9ab322caa347c4b580bcaf08f2253ea4cbd9e9ad",
      "tree": "3d3344e4ab05fc1047465b439b5cc7f000c44ca2",
      "parents": [
        "d31f56dbf8bafaacb0c617f9a6f137498d5c7aed"
      ],
      "author": {
        "name": "Daisuke Nishimura",
        "email": "nishimura@mxp.nes.nec.co.jp",
        "time": "Tue Dec 15 16:47:13 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 16 07:20:07 2009 -0800"
      },
      "message": "memcg: remove memcg_tasklist\n\nmemcg_tasklist was introduced at commit 7f4d454d(memcg: avoid deadlock\ncaused by race between oom and cpuset_attach) instead of cgroup_mutex to\nfix a deadlock problem.  The cgroup_mutex, which was removed by the\ncommit, in mem_cgroup_out_of_memory() was originally introduced at commit\nc7ba5c9e (Memory controller: OOM handling).\n\nIIUC, the intention of this cgroup_mutex was to prevent task move during\nselect_bad_process() so that situations like below can be avoided.\n\n  Assume cgroup \"foo\" has exceeded its limit and is about to trigger oom.\n  1. Process A, which has been in cgroup \"baa\" and uses large memory, is just\n     moved to cgroup \"foo\". Process A can be the candidates for being killed.\n  2. Process B, which has been in cgroup \"foo\" and uses large memory, is just\n     moved from cgroup \"foo\". Process B can be excluded from the candidates for\n     being killed.\n\nBut these race window exists anyway even if we hold a lock, because\n__mem_cgroup_try_charge() decides wether it should trigger oom or not\noutside of the lock.  So the original cgroup_mutex in\nmem_cgroup_out_of_memory and thus current memcg_tasklist has no use.  And\nIMHO, those races are not so critical for users.\n\nThis patch removes it and make codes simpler.\n\nSigned-off-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d31f56dbf8bafaacb0c617f9a6f137498d5c7aed",
      "tree": "88d095c2208d27362e58ff7431407040ead9d848",
      "parents": [
        "57f9fd7d25ac9a0d7e3a4ced580e780ab4524e3b"
      ],
      "author": {
        "name": "Daisuke Nishimura",
        "email": "nishimura@mxp.nes.nec.co.jp",
        "time": "Tue Dec 15 16:47:12 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 16 07:20:07 2009 -0800"
      },
      "message": "memcg: avoid oom-killing innocent task in case of use_hierarchy\n\ntask_in_mem_cgroup(), which is called by select_bad_process() to check\nwhether a task can be a candidate for being oom-killed from memcg\u0027s limit,\nchecks \"curr-\u003euse_hierarchy\"(\"curr\" is the mem_cgroup the task belongs\nto).\n\nBut this check return true(it\u0027s false positive) when:\n\n\t\u003csome path\u003e/aa\t\tuse_hierarchy \u003d\u003d 0\t\u003c- hitting limit\n\t  \u003csome path\u003e/aa/00\tuse_hierarchy \u003d\u003d 1\t\u003c- the task belongs to\n\nThis leads to killing an innocent task in aa/00.  This patch is a fix for\nthis bug.  And this patch also fixes the arg for\nmem_cgroup_print_oom_info().  We should print information of mem_cgroup\nwhich the task being killed, not current, belongs to.\n\nSigned-off-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nAcked-by: Balbir Singh \u003cbalbir@linux.vnet.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": "57f9fd7d25ac9a0d7e3a4ced580e780ab4524e3b",
      "tree": "ff95e62e7326ba7e77903f7f767e9650c0d9b3dd",
      "parents": [
        "a3032a2c15c6967f9f0c0c28375b1a5c833a3112"
      ],
      "author": {
        "name": "Daisuke Nishimura",
        "email": "nishimura@mxp.nes.nec.co.jp",
        "time": "Tue Dec 15 16:47:11 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 16 07:20:07 2009 -0800"
      },
      "message": "memcg: cleanup mem_cgroup_move_parent()\n\nmem_cgroup_move_parent() calls try_charge first and cancel_charge on\nfailure.  IMHO, charge/uncharge(especially charge) is high cost operation,\nso we should avoid it as far as possible.\n\nThis patch tries to delay try_charge in mem_cgroup_move_parent() by\nre-ordering checks it does.\n\nAnd this patch renames mem_cgroup_move_account() to\n__mem_cgroup_move_account(), changes the return value of\n__mem_cgroup_move_account() from int to void, and adds a new\nwrapper(mem_cgroup_move_account()), which checks whether a @pc is valid\nfor moving account and calls __mem_cgroup_move_account().\n\nThis patch removes the last caller of trylock_page_cgroup(), so removes\nits definition too.\n\nSigned-off-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@linux.vnet.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": "a3032a2c15c6967f9f0c0c28375b1a5c833a3112",
      "tree": "32d279856032fd9d84ebd5d6746b2bd382baaac9",
      "parents": [
        "d8046582d5ee24448800e71c6933fdb6813aa062"
      ],
      "author": {
        "name": "Daisuke Nishimura",
        "email": "nishimura@mxp.nes.nec.co.jp",
        "time": "Tue Dec 15 16:47:10 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 16 07:20:07 2009 -0800"
      },
      "message": "memcg: add mem_cgroup_cancel_charge()\n\nThere are some places calling both res_counter_uncharge() and css_put() to\ncancel the charge and the refcnt we have got by mem_cgroup_tyr_charge().\n\nThis patch introduces mem_cgroup_cancel_charge() and call it in those\nplaces.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nReviewed-by: Balbir Singh \u003cbalbir@linux.vnet.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": "d8046582d5ee24448800e71c6933fdb6813aa062",
      "tree": "857d014a850deee5ddb6da6550d81ce0122f03b1",
      "parents": [
        "cdec2e4265dfa09490601b00aeabd8a8d4af30f0"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Tue Dec 15 16:47:09 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 16 07:20:07 2009 -0800"
      },
      "message": "memcg: make memcg\u0027s file mapped consistent with global VM\n\nIn global VM, FILE_MAPPED is used but memcg uses MAPPED_FILE.  This makes\ngrep difficult.  Replace memcg\u0027s MAPPED_FILE with FILE_MAPPED\n\nAnd in global VM, mapped shared memory is accounted into FILE_MAPPED.\nBut memcg doesn\u0027t. fix it.\nNote:\n  page_is_file_cache() just checks SwapBacked or not.\n  So, we need to check PageAnon.\n\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nReviewed-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "cdec2e4265dfa09490601b00aeabd8a8d4af30f0",
      "tree": "d120759b91e3e24d33f3d76010c9da990f115706",
      "parents": [
        "569b846df54ffb2827b83ce3244c5f032394cba4"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Tue Dec 15 16:47:08 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 16 07:20:07 2009 -0800"
      },
      "message": "memcg: coalesce charging via percpu storage\n\nThis is a patch for coalescing access to res_counter at charging by percpu\ncaching.  At charge, memcg charges 64pages and remember it in percpu\ncache.  Because it\u0027s cache, drain/flush if necessary.\n\nThis version uses public percpu area.\n 2 benefits for using public percpu area.\n 1. Sum of stocked charge in the system is limited to # of cpus\n    not to the number of memcg. This shows better synchonization.\n 2. drain code for flush/cpuhotplug is very easy (and quick)\n\nThe most important point of this patch is that we never touch res_counter\nin fast path. The res_counter is system-wide shared counter which is modified\nvery frequently. We shouldn\u0027t touch it as far as we can for avoiding\nfalse sharing.\n\nOn x86-64 8cpu server, I tested overheads of memcg at page fault by\nrunning a program which does map/fault/unmap in a loop. Running\na task per a cpu by taskset and see sum of the number of page faults\nin 60secs.\n\n[without memcg config]\n  40156968  page-faults              #      0.085 M/sec   ( +-   0.046% )\n  27.67 cache-miss/faults\n\n[root cgroup]\n  36659599  page-faults              #      0.077 M/sec   ( +-   0.247% )\n  31.58 cache miss/faults\n\n[in a child cgroup]\n  18444157  page-faults              #      0.039 M/sec   ( +-   0.133% )\n  69.96 cache miss/faults\n\n[ + coalescing uncharge patch]\n  27133719  page-faults              #      0.057 M/sec   ( +-   0.155% )\n  47.16 cache miss/faults\n\n[ + coalescing uncharge patch + this patch ]\n  34224709  page-faults              #      0.072 M/sec   ( +-   0.173% )\n  34.69 cache miss/faults\n\nChangelog (since Oct/2):\n  - updated comments\n  - replaced get_cpu_var() with __get_cpu_var() if possible.\n  - removed mutex for system-wide drain. adds a counter instead of it.\n  - removed CONFIG_HOTPLUG_CPU\n\nChangelog (old):\n  - rebased onto the latest mmotm\n  - moved charge size check before __GFP_WAIT check for avoiding unnecesary\n  - added asynchronous flush routine.\n  - fixed bugs pointed out by Nishimura-san.\n\n[akpm@linux-foundation.org: tweak comments]\n[nishimura@mxp.nes.nec.co.jp: don\u0027t do INIT_WORK() repeatedly against the same work_struct]\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nSigned-off-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.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": "569b846df54ffb2827b83ce3244c5f032394cba4",
      "tree": "77c5d373a5edf97710fab8777912971b99e84828",
      "parents": [
        "cd9b45b78a61e8df250e69385c74e729e5b66abf"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Tue Dec 15 16:47:03 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 16 07:20:07 2009 -0800"
      },
      "message": "memcg: coalesce uncharge during unmap/truncate\n\nIn massive parallel enviroment, res_counter can be a performance\nbottleneck.  One strong techinque to reduce lock contention is reducing\ncalls by coalescing some amount of calls into one.\n\nConsidering charge/uncharge chatacteristic,\n\t- charge is done one by one via demand-paging.\n\t- uncharge is done by\n\t\t- in chunk at munmap, truncate, exit, execve...\n\t\t- one by one via vmscan/paging.\n\nIt seems we have a chance to coalesce uncharges for improving scalability\nat unmap/truncation.\n\nThis patch is a for coalescing uncharge.  For avoiding scattering memcg\u0027s\nstructure to functions under /mm, this patch adds memcg batch uncharge\ninformation to the task.  A reason for per-task batching is for making use\nof caller\u0027s context information.  We do batched uncharge (deleyed\nuncharge) when truncation/unmap occurs but do direct uncharge when\nuncharge is called by memory reclaim (vmscan.c).\n\nThe degree of coalescing depends on callers\n  - at invalidate/trucate... pagevec size\n  - at unmap ....ZAP_BLOCK_SIZE\n(memory itself will be freed in this degree.)\nThen, we\u0027ll not coalescing too much.\n\nOn x86-64 8cpu server, I tested overheads of memcg at page fault by\nrunning a program which does map/fault/unmap in a loop. Running\na task per a cpu by taskset and see sum of the number of page faults\nin 60secs.\n\n[without memcg config]\n  40156968  page-faults              #      0.085 M/sec   ( +-   0.046% )\n  27.67 cache-miss/faults\n[root cgroup]\n  36659599  page-faults              #      0.077 M/sec   ( +-   0.247% )\n  31.58 miss/faults\n[in a child cgroup]\n  18444157  page-faults              #      0.039 M/sec   ( +-   0.133% )\n  69.96 miss/faults\n[child with this patch]\n  27133719  page-faults              #      0.057 M/sec   ( +-   0.155% )\n  47.16 miss/faults\n\nWe can see some amounts of improvement.\n(root cgroup doesn\u0027t affected by this patch)\nAnother patch for \"charge\" will follow this and above will be improved more.\n\nChangelog(since 2009/10/02):\n - renamed filed of memcg_batch (as pages to bytes, memsw to memsw_bytes)\n - some clean up and commentary/description updates.\n - added initialize code to copy_process(). (possible bug fix)\n\nChangelog(old):\n - fixed !CONFIG_MEM_CGROUP case.\n - rebased onto the latest mmotm + softlimit fix patches.\n - unified patch for callers\n - added commetns.\n - make -\u003edo_batch as bool.\n - removed css_get() at el. We don\u0027t need it.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.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": "cd9b45b78a61e8df250e69385c74e729e5b66abf",
      "tree": "8cb92363dd4b936814de9a0823016889b3441fde",
      "parents": [
        "6be4b78993498c253e99b12c4d0f7684a36955e2"
      ],
      "author": {
        "name": "Kirill A. Shutemov",
        "email": "kirill@shutemov.name",
        "time": "Tue Dec 15 16:47:01 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 16 07:20:07 2009 -0800"
      },
      "message": "memcg: fix memory.memsw.usage_in_bytes for root cgroup\n\nA memory cgroup has a memory.memsw.usage_in_bytes file.  It shows the sum\nof the usage of pages and swapents in the cgroup.  Presently the root\ncgroup\u0027s memsw.usage_in_bytes shows the wrong value - the number of\nswapents are not added.\n\nSo take MEM_CGROUP_STAT_SWAPOUT into account.\n\nSigned-off-by: Kirill A. Shutemov \u003ckirill@shutemov.name\u003e\nReviewed-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4365a5676fa3aa1d5ae6c90c22a0044f09ba584e",
      "tree": "5b9914ccbdcf2aa695473421e71f6299fbe78cef",
      "parents": [
        "3b4798cbc13dd8d1150aa6377f97f0e11450a67d"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hioryu@jp.fujitsu.com",
        "time": "Tue Dec 15 16:45:33 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 16 07:19:57 2009 -0800"
      },
      "message": "oom-kill: fix NUMA constraint check with nodemask\n\nFix node-oriented allocation handling in oom-kill.c I myself think of this\nas a bugfix not as an ehnancement.\n\nIn these days, things are changed as\n  - alloc_pages() eats nodemask as its arguments, __alloc_pages_nodemask().\n  - mempolicy don\u0027t maintain its own private zonelists.\n  (And cpuset doesn\u0027t use nodemask for __alloc_pages_nodemask())\n\nSo, current oom-killer\u0027s check function is wrong.\n\nThis patch does\n  - check nodemask, if nodemask \u0026\u0026 nodemask doesn\u0027t cover all\n    node_states[N_HIGH_MEMORY], this is CONSTRAINT_MEMORY_POLICY.\n  - Scan all zonelist under nodemask, if it hits cpuset\u0027s wall\n    this faiulre is from cpuset.\nAnd\n  - modifies the caller of out_of_memory not to call oom if __GFP_THISNODE.\n    This doesn\u0027t change \"current\" behavior. If callers use __GFP_THISNODE\n    it should handle \"page allocation failure\" by itself.\n\n  - handle __GFP_NOFAIL+__GFP_THISNODE path.\n    This is something like a FIXME but this gfpmask is not used now.\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hioryu@jp.fujitsu.com\u003e\nAcked-by: David Rientjes \u003crientjes@google.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3b4798cbc13dd8d1150aa6377f97f0e11450a67d",
      "tree": "3a805cae1557098ddd4386fd6117f4f0fde5123f",
      "parents": [
        "8bea8672edfca7ec5f661cafb218f1205863b343"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Tue Dec 15 16:45:32 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 16 07:19:57 2009 -0800"
      },
      "message": "oom-kill: show virtual size and rss information of the killed process\n\nIn a typical oom analysis scenario, we frequently want to know whether the\nkilled process has a memory leak or not at the first step.  This patch\nadds vsz and rss information to the oom log to help this analysis.  To\nsave time for the debugging.\n\nexample:\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\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nrsyslogd invoked oom-killer: gfp_mask\u003d0x201da, order\u003d0, oom_adj\u003d0\nPid: 1308, comm: rsyslogd Not tainted 2.6.32-rc6 #24\nCall Trace:\n[\u003cffffffff8132e35b\u003e] ?_spin_unlock+0x2b/0x40\n[\u003cffffffff810f186e\u003e] oom_kill_process+0xbe/0x2b0\n\n(snip)\n\n492283 pages non-shared\nOut of memory: kill process 2341 (memhog) score 527276 or a child\nKilled process 2341 (memhog) vsz:1054552kB, anon-rss:970588kB, file-rss:4kB\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\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n                             ^\n                             |\n                            here\n\n[rientjes@google.com: fix race, add pid \u0026 comm to message]\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f2c03debdfb387fa2e35cac6382779072b8b9209",
      "tree": "b43b03515fb32025ba81f0933a233f7c93c32470",
      "parents": [
        "12686d153abff397fa0927c620d5a3de84910b72"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "andi@firstfloor.org",
        "time": "Wed Dec 16 12:20:01 2009 +0100"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Dec 16 12:20:01 2009 +0100"
      },
      "message": "HWPOISON: Remove stray phrase in a comment\n\nBetter to have complete sentences.\n\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "12686d153abff397fa0927c620d5a3de84910b72",
      "tree": "3a6f19e38e99cded5067452693083ac76c63733f",
      "parents": [
        "0d57eb8dfcb92e3dd928d792f4ed2b2fec680bb7"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "andi@firstfloor.org",
        "time": "Wed Dec 16 12:20:01 2009 +0100"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Dec 16 12:20:01 2009 +0100"
      },
      "message": "HWPOISON: Try to allocate migration page on the same node\n\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "0d57eb8dfcb92e3dd928d792f4ed2b2fec680bb7",
      "tree": "2aaf6d64134d380b3f17efd3aebb09d453f09e1d",
      "parents": [
        "afcf938ee0aac4ef95b1a23bac704c6fbeb26de6"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "andi@firstfloor.org",
        "time": "Wed Dec 16 12:20:01 2009 +0100"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Dec 16 12:20:01 2009 +0100"
      },
      "message": "HWPOISON: Don\u0027t do early filtering if filter is disabled\n\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "afcf938ee0aac4ef95b1a23bac704c6fbeb26de6",
      "tree": "fa4fe6ac0638f0abb8f7ae729b4151b8ecc52052",
      "parents": [
        "facb6011f3993947283fa15d039dacb4ad140230"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "andi@firstfloor.org",
        "time": "Wed Dec 16 12:20:00 2009 +0100"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Dec 16 12:20:00 2009 +0100"
      },
      "message": "HWPOISON: Add a madvise() injector for soft page offlining\n\nProcess based injection is much easier to handle for test programs,\nwho can first bring a page into a specific state and then test.\nSo add a new MADV_SOFT_OFFLINE to soft offline a page, similar\nto the existing hard offline injector.\n\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "facb6011f3993947283fa15d039dacb4ad140230",
      "tree": "c317e401fa7c867e1652879627163331f43085ef",
      "parents": [
        "2326c467df4ff814dc07cf1bdaa1e6e0a9c9f21c"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "andi@firstfloor.org",
        "time": "Wed Dec 16 12:20:00 2009 +0100"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Dec 16 12:20:00 2009 +0100"
      },
      "message": "HWPOISON: Add soft page offline support\n\nThis is a simpler, gentler variant of memory_failure() for soft page\nofflining controlled from user space.  It doesn\u0027t kill anything, just\ntries to invalidate and if that doesn\u0027t work migrate the\npage away.\n\nThis is useful for predictive failure analysis, where a page has\na high rate of corrected errors, but hasn\u0027t gone bad yet. Instead\nit can be offlined early and avoided.\n\nThe offlining is controlled from sysfs, including a new generic\nentry point for hard page offlining for symmetry too.\n\nWe use the page isolate facility to prevent re-allocation\nrace. Normally this is only used by memory hotplug. To avoid\nraces with memory allocation I am using lock_system_sleep().\nThis avoids the situation where memory hotplug is about\nto isolate a page range and then hwpoison undoes that work.\nThis is a big hammer currently, but the simplest solution\ncurrently.\n\nWhen the page is not free or LRU we try to free pages\nfrom slab and other caches. The slab freeing is currently\nquite dumb and does not try to focus on the specific slab\ncache which might own the page. This could be potentially\nimproved later.\n\nThanks to Fengguang Wu and Haicheng Li for some fixes.\n\n[Added fix from Andrew Morton to adapt to new migrate_pages prototype]\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "2326c467df4ff814dc07cf1bdaa1e6e0a9c9f21c",
      "tree": "7876b43b70a001a8f2d426b77ac6b85d378c7a76",
      "parents": [
        "0474a60ec704324577782b1057d05b574388d552"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "andi@firstfloor.org",
        "time": "Wed Dec 16 12:20:00 2009 +0100"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Dec 16 12:20:00 2009 +0100"
      },
      "message": "HWPOISON: Undefine short-hand macros after use to avoid namespace conflict\n\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "0474a60ec704324577782b1057d05b574388d552",
      "tree": "75c574fe9a64332aeed6c636bf6bd9e6485d1603",
      "parents": [
        "fe194d3e100dea323d7b2de96d3b44d0c067ba7a"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "andi@firstfloor.org",
        "time": "Wed Dec 16 12:20:00 2009 +0100"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Dec 16 12:20:00 2009 +0100"
      },
      "message": "HWPOISON: Use new shake_page in memory_failure\n\nshake_page handles more types of page caches than\nthe much simpler lru_add_drain_all:\n\n- slab (quite inefficiently for now)\n- any other caches with a shrinker callback\n- per cpu page allocator pages\n- per CPU LRU\n\nUse this call to try to turn pages into free or LRU pages.\nThen handle the case of the page becoming free after drain everything.\n\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "413f9efbc513d330f00352bb7cba060a729999d3",
      "tree": "4c7fb14ebea463826e6509f7c728fe4ff2a4c9eb",
      "parents": [
        "d15f107d97bd74c74d8f5144843d372666ddbdac"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "andi@firstfloor.org",
        "time": "Wed Dec 16 12:20:00 2009 +0100"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Dec 16 12:20:00 2009 +0100"
      },
      "message": "HWPOISON: mention HWPoison in Kconfig entry\n\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "d15f107d97bd74c74d8f5144843d372666ddbdac",
      "tree": "6c12d3c738c3118ccab724b5b984fc07c7e58082",
      "parents": [
        "1bfe5febe34d2be2120803c10720e179186357c9"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "andi@firstfloor.org",
        "time": "Wed Dec 16 12:20:00 2009 +0100"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Dec 16 12:20:00 2009 +0100"
      },
      "message": "HWPOISON: Use get_user_page_fast in hwpoison madvise\n\nThe previous version didn\u0027t take the mmap_sem before calling gup(),\nwhich is racy.\n\nUse get_user_pages_fast() instead which doesn\u0027t need any locks.\nThis is also faster of course, but then it doesn\u0027t really matter\nbecause this is just a testing path.\n\nBased on report from Nick Piggin.\nCc: npiggin@suse.de\n\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "1bfe5febe34d2be2120803c10720e179186357c9",
      "tree": "d4d8b1dacc375a1004ab1ed508333bc33e46d9a9",
      "parents": [
        "4fd466eb46a6a917c317a87fb94bfc7252a0f7ed"
      ],
      "author": {
        "name": "Haicheng Li",
        "email": "haicheng.li@linux.intel.com",
        "time": "Wed Dec 16 12:19:59 2009 +0100"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Dec 16 12:19:59 2009 +0100"
      },
      "message": "HWPOISON: add an interface to switch off/on all the page filters\n\nIn some use cases, user doesn\u0027t need extra filtering. E.g. user program\ncan inject errors through madvise syscall to its own pages, however it\nmight not know what the page state exactly is or which inode the page\nbelongs to.\n\nSo introduce an one-off interface \"corrupt-filter-enable\".\n\nEcho 0 to switch off page filters, and echo 1 to switch on the filters.\n[AK: changed default to 0]\n\nSigned-off-by: Haicheng Li \u003chaicheng.li@linux.intel.com\u003e\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "4fd466eb46a6a917c317a87fb94bfc7252a0f7ed",
      "tree": "003b28724241a22a41dc9ae067f30beadbf76e6a",
      "parents": [
        "d324236b3333e87c8825b35f2104184734020d35"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "andi@firstfloor.org",
        "time": "Wed Dec 16 12:19:59 2009 +0100"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Dec 16 12:19:59 2009 +0100"
      },
      "message": "HWPOISON: add memory cgroup filter\n\nThe hwpoison test suite need to inject hwpoison to a collection of\nselected task pages, and must not touch pages not owned by them and\nthus kill important system processes such as init. (But it\u0027s OK to\nmis-hwpoison free/unowned pages as well as shared clean pages.\nMis-hwpoison of shared dirty pages will kill all tasks, so the test\nsuite will target all or non of such tasks in the first place.)\n\nThe memory cgroup serves this purpose well. We can put the target\nprocesses under the control of a memory cgroup, and tell the hwpoison\ninjection code to only kill pages associated with some active memory\ncgroup.\n\nThe prerequisite for doing hwpoison stress tests with mem_cgroup is,\nthe mem_cgroup code tracks task pages _accurately_ (unless page is\nlocked).  Which we believe is/should be true.\n\nThe benefits are simplification of hwpoison injector code. Also the\nmem_cgroup code will automatically be tested by hwpoison test cases.\n\nThe alternative interfaces pin-pfn/unpin-pfn can also delegate the\n(process and page flags) filtering functions reliably to user space.\nHowever prototype implementation shows that this scheme adds more\ncomplexity than we wanted.\n\nExample test case:\n\n\tmkdir /cgroup/hwpoison\n\n\tusemem -m 100 -s 1000 \u0026\n\techo `jobs -p` \u003e /cgroup/hwpoison/tasks\n\n\tmemcg_ino\u003d$(ls -id /cgroup/hwpoison | cut -f1 -d\u0027 \u0027)\n\techo $memcg_ino \u003e /debug/hwpoison/corrupt-filter-memcg\n\n\tpage-types -p `pidof init`   --hwpoison  # shall do nothing\n\tpage-types -p `pidof usemem` --hwpoison  # poison its pages\n\n[AK: Fix documentation]\n[Add fix for problem noticed by Li Zefan \u003clizf@cn.fujitsu.com\u003e;\ndentry in the css could be NULL]\n\nCC: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCC: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCC: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCC: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCC: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCC: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCC: Paul Menage \u003cmenage@google.com\u003e\nCC: Nick Piggin \u003cnpiggin@suse.de\u003e\nCC: Andi Kleen \u003candi@firstfloor.org\u003e\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "d324236b3333e87c8825b35f2104184734020d35",
      "tree": "e8ad6b50e50f975b692cc6a15d5812a51d0047ad",
      "parents": [
        "e42d9d5d47961fb5db0be65b56dd52fe7b2421f1"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Wed Dec 16 12:19:59 2009 +0100"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Dec 16 12:19:59 2009 +0100"
      },
      "message": "memcg: add accessor to mem_cgroup.css\n\nSo that an outside user can free the reference count grabbed by\ntry_get_mem_cgroup_from_page().\n\nCC: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCC: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCC: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCC: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "e42d9d5d47961fb5db0be65b56dd52fe7b2421f1",
      "tree": "6a898c8d43ee0533581076342b9a7a97cca0509e",
      "parents": [
        "478c5ffc0b50527bd2390f2daa46cc16276b8413"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Wed Dec 16 12:19:59 2009 +0100"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Dec 16 12:19:59 2009 +0100"
      },
      "message": "memcg: rename and export try_get_mem_cgroup_from_page()\n\nSo that the hwpoison injector can get mem_cgroup for arbitrary page\nand thus know whether it is owned by some mem_cgroup task(s).\n\n[AK: Merged with latest git tree]\n\nCC: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCC: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCC: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCC: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "478c5ffc0b50527bd2390f2daa46cc16276b8413",
      "tree": "f58f5be9760fd0e81567611cf6e9f9bc77d1d3cd",
      "parents": [
        "1a9b5b7fe0c5dad8a635288882d36785dea742f9"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Wed Dec 16 12:19:59 2009 +0100"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Dec 16 12:19:59 2009 +0100"
      },
      "message": "HWPOISON: add page flags filter\n\nWhen specified, only poison pages if ((page_flags \u0026 mask) \u003d\u003d value).\n\n-       corrupt-filter-flags-mask\n-       corrupt-filter-flags-value\n\nThis allows stress testing of many kinds of pages.\n\nStrictly speaking, the buddy pages requires taking zone lock, to avoid\nsetting PG_hwpoison on a \"was buddy but now allocated to someone\" page.\nHowever we can just do nothing because we set PG_locked in the beginning,\nthis prevents the page allocator from allocating it to someone. (It will\nBUG() on the unexpected PG_locked, which is fine for hwpoison testing.)\n\n[AK: Add select PROC_PAGE_MONITOR to satisfy dependency]\n\nCC: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "31d3d3484f9bd263925ecaa341500ac2df3a5d9b",
      "tree": "38f331f27f3b4bc537303fc90490b88d53e43710",
      "parents": [
        "7c116f2b0dbac4a1dd051c7a5e8cef37701cafd4"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Wed Dec 16 12:19:59 2009 +0100"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Dec 16 12:19:59 2009 +0100"
      },
      "message": "HWPOISON: limit hwpoison injector to known page types\n\n__memory_failure()\u0027s workflow is\n\n\tset PG_hwpoison\n\t//...\n\tunset PG_hwpoison if didn\u0027t pass hwpoison filter\n\nThat could kill unrelated process if it happens to page fault on the\npage with the (temporary) PG_hwpoison. The race should be big enough to\nappear in stress tests.\n\nFix it by grabbing the page and checking filter at inject time.  This\nalso avoids the very noisy \"Injecting memory failure...\" messages.\n\n- we don\u0027t touch madvise() based injection, because the filters are\n  generally not necessary for it.\n- if we want to apply the filters to h/w aided injection, we\u0027d better to\n  rearrange the logic in __memory_failure() instead of this patch.\n\nAK: fix documentation, use drain all, cleanups\n\nCC: Haicheng Li \u003chaicheng.li@intel.com\u003e\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "7c116f2b0dbac4a1dd051c7a5e8cef37701cafd4",
      "tree": "ac7f1e56551df46bc79e400a182a57f4eae5ddaf",
      "parents": [
        "138ce286eb6ee6d39ca4fb50516e93adaf6b605f"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Wed Dec 16 12:19:59 2009 +0100"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Dec 16 12:19:59 2009 +0100"
      },
      "message": "HWPOISON: add fs/device filters\n\nFilesystem data/metadata present the most tricky-to-isolate pages.\nIt requires careful code review and stress testing to get them right.\n\nThe fs/device filter helps to target the stress tests to some specific\nfilesystem pages. The filter condition is block device\u0027s major/minor\nnumbers:\n        - corrupt-filter-dev-major\n        - corrupt-filter-dev-minor\nWhen specified (non -1), only page cache pages that belong to that\ndevice will be poisoned.\n\nThe filters are checked reliably on the locked and refcounted page.\n\nHaicheng: clear PG_hwpoison and drop bad page count if filter not OK\nAK: Add documentation\n\nCC: Haicheng Li \u003chaicheng.li@intel.com\u003e\nCC: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "138ce286eb6ee6d39ca4fb50516e93adaf6b605f",
      "tree": "a3dc707a8daa6d28e1b1b0d8315dcc5c5339ed59",
      "parents": [
        "d95ea51e3a7e9ee051d19f1dd283ca61d1aa5ec6"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Wed Dec 16 12:19:58 2009 +0100"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Dec 16 12:19:58 2009 +0100"
      },
      "message": "HWPOISON: return 0 to indicate success reliably\n\nReturn 0 to indicate success, when\n- action result is RECOVERED or DELAYED\n- no extra page reference\n\nNote that dirty swapcache pages are kept in swapcache, so can have one\nmore reference count.\n\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "d95ea51e3a7e9ee051d19f1dd283ca61d1aa5ec6",
      "tree": "c7bbafb931c9023dfaf1db8e4882a7154dc88ba0",
      "parents": [
        "847ce401df392b0704369fd3f75df614ac1414b4"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Wed Dec 16 12:19:58 2009 +0100"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Dec 16 12:19:58 2009 +0100"
      },
      "message": "HWPOISON: make semantics of IGNORED/DELAYED clear\n\nChange semantics for\n- IGNORED: not handled; it may well be _unsafe_\n- DELAYED: to be handled later; it is _safe_\n\nWith this change,\n- IGNORED/FAILED mean (maybe) Error\n- DELAYED/RECOVERED mean Success\n\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "847ce401df392b0704369fd3f75df614ac1414b4",
      "tree": "7c5021386dedea0d12f8a05b00c5267c4d28e426",
      "parents": [
        "8d22ba1b74aa9420b6032d856446564fb21f8090"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Wed Dec 16 12:19:58 2009 +0100"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Dec 16 12:19:58 2009 +0100"
      },
      "message": "HWPOISON: Add unpoisoning support\n\nThe unpoisoning interface is useful for stress testing tools to\nreclaim poisoned pages (to prevent OOM)\n\nThere is no hardware level unpoisioning, so this\ncannot be used for real memory errors, only for software injected errors.\n\nNote that it may leak pages silently - those who have been removed from\nLRU cache, but not isolated from page cache/swap cache at hwpoison time.\nEspecially the stress test of dirty swap cache pages shall reboot system\nbefore exhausting memory.\n\nAK: Fix comments, add documentation, add printks, rename symbol\n\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "8d22ba1b74aa9420b6032d856446564fb21f8090",
      "tree": "6c2e2d27e81d784faa0481500f1cecc613ff1167",
      "parents": [
        "95d01fc664b9476e0d18e3d745bb209a42a33588"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Wed Dec 16 12:19:58 2009 +0100"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Dec 16 12:19:58 2009 +0100"
      },
      "message": "HWPOISON: detect free buddy pages explicitly\n\nMost free pages in the buddy system have no PG_buddy set.\nIntroduce is_free_buddy_page() for detecting them reliably.\n\nCC: Nick Piggin \u003cnpiggin@suse.de\u003e\nCC: Mel Gorman \u003cmel@linux.vnet.ibm.com\u003e\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "95d01fc664b9476e0d18e3d745bb209a42a33588",
      "tree": "0b6a46b0f2e13fb169e64ebf0b270a52c666e7f6",
      "parents": [
        "dc2a1cbf7d862e9d0abea1d1b4c8712dfbb5a398"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Wed Dec 16 12:19:58 2009 +0100"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Dec 16 12:19:58 2009 +0100"
      },
      "message": "HWPOISON: remove the free buddy page handler\n\nThe buddy page has already be handled in the very beginning.\nSo remove redundant code.\n\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "dc2a1cbf7d862e9d0abea1d1b4c8712dfbb5a398",
      "tree": "7a0c08509e1bff29d5a0a2ba7f414878f024352b",
      "parents": [
        "71f72525dfaaec012e23089c73331654ea7b12d3"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Wed Dec 16 12:19:58 2009 +0100"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Dec 16 12:19:58 2009 +0100"
      },
      "message": "HWPOISON: introduce delete_from_lru_cache()\n\nIntroduce delete_from_lru_cache() to\n- clear PG_active, PG_unevictable to avoid complains at unpoison time\n- move the isolate_lru_page() call back to the handlers instead of the\n  entrance of __memory_failure(), this is more hwpoison filter friendly\n\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "71f72525dfaaec012e23089c73331654ea7b12d3",
      "tree": "70a8c7831ddab19be1ee8430611ad653f3e764f3",
      "parents": [
        "db0480b3a61bd6ad86ead3b8bbad094ab0996932"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Wed Dec 16 12:19:58 2009 +0100"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Dec 16 12:19:58 2009 +0100"
      },
      "message": "HWPOISON: comment dirty swapcache pages\n\nAK: Improve comment\n\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "db0480b3a61bd6ad86ead3b8bbad094ab0996932",
      "tree": "31b3d85181201234694a19d05590d7c5084f89ed",
      "parents": [
        "1668bfd5be9d8a52536c4865000fbbe065a3613b"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Wed Dec 16 12:19:58 2009 +0100"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Dec 16 12:19:58 2009 +0100"
      },
      "message": "HWPOISON: comment the possible set_page_dirty() race\n\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "1668bfd5be9d8a52536c4865000fbbe065a3613b",
      "tree": "85f060960de6e27f6933d56fcfd194b25ddbc460",
      "parents": [
        "82ba011b9041dd31c15e4f63797b08aa0a288e61"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Wed Dec 16 12:19:58 2009 +0100"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Dec 16 12:19:58 2009 +0100"
      },
      "message": "HWPOISON: abort on failed unmap\n\nDon\u0027t try to isolate a still mapped page. Otherwise we will hit the\nBUG_ON(page_mapped(page)) in __remove_from_page_cache().\n\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "82ba011b9041dd31c15e4f63797b08aa0a288e61",
      "tree": "7fd48d31ab507007c37f89a9dc41256b8585d8db",
      "parents": [
        "bd1ce5f91f545730df4af492f774d9d32f5da3cb"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "andi@firstfloor.org",
        "time": "Wed Dec 16 12:19:57 2009 +0100"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Dec 16 12:19:57 2009 +0100"
      },
      "message": "HWPOISON: Turn ref argument into flags argument\n\nNow that \"ref\" is just a boolean turn it into\na flags argument. First step is only a single flag\nthat makes the code\u0027s intention more clear, but more\nmay follow.\n\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "bd1ce5f91f545730df4af492f774d9d32f5da3cb",
      "tree": "7d25f35cda1f37e30fd21bb2375f2693837d5ec5",
      "parents": [
        "a7560fc80f33cab33176ee78f146df22b28e3338"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Wed Dec 16 12:19:57 2009 +0100"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Dec 16 12:19:57 2009 +0100"
      },
      "message": "HWPOISON: avoid grabbing the page count multiple times during madvise injection\n\nIf page is double referenced in madvise_hwpoison() and __memory_failure(),\nremove_mapping() will fail because it expects page_count\u003d2. Fix it by\nnot grabbing extra page count in __memory_failure().\n\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "a7560fc80f33cab33176ee78f146df22b28e3338",
      "tree": "1301b08559615aa5e7db0b11f03c98f3848c8142",
      "parents": [
        "9b9a29ecd75e310f75a9243e1c3538ad34598fcb"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Wed Dec 16 12:19:57 2009 +0100"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Dec 16 12:19:57 2009 +0100"
      },
      "message": "HWPOISON: return ENXIO on invalid page number\n\nUse a different errno than the usual EIO for invalid page numbers.\nThis is mainly for better reporting for the injector.\n\nThis also avoids calling action_result() with invalid pfn.\n\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "9b9a29ecd75e310f75a9243e1c3538ad34598fcb",
      "tree": "170f130a050f28af8bc944a23409a8591ba6d7fe",
      "parents": [
        "0e9052eb98a9986ec0669d030604f7a68f6df638"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Wed Dec 16 12:19:57 2009 +0100"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Dec 16 12:19:57 2009 +0100"
      },
      "message": "HWPOISON: remove the anonymous entry\n\n(PG_swapbacked \u0026\u0026 !PG_lru) pages should not happen.\nBetter to treat them as unknown pages.\n\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "588f9ce6ca61ecb4663ee6ef2f75d2d96c73151e",
      "tree": "4f68c55642c51312bdf6e49818b9889ec37a1ac3",
      "parents": [
        "7bc98b97ed5dfe710025414de771baa674998892"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "andi@firstfloor.org",
        "time": "Wed Dec 16 12:19:57 2009 +0100"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Dec 16 12:19:57 2009 +0100"
      },
      "message": "HWPOISON: Be more aggressive at freeing non LRU caches\n\nshake_page handles more types of page caches than lru_drain_all()\n\n- per cpu page allocator pages\n- per CPU LRU\n\nStops early when the page became free.\n\nUsed in followon patches.\n\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "ea637639591def87a54cea811cbac796980cb30d",
      "tree": "7ea3e4baf2ffade539ae30192521d331f8e863fa",
      "parents": [
        "5dc37642cbce34619e4588a9f0bdad1d2f870956"
      ],
      "author": {
        "name": "Jie Zhang",
        "email": "jie.zhang@analog.com",
        "time": "Mon Dec 14 18:00:02 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:24 2009 -0800"
      },
      "message": "nommu: fix malloc performance by adding uninitialized flag\n\nThe NOMMU code currently clears all anonymous mmapped memory.  While this\nis what we want in the default case, all memory allocation from userspace\nunder NOMMU has to go through this interface, including malloc() which is\nallowed to return uninitialized memory.  This can easily be a significant\nperformance penalty.  So for constrained embedded systems were security is\nirrelevant, allow people to avoid clearing memory unnecessarily.\n\nThis also alters the ELF-FDPIC binfmt such that it obtains uninitialised\nmemory for the brk and stack region.\n\nSigned-off-by: Jie Zhang \u003cjie.zhang@analog.com\u003e\nSigned-off-by: Robin Getz \u003crgetz@blackfin.uclinux.org\u003e\nSigned-off-by: Mike Frysinger \u003cvapier@gentoo.org\u003e\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: Paul Mundt \u003clethal@linux-sh.org\u003e\nAcked-by: Greg Ungerer \u003cgerg@snapgear.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5dc37642cbce34619e4588a9f0bdad1d2f870956",
      "tree": "00165a3a0b3d768abaf83cf44642f09398b989cc",
      "parents": [
        "d33b9f45bd24a6391bc05e2b5a13c1b5787ca9c2"
      ],
      "author": {
        "name": "Naoya Horiguchi",
        "email": "n-horiguchi@ah.jp.nec.com",
        "time": "Mon Dec 14 18:00:01 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:24 2009 -0800"
      },
      "message": "mm hugetlb: add hugepage support to pagemap\n\nThis patch enables extraction of the pfn of a hugepage from\n/proc/pid/pagemap in an architecture independent manner.\n\nDetails\n-------\nMy test program (leak_pagemap) works as follows:\n - creat() and mmap() a file on hugetlbfs (file size is 200MB \u003d\u003d 100 hugepages,)\n - read()/write() something on it,\n - call page-types with option -p,\n - munmap() and unlink() the file on hugetlbfs\n\nWithout my patches\n------------------\n$ ./leak_pagemap\n             flags page-count       MB  symbolic-flags                     long-symbolic-flags\n0x0000000000000000          1        0  __________________________________\n0x0000000000000804          1        0  __R________M______________________ referenced,mmap\n0x000000000000086c         81        0  __RU_lA____M______________________ referenced,uptodate,lru,active,mmap\n0x0000000000005808          5        0  ___U_______Ma_b___________________ uptodate,mmap,anonymous,swapbacked\n0x0000000000005868         12        0  ___U_lA____Ma_b___________________ uptodate,lru,active,mmap,anonymous,swapbacked\n0x000000000000586c          1        0  __RU_lA____Ma_b___________________ referenced,uptodate,lru,active,mmap,anonymous,swapbacked\n             total        101        0\n\nThe output of page-types don\u0027t show any hugepage.\n\nWith my patches\n---------------\n$ ./leak_pagemap\n             flags page-count       MB  symbolic-flags                     long-symbolic-flags\n0x0000000000000000          1        0  __________________________________\n0x0000000000030000      51100      199  ________________TG________________ compound_tail,huge\n0x0000000000028018        100        0  ___UD__________H_G________________ uptodate,dirty,compound_head,huge\n0x0000000000000804          1        0  __R________M______________________ referenced,mmap\n0x000000000000080c          1        0  __RU_______M______________________ referenced,uptodate,mmap\n0x000000000000086c         80        0  __RU_lA____M______________________ referenced,uptodate,lru,active,mmap\n0x0000000000005808          4        0  ___U_______Ma_b___________________ uptodate,mmap,anonymous,swapbacked\n0x0000000000005868         12        0  ___U_lA____Ma_b___________________ uptodate,lru,active,mmap,anonymous,swapbacked\n0x000000000000586c          1        0  __RU_lA____Ma_b___________________ referenced,uptodate,lru,active,mmap,anonymous,swapbacked\n             total      51300      200\n\nThe output of page-types shows 51200 pages contributing to hugepages,\ncontaining 100 head pages and 51100 tail pages as expected.\n\n[akpm@linux-foundation.org: build fix]\nSigned-off-by: Naoya Horiguchi \u003cn-horiguchi@ah.jp.nec.com\u003e\nCc: Andi Kleen \u003cak@linux.intel.com\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: Andy Whitcroft \u003capw@canonical.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d33b9f45bd24a6391bc05e2b5a13c1b5787ca9c2",
      "tree": "c79c7a452a18f513efbbc807440812432778332f",
      "parents": [
        "4f16fc107d9c9b8a72aa19b189a9216e90a7aaef"
      ],
      "author": {
        "name": "Naoya Horiguchi",
        "email": "n-horiguchi@ah.jp.nec.com",
        "time": "Mon Dec 14 17:59:59 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:24 2009 -0800"
      },
      "message": "mm: hugetlb: fix hugepage memory leak in walk_page_range()\n\nMost callers of pmd_none_or_clear_bad() check whether the target page is\nin a hugepage or not, but walk_page_range() do not check it.  So if we\nread /proc/pid/pagemap for the hugepage on x86 machine, the hugepage\nmemory is leaked as shown below.  This patch fixes it.\n\nDetails\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nMy test program (leak_pagemap) works as follows:\n - creat() and mmap() a file on hugetlbfs (file size is 200MB \u003d\u003d 100 hugepages,)\n - read()/write() something on it,\n - call page-types with option -p (walk around the page tables),\n - munmap() and unlink() the file on hugetlbfs\n\nWithout my patches\n------------------\n$ cat /proc/meminfo |grep \"HugePage\"\nHugePages_Total:    1000\nHugePages_Free:     1000\nHugePages_Rsvd:        0\nHugePages_Surp:        0\n$ ./leak_pagemap\n[snip output]\n$ cat /proc/meminfo |grep \"HugePage\"\nHugePages_Total:    1000\nHugePages_Free:      900\nHugePages_Rsvd:        0\nHugePages_Surp:        0\n$ ls /hugetlbfs/\n$\n\n100 hugepages are accounted as used while there is no file on hugetlbfs.\n\nWith my patches\n---------------\n$ cat /proc/meminfo |grep \"HugePage\"\nHugePages_Total:    1000\nHugePages_Free:     1000\nHugePages_Rsvd:        0\nHugePages_Surp:        0\n$ ./leak_pagemap\n[snip output]\n$ cat /proc/meminfo |grep \"HugePage\"\nHugePages_Total:    1000\nHugePages_Free:     1000\nHugePages_Rsvd:        0\nHugePages_Surp:        0\n$ ls /hugetlbfs\n$\n\nNo memory leaks.\n\nSigned-off-by: Naoya Horiguchi \u003cn-horiguchi@ah.jp.nec.com\u003e\nCc: Andi Kleen \u003cak@linux.intel.com\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: Andy Whitcroft \u003capw@canonical.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4f16fc107d9c9b8a72aa19b189a9216e90a7aaef",
      "tree": "7d2cd426ab80a30d3fc7584605738ad39a8b24be",
      "parents": [
        "536240f2bde98216feac87b4891d19a536b8884a"
      ],
      "author": {
        "name": "Naoya Horiguchi",
        "email": "n-horiguchi@ah.jp.nec.com",
        "time": "Mon Dec 14 17:59:58 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:24 2009 -0800"
      },
      "message": "mm: hugetlb: fix hugepage memory leak in mincore()\n\nMost callers of pmd_none_or_clear_bad() check whether the target page is\nin a hugepage or not, but mincore() and walk_page_range() do not check it.\n So if we use mincore() on a hugepage on x86 machine, the hugepage memory\nis leaked as shown below.  This patch fixes it by extending mincore()\nsystem call to support hugepages.\n\nDetails\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nMy test program (leak_mincore) works as follows:\n - creat() and mmap() a file on hugetlbfs (file size is 200MB \u003d\u003d 100 hugepages,)\n - read()/write() something on it,\n - call mincore() for first ten pages and printf() the values of *vec\n - munmap() and unlink() the file on hugetlbfs\n\nWithout my patch\n----------------\n$ cat /proc/meminfo| grep \"HugePage\"\nHugePages_Total:    1000\nHugePages_Free:     1000\nHugePages_Rsvd:        0\nHugePages_Surp:        0\n$ ./leak_mincore\nvec[0] 0\nvec[1] 0\nvec[2] 0\nvec[3] 0\nvec[4] 0\nvec[5] 0\nvec[6] 0\nvec[7] 0\nvec[8] 0\nvec[9] 0\n$ cat /proc/meminfo |grep \"HugePage\"\nHugePages_Total:    1000\nHugePages_Free:      999\nHugePages_Rsvd:        0\nHugePages_Surp:        0\n$ ls /hugetlbfs/\n$\n\nReturn values in *vec from mincore() are set to 0, while the hugepage\nshould be in memory, and 1 hugepage is still accounted as used while\nthere is no file on hugetlbfs.\n\nWith my patch\n-------------\n$ cat /proc/meminfo| grep \"HugePage\"\nHugePages_Total:    1000\nHugePages_Free:     1000\nHugePages_Rsvd:        0\nHugePages_Surp:        0\n$ ./leak_mincore\nvec[0] 1\nvec[1] 1\nvec[2] 1\nvec[3] 1\nvec[4] 1\nvec[5] 1\nvec[6] 1\nvec[7] 1\nvec[8] 1\nvec[9] 1\n$ cat /proc/meminfo |grep \"HugePage\"\nHugePages_Total:    1000\nHugePages_Free:     1000\nHugePages_Rsvd:        0\nHugePages_Surp:        0\n$ ls /hugetlbfs/\n$\n\nReturn value in *vec set to 1 and no memory leaks.\n\n[akpm@linux-foundation.org: cleanup]\n[akpm@linux-foundation.org: build fix]\nSigned-off-by: Naoya Horiguchi \u003cn-horiguchi@ah.jp.nec.com\u003e\nCc: Andi Kleen \u003cak@linux.intel.com\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: Andy Whitcroft \u003capw@canonical.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "536240f2bde98216feac87b4891d19a536b8884a",
      "tree": "e4755bb36c232262a2ebadb055d8947acb39b672",
      "parents": [
        "6927c1dd93fc982140f3a3742ac4b224cd3e02b2"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Mon Dec 14 17:59:56 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:24 2009 -0800"
      },
      "message": "hugetlb: abort a hugepage pool resize if a signal is pending\n\nIf a user asks for a hugepage pool resize but specified a large number,\nthe machine can begin trashing.  In response, they might hit ctrl-c but\nsignals are ignored and the pool resize continues until it fails an\nallocation.  This can take a considerable amount of time so this patch\naborts a pool resize if a signal is pending.\n\nSuggested by Dave Hansen.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Dave Hansen \u003cdave@linux.vnet.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": "6927c1dd93fc982140f3a3742ac4b224cd3e02b2",
      "tree": "c87db39ee74fcc825cf238ec289473f01f476897",
      "parents": [
        "418b27ef50e7e9b0c2fbd88db804bf065e5eb1a6"
      ],
      "author": {
        "name": "Lee Schermerhorn",
        "email": "Lee.Schermerhorn@hp.com",
        "time": "Mon Dec 14 17:59:55 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:23 2009 -0800"
      },
      "message": "mlock: replace stale comments in munlock_vma_page()\n\nCleanup stale comments on munlock_vma_page().\n\nSigned-off-by: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nAcked-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "418b27ef50e7e9b0c2fbd88db804bf065e5eb1a6",
      "tree": "24a4354bfa3bda6c763b859c235669c939c97ce4",
      "parents": [
        "4eb2b1dcd598f8489130405c81c60c289896d92a"
      ],
      "author": {
        "name": "Lee Schermerhorn",
        "email": "Lee.Schermerhorn@hp.com",
        "time": "Mon Dec 14 17:59:54 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:23 2009 -0800"
      },
      "message": "mm: remove unevictable_migrate_page function\n\nunevictable_migrate_page() in mm/internal.h is a relic of the since\nremoved UNEVICTABLE_LRU Kconfig option.  This patch removes the function\nand open codes the test in migrate_page_copy().\n\nSigned-off-by: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nReviewed-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nAcked-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4eb2b1dcd598f8489130405c81c60c289896d92a",
      "tree": "87bf0dec35f55688595447de65eb95952eb3dabc",
      "parents": [
        "70da2340fbc68e91e701762f785479ab495a0869"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Mon Dec 14 17:59:53 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:23 2009 -0800"
      },
      "message": "hugetlb: acquire the i_mmap_lock before walking the prio_tree to unmap a page\n\nWhen the owner of a mapping fails COW because a child process is holding a\nreference, the children VMAs are walked and the page is unmapped.  The\ni_mmap_lock is taken for the unmapping of the page but not the walking of\nthe prio_tree.  In theory, that tree could be changing if the lock is not\nheld.  This patch takes the i_mmap_lock properly for the duration of the\nprio_tree walk.\n\n[hugh.dickins@tiscali.co.uk: Spotted the problem in the first place]\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nAcked-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c9d0bf241451a3ab7d02e1652c22b80cd7d93e8f",
      "tree": "f72d7eedf3fee82193407c7190321399833f422c",
      "parents": [
        "62c0c2f198c1f2ead05c961e83ef486c45888325"
      ],
      "author": {
        "name": "Magnus Damm",
        "email": "damm@opensource.se",
        "time": "Mon Dec 14 17:59:49 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:21 2009 -0800"
      },
      "message": "mm: uncached vma support with writenotify\n\nModify the generic mmap() code to keep the cache attribute in\nvma-\u003evm_page_prot regardless if writenotify is enabled or not.  Without\nthis patch the cache configuration selected by f_op-\u003emmap() is overwritten\nif writenotify is enabled, making it impossible to keep the vma uncached.\n\nNeeded by drivers such as drivers/video/sh_mobile_lcdcfb.c which uses\ndeferred io together with uncached memory.\n\nSigned-off-by: Magnus Damm \u003cdamm@opensource.se\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: Paul Mundt \u003clethal@linux-sh.org\u003e\nCc: Jaya Kumar \u003cjayakumar.lkml@gmail.com\u003e\nCc: Arnd Bergmann \u003carnd@arndb.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "62c0c2f198c1f2ead05c961e83ef486c45888325",
      "tree": "d880a44df34d3cd14318efd1d5bee186a03cc841",
      "parents": [
        "b39415b2731d7dec5e612d2d12595da82399eedf"
      ],
      "author": {
        "name": "Huang Shijie",
        "email": "shijie8@gmail.com",
        "time": "Mon Dec 14 17:59:48 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:21 2009 -0800"
      },
      "message": "vmscan: simplify code\n\nSimplify the code for shrink_inactive_list().\n\nSigned-off-by: Huang Shijie \u003cshijie8@gmail.com\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nReviewed-by: Wu Fengguang \u003cfengguang.wu@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": "b39415b2731d7dec5e612d2d12595da82399eedf",
      "tree": "a8c59b1bc820d643d2e969f866a54147d7015c2e",
      "parents": [
        "8aa043d74559556a661cb2eb6e64497eec86ec77"
      ],
      "author": {
        "name": "Rik van Riel",
        "email": "riel@redhat.com",
        "time": "Mon Dec 14 17:59:48 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:21 2009 -0800"
      },
      "message": "vmscan: do not evict inactive pages when skipping an active list scan\n\nIn AIM7 runs, recent kernels start swapping out anonymous pages well\nbefore they should.  This is due to shrink_list falling through to\nshrink_inactive_list if !inactive_anon_is_low(zone, sc), when all we\nreally wanted to do is pre-age some anonymous pages to give them extra\ntime to be referenced while on the inactive list.\n\nThe obvious fix is to make sure that shrink_list does not fall through to\nscanning/reclaiming inactive pages when we called it to scan one of the\nactive lists.\n\nThis change should be safe because the loop in shrink_zone ensures that we\nwill still shrink the anon and file inactive lists whenever we should.\n\n[kosaki.motohiro@jp.fujitsu.com: inactive_file_is_low() should be inactive_anon_is_low()]\nReported-by: Larry Woodman \u003clwoodman@redhat.com\u003e\nSigned-off-by: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Tomasz Chmielewski \u003cmangoo@wpkg.org\u003e\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8aa043d74559556a661cb2eb6e64497eec86ec77",
      "tree": "73559e8b70d2f2d139ca3c404687873d34ff7b36",
      "parents": [
        "9ae49fab239fb49de92a657c7426271e0793c4e1"
      ],
      "author": {
        "name": "Jan Beulich",
        "email": "JBeulich@novell.com",
        "time": "Mon Dec 14 17:59:46 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:20 2009 -0800"
      },
      "message": "mm/bootmem.c: properly __init-annotate helper functions\n\nSigned-off-by: Jan Beulich \u003cjbeulich@novell.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "caed0f486e582eeeb6e3546417fd758230fe4ad9",
      "tree": "203d4724dcfaae3ad4b349e1971bb3efc0da7db2",
      "parents": [
        "23ce932a5e3ec3b9f06e92c8797d834d43abfb0f"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Mon Dec 14 17:59:45 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:20 2009 -0800"
      },
      "message": "mm: simplify try_to_unmap_one()\n\nSWAP_MLOCK mean \"We marked the page as PG_MLOCK, please move it to\nunevictable-lru\". So, following code is easy confusable.\n\n        if (vma-\u003evm_flags \u0026 VM_LOCKED) {\n                ret \u003d SWAP_MLOCK;\n                goto out_unmap;\n        }\n\nPlus, if the VMA doesn\u0027t have VM_LOCKED, We don\u0027t need to check\nthe needed of calling mlock_vma_page().\n\nAlso, add some commentary to try_to_unmap_one().\n\nAcked-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "23ce932a5e3ec3b9f06e92c8797d834d43abfb0f",
      "tree": "a966c72393e3f6111e383528055518e251eeda9c",
      "parents": [
        "b76c8cfbff94263fdf2f408e94b78b049c24a9dc"
      ],
      "author": {
        "name": "Rakib Mullick",
        "email": "rakib.mullick@gmail.com",
        "time": "Mon Dec 14 17:59:44 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:20 2009 -0800"
      },
      "message": "mm: fix section mismatch in memory_hotplug.c\n\n__free_pages_bootmem() is a __meminit function - which has been called\nfrom put_pages_bootmem thus causes a section mismatch warning.\n\n We were warned by the following warning:\n\n  LD      mm/built-in.o\nWARNING: mm/built-in.o(.text+0x26b22): Section mismatch in reference\nfrom the function put_page_bootmem() to the function\n.meminit.text:__free_pages_bootmem()\nThe function put_page_bootmem() references\nthe function __meminit __free_pages_bootmem().\nThis is often because put_page_bootmem lacks a __meminit\nannotation or the annotation of __free_pages_bootmem is wrong.\n\nSigned-off-by: Rakib Mullick \u003crakib.mullick@gmail.com\u003e\nCc: Yasunori Goto \u003cy-goto@jp.fujitsu.com\u003e\nCc: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b76c8cfbff94263fdf2f408e94b78b049c24a9dc",
      "tree": "2252a29e2cfaddf08060174afd635e5f8ab66c1f",
      "parents": [
        "b4e655a4aaa327810110457cef92681447dd13e4"
      ],
      "author": {
        "name": "Larry Woodman",
        "email": "lwoodman@redhat.com",
        "time": "Mon Dec 14 17:59:37 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:20 2009 -0800"
      },
      "message": "hugetlb: prevent deadlock in __unmap_hugepage_range() when alloc_huge_page() fails\n\nhugetlb_fault() takes the mm-\u003epage_table_lock spinlock then calls\nhugetlb_cow().  If the alloc_huge_page() in hugetlb_cow() fails due to an\ninsufficient huge page pool it calls unmap_ref_private() with the\nmm-\u003epage_table_lock held.  unmap_ref_private() then calls\nunmap_hugepage_range() which tries to acquire the mm-\u003epage_table_lock.\n\n[\u003cffffffff810928c3\u003e] print_circular_bug_tail+0x80/0x9f\n [\u003cffffffff8109280b\u003e] ? check_noncircular+0xb0/0xe8\n [\u003cffffffff810935e0\u003e] __lock_acquire+0x956/0xc0e\n [\u003cffffffff81093986\u003e] lock_acquire+0xee/0x12e\n [\u003cffffffff8111a7a6\u003e] ? unmap_hugepage_range+0x3e/0x84\n [\u003cffffffff8111a7a6\u003e] ? unmap_hugepage_range+0x3e/0x84\n [\u003cffffffff814c348d\u003e] _spin_lock+0x40/0x89\n [\u003cffffffff8111a7a6\u003e] ? unmap_hugepage_range+0x3e/0x84\n [\u003cffffffff8111afee\u003e] ? alloc_huge_page+0x218/0x318\n [\u003cffffffff8111a7a6\u003e] unmap_hugepage_range+0x3e/0x84\n [\u003cffffffff8111b2d0\u003e] hugetlb_cow+0x1e2/0x3f4\n [\u003cffffffff8111b935\u003e] ? hugetlb_fault+0x453/0x4f6\n [\u003cffffffff8111b962\u003e] hugetlb_fault+0x480/0x4f6\n [\u003cffffffff8111baee\u003e] follow_hugetlb_page+0x116/0x2d9\n [\u003cffffffff814c31a7\u003e] ? _spin_unlock_irq+0x3a/0x5c\n [\u003cffffffff81107b4d\u003e] __get_user_pages+0x2a3/0x427\n [\u003cffffffff81107d0f\u003e] get_user_pages+0x3e/0x54\n [\u003cffffffff81040b8b\u003e] get_user_pages_fast+0x170/0x1b5\n [\u003cffffffff81160352\u003e] dio_get_page+0x64/0x14a\n [\u003cffffffff8116112a\u003e] __blockdev_direct_IO+0x4b7/0xb31\n [\u003cffffffff8115ef91\u003e] blkdev_direct_IO+0x58/0x6e\n [\u003cffffffff8115e0a4\u003e] ? blkdev_get_blocks+0x0/0xb8\n [\u003cffffffff810ed2c5\u003e] generic_file_aio_read+0xdd/0x528\n [\u003cffffffff81219da3\u003e] ? avc_has_perm+0x66/0x8c\n [\u003cffffffff81132842\u003e] do_sync_read+0xf5/0x146\n [\u003cffffffff8107da00\u003e] ? autoremove_wake_function+0x0/0x5a\n [\u003cffffffff81211857\u003e] ? security_file_permission+0x24/0x3a\n [\u003cffffffff81132fd8\u003e] vfs_read+0xb5/0x126\n [\u003cffffffff81133f6b\u003e] ? fget_light+0x5e/0xf8\n [\u003cffffffff81133131\u003e] sys_read+0x54/0x8c\n [\u003cffffffff81011e42\u003e] system_call_fastpath+0x16/0x1b\n\nThis can be fixed by dropping the mm-\u003epage_table_lock around the call to\nunmap_ref_private() if alloc_huge_page() fails, its dropped right below in\nthe normal path anyway.  However, earlier in the that function, it\u0027s also\npossible to call into the page allocator with the same spinlock held.\n\nWhat this patch does is drop the spinlock before the page allocator is\npotentially entered.  The check for page allocation failure can be made\nwithout the page_table_lock as well as the copy of the huge page.  Even if\nthe PTE changed while the spinlock was held, the consequence is that a\nhuge page is copied unnecessarily.  This resolves both the double taking\nof the lock and sleeping with the spinlock held.\n\n[mel@csn.ul.ie: Cover also the case where process can sleep with spinlock]\nSigned-off-by: Larry Woodman \u003clwooman@redhat.com\u003e\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nAcked-by: Adam Litke \u003cagl@us.ibm.com\u003e\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nCc: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\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": "b4e655a4aaa327810110457cef92681447dd13e4",
      "tree": "86f32571acdf688874967c5e597319a4c05ee888",
      "parents": [
        "d0f209f68f80f9a152799760c230019e7f270b2a"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Mon Dec 14 17:59:35 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:20 2009 -0800"
      },
      "message": "mm: memory_hotplug: make offline_pages() static\n\nIt has no references outside memory_hotplug.c.\n\nCc: \"Rafael J. Wysocki\" \u003crjw@sisk.pl\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: Gerald Schaefer \u003cgerald.schaefer@de.ibm.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Yasunori Goto \u003cy-goto@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    }
  ],
  "next": "d0f209f68f80f9a152799760c230019e7f270b2a"
}
