)]}'
{
  "log": [
    {
      "commit": "9732b6112343df2872518ec6701c8ef729310a05",
      "tree": "9e3dcc461845038da4730c2062eee546348ca445",
      "parents": [
        "9e9abecfc0ff3a9ad2ead954b37bbfcb863c775e",
        "1a9a3e76dde191f82f7a8a66059dcbb4a9f63ff3"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 18 08:37:01 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 18 08:37:01 2008 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/mingo/linux-2.6-kgdb\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/mingo/linux-2.6-kgdb:\n  kgdb: always use icache flush for sw breakpoints\n  kgdb: fix SMP NMI kgdb_handle_exception exit race\n  kgdb: documentation fixes\n  kgdb: allow static kgdbts boot configuration\n  kgdb: add documentation\n  kgdb: Kconfig fix\n  kgdb: add kgdb internal test suite\n  kgdb: fix several kgdb regressions\n  kgdb: kgdboc pl011 I/O module\n  kgdb: fix optional arch functions and probe_kernel_*\n  kgdb: add x86 HW breakpoints\n  kgdb: print breakpoint removed on exception\n  kgdb: clocksource watchdog\n  kgdb: fix NMI hangs\n  kgdb: fix kgdboc dynamic module configuration\n  kgdb: document parameters\n  x86: kgdb support\n  consoles: polling support, kgdboc\n  kgdb: core\n  uaccess: add probe_kernel_write()\n"
    },
    {
      "commit": "7d939fbdfee49e5c06bd27214d25f726fb87a25a",
      "tree": "8366a5e7ec36b3b0162fd54ec4b434a2b840e7ba",
      "parents": [
        "18c98b65279c00c3c983a4525161207f1aa6a04b",
        "0f389ec63077521166f071e1e970aed36147fd45"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 18 08:19:00 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 18 08:19:00 2008 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/slab-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/slab-2.6:\n  slub: No need for per node slab counters if !SLUB_DEBUG\n  slub: Move map/flag clearing to __free_slab\n  slub: Fixes to per cpu stat output in sysfs\n  slub: Deal with config variable dependencies\n  slub: Reduce #ifdef ZONE_DMA by moving kmalloc_caches_dma near dma logic\n  slub: Initialize per-cpu stats\n"
    },
    {
      "commit": "b4b8ac524d9b6ed7229017145afa1d7afbea4a48",
      "tree": "c1b8ef7b22ebc956c0effd0ad6b5a37290f86bda",
      "parents": [
        "64e9ee3095b61d0300ea548216a57d2536611309"
      ],
      "author": {
        "name": "Jason Wessel",
        "email": "jason.wessel@windriver.com",
        "time": "Wed Feb 20 13:33:38 2008 -0600"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Apr 17 20:05:39 2008 +0200"
      },
      "message": "kgdb: fix optional arch functions and probe_kernel_*\n\nFix two regressions dealing with the kgdb core.\n\n1) kgdb_skipexception and kgdb_post_primary_code are optional\nfunctions that are only required on archs that need special exception\nfixups.\n\n2) The kernel address space scope must be set on any probe_kernel_*\nfunction or archs such as ARCH\u003darm will not allow access to the kernel\nmemory space.  As an example, it is required to allow the full kernel\naddress space is when you the kernel debugger to inspect a system\ncall.\n\nSigned-off-by: Jason Wessel \u003cjason.wessel@windriver.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "c33fa9f5609e918824446ef9a75319d4a802f1f4",
      "tree": "ab711865ba14d4e3d21c2e480e8b113fc73e08a2",
      "parents": [
        "4b119e21d0c66c22e8ca03df05d9de623d0eb50f"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Apr 17 20:05:36 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Apr 17 20:05:36 2008 +0200"
      },
      "message": "uaccess: add probe_kernel_write()\n\nadd probe_kernel_read() and probe_kernel_write().\n\nUninlined and restricted to kernel range memory only, as suggested\nby Linus.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nReviewed-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "91446b064c748fc2a238fd68b677c9671e536bfd",
      "tree": "44cdc857eec3360e6def1e283043276f145fe000",
      "parents": [
        "b82d4043b3550df00a036f6aa2c8ab9578a283ef"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Tue Apr 15 14:34:42 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 15 19:35:41 2008 -0700"
      },
      "message": "add \"Isolate\" migratetype name to /proc/pagetypeinfo\n\nIn a5d76b54a3f3a40385d7f76069a2feac9f1bad63 (memory unplug: page isolation by\nKAMEZAWA Hiroyuki), \"isolate\" migratetype added.  but unfortunately, it\ndoesn\u0027t treat /proc/pagetypeinfo display logic.\n\nthis patch add \"Isolate\" to pagetype name field.\n\n/proc/pagetype\nbefore:\n------------------------------------------------------------------------------------------------------------------------\nFree pages count per migrate type at order       0      1      2      3      4      5      6      7      8      9     10\nNode    0, zone      DMA, type    Unmovable      1      2      2      2      1      2      2      1      1      0      0\nNode    0, zone      DMA, type  Reclaimable      0      0      0      0      0      0      0      0      0      0      0\nNode    0, zone      DMA, type      Movable      2      3      3      1      3      3      2      0      0      0      0\nNode    0, zone      DMA, type      Reserve      0      0      0      0      0      0      0      0      0      0      1\nNode    0, zone      DMA, type       \u003cNULL\u003e      0      0      0      0      0      0      0      0      0      0      0\nNode    0, zone   Normal, type    Unmovable      1      9      7      4      1      1      1      1      0      0      0\nNode    0, zone   Normal, type  Reclaimable      5      2      0      0      1      1      0      0      0      1      0\nNode    0, zone   Normal, type      Movable      0      1      1      0      0      0      1      0      0      1     60\nNode    0, zone   Normal, type      Reserve      0      0      0      0      0      0      0      0      0      0      1\nNode    0, zone   Normal, type       \u003cNULL\u003e      0      0      0      0      0      0      0      0      0      0      0\nNode    0, zone  HighMem, type    Unmovable      0      0      1      1      1      0      1      1      2      2      0\nNode    0, zone  HighMem, type  Reclaimable      0      0      0      0      0      0      0      0      0      0      0\nNode    0, zone  HighMem, type      Movable    236     62      6      2      2      1      1      0      1      1     16\nNode    0, zone  HighMem, type      Reserve      0      0      0      0      0      0      0      0      0      0      1\nNode    0, zone  HighMem, type       \u003cNULL\u003e      0      0      0      0      0      0      0      0      0      0      0\n\nNumber of blocks type     Unmovable  Reclaimable      Movable      Reserve       \u003cNULL\u003e\nNode 0, zone      DMA            1            0            2       1            0\nNode 0, zone   Normal           10           40          169       1            0\nNode 0, zone  HighMem            2            0          283       1            0\n\nafter:\n------------------------------------------------------------------------------------------------------------------------\nFree pages count per migrate type at order       0      1      2      3      4      5      6      7      8      9     10\nNode    0, zone      DMA, type    Unmovable      1      2      2      2      1      2      2      1      1      0      0\nNode    0, zone      DMA, type  Reclaimable      0      0      0      0      0      0      0      0      0      0      0\nNode    0, zone      DMA, type      Movable      2      3      3      1      3      3      2      0      0      0      0\nNode    0, zone      DMA, type      Reserve      0      0      0      0      0      0      0      0      0      0      1\nNode    0, zone      DMA, type      Isolate      0      0      0      0      0      0      0      0      0      0      0\nNode    0, zone   Normal, type    Unmovable      0      2      1      1      0      1      0      0      0      0      0\nNode    0, zone   Normal, type  Reclaimable      1      1      1      1      1      0      1      1      1      0      0\nNode    0, zone   Normal, type      Movable      0      1      1      1      0      1      0      1      0      0    196\nNode    0, zone   Normal, type      Reserve      0      0      0      0      0      0      0      0      0      0      1\nNode    0, zone   Normal, type      Isolate      0      0      0      0      0      0      0      0      0      0      0\nNode    0, zone  HighMem, type    Unmovable      0      1      0      0      0      1      1      1      2      2      0\nNode    0, zone  HighMem, type  Reclaimable      0      0      0      0      0      0      0      0      0      0      0\nNode    0, zone  HighMem, type      Movable      1      0      1      1      0      0      0      0      1      0    200\nNode    0, zone  HighMem, type      Reserve      0      0      0      0      0      0      0      0      0      0      1\nNode    0, zone  HighMem, type      Isolate      0      0      0      0      0      0      0      0      0      0      0\n\nNumber of blocks type     Unmovable  Reclaimable      Movable      Reserve      Isolate\nNode 0, zone      DMA            1            0            2       1            0\nNode 0, zone   Normal            8            4          207       1            0\nNode 0, zone  HighMem            2            0          283       1            0\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e115f2d89253490fb2dbf304b627f8d908df26f1",
      "tree": "cfed18e5ac01247f6edbf0d72b418b9e7e110265",
      "parents": [
        "e169c139642fb4c682ec12a409725508dbefa520"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Tue Apr 15 14:34:37 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 15 19:35:40 2008 -0700"
      },
      "message": "memcg: fix oops in oom handling\n\nWhen I used a test program to fork mass processes and immediately move them to\na cgroup where the memory limit is low enough to trigger oom kill, I got oops:\n\nBUG: unable to handle kernel NULL pointer dereference at 0000000000000808\nIP: [\u003cffffffff8045c47f\u003e] _spin_lock_irqsave+0x8/0x18\nPGD 4c95f067 PUD 4406c067 PMD 0\nOops: 0002 [1] SMP\nCPU 2\nModules linked in:\n\nPid: 11973, comm: a.out Not tainted 2.6.25-rc7 #5\nRIP: 0010:[\u003cffffffff8045c47f\u003e]  [\u003cffffffff8045c47f\u003e] _spin_lock_irqsave+0x8/0x18\nRSP: 0018:ffff8100448c7c30  EFLAGS: 00010002\nRAX: 0000000000000202 RBX: 0000000000000009 RCX: 000000000001c9f3\nRDX: 0000000000000100 RSI: 0000000000000001 RDI: 0000000000000808\nRBP: ffff81007e444080 R08: 0000000000000000 R09: ffff8100448c7900\nR10: ffff81000105f480 R11: 00000100ffffffff R12: ffff810067c84140\nR13: 0000000000000001 R14: ffff8100441d0018 R15: ffff81007da56200\nFS:  00007f70eb1856f0(0000) GS:ffff81007fbad3c0(0000) knlGS:0000000000000000\nCS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b\nCR2: 0000000000000808 CR3: 000000004498a000 CR4: 00000000000006e0\nDR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000\nDR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400\nProcess a.out (pid: 11973, threadinfo ffff8100448c6000, task ffff81007da533e0)\nStack:  ffffffff8023ef5a 00000000000000d0 ffffffff80548dc0 00000000000000d0\n ffff810067c84140 ffff81007e444080 ffffffff8026cef9 00000000000000d0\n ffff8100441d0000 00000000000000d0 ffff8100441d0000 ffff8100505445c0\nCall Trace:\n [\u003cffffffff8023ef5a\u003e] ? force_sig_info+0x25/0xb9\n [\u003cffffffff8026cef9\u003e] ? oom_kill_task+0x77/0xe2\n [\u003cffffffff8026d696\u003e] ? mem_cgroup_out_of_memory+0x55/0x67\n [\u003cffffffff802910ad\u003e] ? mem_cgroup_charge_common+0xec/0x202\n [\u003cffffffff8027997b\u003e] ? handle_mm_fault+0x24e/0x77f\n [\u003cffffffff8022c4af\u003e] ? default_wake_function+0x0/0xe\n [\u003cffffffff8027a17a\u003e] ? get_user_pages+0x2ce/0x3af\n [\u003cffffffff80290fee\u003e] ? mem_cgroup_charge_common+0x2d/0x202\n [\u003cffffffff8027a441\u003e] ? make_pages_present+0x8e/0xa4\n [\u003cffffffff8027d1ab\u003e] ? mmap_region+0x373/0x429\n [\u003cffffffff8027d7eb\u003e] ? do_mmap_pgoff+0x2ff/0x364\n [\u003cffffffff80210471\u003e] ? sys_mmap+0xe5/0x111\n [\u003cffffffff8020bfc9\u003e] ? tracesys+0xdc/0xe1\n\nCode: 00 00 01 48 8b 3c 24 e9 46 d4 dd ff f0 ff 07 48 8b 3c 24 e9 3a d4 dd ff fe 07 48 8b 3c 24 e9 2f d4 dd ff 9c 58 fa ba 00 01 00 00 \u003cf0\u003e 66 0f c1 17 38 f2 74 06 f3 90 8a 17 eb f6 c3 fa b8 00 01 00\nRIP  [\u003cffffffff8045c47f\u003e] _spin_lock_irqsave+0x8/0x18\n RSP \u003cffff8100448c7c30\u003e\nCR2: 0000000000000808\n---[ end trace c3702fa668021ea4 ]---\n\nIt\u0027s reproducable in a x86_64 box, but doesn\u0027t happen in x86_32.\n\nThis is because tsk-\u003esighand is not guarded by RCU, so we have to\nhold tasklist_lock, just as what out_of_memory() does.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: Pavel Emelianov \u003cxemul@openvz.org\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: David Rientjes \u003crientjes@cs.washington.edu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "bead9a3abd15710b0bdfd418daef606722d86282",
      "tree": "7557956e8dfe027c0ecf2f2ed759169a4e02a266",
      "parents": [
        "cf39cc3b56bc4a562db6242d3069f65034ec7549"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Apr 16 01:40:00 2008 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 15 19:30:19 2008 -0700"
      },
      "message": "mm: sparsemem memory_present() fix\n\nFix memory corruption and crash on 32-bit x86 systems.\n\nIf a !PAE x86 kernel is booted on a 32-bit system with more than 4GB of\nRAM, then we call memory_present() with a start/end that goes outside\nthe scope of MAX_PHYSMEM_BITS.\n\nThat causes this loop to happily walk over the limit of the sparse\nmemory section map:\n\n    for (pfn \u003d start; pfn \u003c end; pfn +\u003d PAGES_PER_SECTION) {\n                unsigned long section \u003d pfn_to_section_nr(pfn);\n                struct mem_section *ms;\n\n                sparse_index_init(section, nid);\n                set_section_nid(section, nid);\n\n                ms \u003d __nr_to_section(section);\n                if (!ms-\u003esection_mem_map)\n                        ms-\u003esection_mem_map \u003d sparse_encode_early_nid(nid) |\n\t\t\t                                SECTION_MARKED_PRESENT;\n\n\u0027ms\u0027 will be out of bounds and we\u0027ll corrupt a small amount of memory by\nencoding the node ID and writing SECTION_MARKED_PRESENT (\u003d\u003d0x1) over it.\n\nThe corruption might happen when encoding a non-zero node ID, or due to\nthe SECTION_MARKED_PRESENT which is 0x1:\n\n\tmmzone.h:#define\tSECTION_MARKED_PRESENT\t(1UL\u003c\u003c0)\n\nThe fix is to sanity check anything the architecture passes to\nsparsemem.\n\nThis bug seems to be rather old (as old as sparsemem support itself),\nbut the exact incarnation depended on random details like configs, which\nmade this bug more prominent in v2.6.25-to-be.\n\nAn additional enhancement might be to print a warning about ignored or\ntrimmed memory ranges.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nTested-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nCc: Yinghai Lu \u003cYinghai.Lu@sun.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0f389ec63077521166f071e1e970aed36147fd45",
      "tree": "b1f2159c652c48160dde31e6740870ae0589dffb",
      "parents": [
        "49bd5221ce8fb55d12c04a3ffd375201c5bbfb7a"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Apr 14 18:53:02 2008 +0300"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Mon Apr 14 18:53:02 2008 +0300"
      },
      "message": "slub: No need for per node slab counters if !SLUB_DEBUG\n\nThe per node counters are used mainly for showing data through the sysfs API.\nIf that API is not compiled in then there is no point in keeping track of this\ndata. Disable counters for the number of slabs and the number of total slabs\nif !SLUB_DEBUG. Incrementing the per node counters is also accessing a\npotentially contended cacheline so this could actually be a performance\nbenefit to embedded systems.\n\nSLABINFO support is also affected. It now must depends on SLUB_DEBUG (which\nis on by default).\n\nPatch also avoids a check for a NULL kmem_cache_node pointer in new_slab()\nif the system is not compiled with NUMA support.\n\n[penberg@cs.helsinki.fi: fix oops and move -\u003enr_slabs into CONFIG_SLUB_DEBUG]\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\n"
    },
    {
      "commit": "49bd5221ce8fb55d12c04a3ffd375201c5bbfb7a",
      "tree": "8569f6898326ae3ccbd24309dc0dd53707b11220",
      "parents": [
        "50ef37b96c11e76625067ae413dc54585ea22585"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Apr 14 18:52:18 2008 +0300"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Mon Apr 14 18:52:18 2008 +0300"
      },
      "message": "slub: Move map/flag clearing to __free_slab\n\n__free_slab does some diagnostics. The resetting of mapcount etc\nin discard_slab() can interfere with debug processing. So move\nthe reset immediately before the page is freed.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\n"
    },
    {
      "commit": "50ef37b96c11e76625067ae413dc54585ea22585",
      "tree": "73db9f19fe8d4b0d153711b0002948e13a8d5681",
      "parents": [
        "5b06c853ad447636e31d105e95c48ae9abb6bfb5"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Apr 14 18:52:05 2008 +0300"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Mon Apr 14 18:52:05 2008 +0300"
      },
      "message": "slub: Fixes to per cpu stat output in sysfs\n\nOnly output per cpu stats if the kernel is build for SMP.\n\nUse a capital \"C\" as a leading character for the processor number\n(same as the numa statistics that also use a capital letter \"N\").\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\n"
    },
    {
      "commit": "5b06c853ad447636e31d105e95c48ae9abb6bfb5",
      "tree": "cf4d606b54659833a98a4b66c76ee3562bcd1062",
      "parents": [
        "4097d6017576a5e138f442f5e3c393ad00d10f58"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Apr 14 18:51:34 2008 +0300"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Mon Apr 14 18:51:34 2008 +0300"
      },
      "message": "slub: Deal with config variable dependencies\n\ncount_partial() is used by both slabinfo and the sysfs proc support. Move\nthe function directly before the beginning of the sysfs code so that it can\nbe easily found. Rework the preprocessor conditional to take into account\nthat slub sysfs support depends on CONFIG_SYSFS *and* CONFIG_SLUB_DEBUG.\n\nMake CONFIG_SLUB_STATS depend on CONFIG_SLUB_DEBUG and CONFIG_SYSFS. There\nis no point of keeping statistics if no one can restrive them.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\n"
    },
    {
      "commit": "4097d6017576a5e138f442f5e3c393ad00d10f58",
      "tree": "1c9f90fa4ec806ff0d91f25883158b86e46b62ec",
      "parents": [
        "62f75532b583c03840f31e40386ce2df73be9ca0"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Apr 14 18:51:18 2008 +0300"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Mon Apr 14 18:51:18 2008 +0300"
      },
      "message": "slub: Reduce #ifdef ZONE_DMA by moving kmalloc_caches_dma near dma logic\n\nMove the definition of kmalloc_caches_dma() into a later #ifdef CONFIG_ZONE_DMA.\nThis saves one #ifdef and leaves us with a total of two #ifdefs for dma slab support.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\n"
    },
    {
      "commit": "62f75532b583c03840f31e40386ce2df73be9ca0",
      "tree": "22f532faf421878b593b467a9d8bf29d6769c30f",
      "parents": [
        "120dd64cacd4fb796bca0acba3665553f1d9ecaa"
      ],
      "author": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Mon Apr 14 18:50:44 2008 +0300"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Mon Apr 14 18:50:44 2008 +0300"
      },
      "message": "slub: Initialize per-cpu stats\n\nAs spotted by kmemcheck, we need to initialize the per-CPU -\u003estat array before\nusing it.\n\n[kmem_cache_cpu structures are usually allocated from arrays defined via\nDEFINE_PER_CPU that are zeroed so we have not noticed this so far --cl].\n\nReported-by: Vegard Nossum \u003cvegard.nossum@gmail.com\u003e\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\n"
    },
    {
      "commit": "41e3355de052693c7a0cad74b845148d262edadf",
      "tree": "7d40851015f1a90a9c6386c3e880ed23ac5127cb",
      "parents": [
        "bb070e43497d4fcfea7d8b52003fe1376c218343"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Tue Apr 08 17:41:54 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 08 18:25:53 2008 -0700"
      },
      "message": "memcg: fix node_state handling\n\nThis should be N_NORMAL_MEMORY.\n\nN_NORMAL_MEMORY is \"true\" if a node has memory for the kernel.  N_HIGH_MEMORY\nis \"true\" if a node has memory for HIGHMEM.  (If CONFIG_HIGHMEM\u003dn, always\n\"true\")\n\nThis check is used for testing whether we can use kmalloc_node() on a node.\nThen, if there is a node which only contains HIGHMEM, the system will call\nkmalloc_node() which doesn\u0027t contain memory for the kernel.  If it happens\nunder SLUB, the kernel will panic.  I think this only happens on x86_32-numa.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4077960e2a38ec59096ff993cd080056e17f3707",
      "tree": "ffc0bdd5e74b2247add9fb30f455ee57cf648a41",
      "parents": [
        "8bab8dded67d026c39367bbd5e27d2f6c556c38e"
      ],
      "author": {
        "name": "Balbir Singh",
        "email": "balbir@linux.vnet.ibm.com",
        "time": "Fri Apr 04 14:29:59 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 04 14:46:26 2008 -0700"
      },
      "message": "memory controller: make memory resource control aware of boot options\n\nA boot option for the memory controller was discussed on lkml.  It is a good\nidea to add it, since it saves memory for people who want to turn off the\nmemory controller.\n\nBy default the option is on for the following two reasons:\n\n1. It provides compatibility with the current scheme where the memory\n   controller turns on if the config option is enabled\n2. It allows for wider testing of the memory controller, once the config\n   option is enabled\n\nWe still allow the create, destroy callbacks to succeed, since they are not\naware of boot options.  We do not populate the directory will memory resource\ncontroller specific files.\n\nSigned-off-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Sudhir Kumar \u003cskumar@linux.vnet.ibm.com\u003e\nCc: YAMAMOTO Takashi \u003cyamamoto@valinux.co.jp\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": "00460dd5f4b886f72699f2245206c935f9fd4b82",
      "tree": "f302a49473cbe6b1d3e63faf45fda143de543e81",
      "parents": [
        "670e23ceb1aefacfe9aeccfc871e28e9cf973286"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Tue Apr 01 12:07:41 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 01 12:44:06 2008 -0700"
      },
      "message": "Fix undefined count_partial if !CONFIG_SLABINFO\n\nSmall typo in the patch recently merged to avoid the unused symbol\nmessage for count_partial(). Discussion thread with confirmation of fix at\nhttp://marc.info/?t\u003d120696854400001\u0026r\u003d1\u0026w\u003d2\n\nTypo in the check if we need the count_partial function that was\nintroduced by 53625b4204753b904addd40ca96d9ba802e6977d\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9dce07f1a441b77a15631cf0ed0238e0baa7ed64",
      "tree": "2131d670d31ae4727b4234e3e0ad176ae103d571",
      "parents": [
        "1076d17ac70d1bb28fadc6f4bd96977b56897025"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@ftp.linux.org.uk",
        "time": "Sat Mar 29 03:07:28 2008 +0000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Mar 30 14:18:41 2008 -0700"
      },
      "message": "NULL noise: fs/*, mm/*, kernel/*\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e72e9c23ee025a4c063ca112ba0a6059f9ecc9b7",
      "tree": "d4b7091cf0e021fec776cbefbdb1ea8aec116d6a",
      "parents": [
        "8536bbaff44addff8d2ac66da1156c95b1e00c4e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 27 20:56:33 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 27 20:56:33 2008 -0700"
      },
      "message": "Revert \"SLUB: remove useless masking of GFP_ZERO\"\n\nThis reverts commit 3811dbf67162bd08412f1b0e02e554f353e93bdb.\n\nThe masking was not at all useless, and it was sensible.  We handle\nGFP_ZERO in the caller, and passing it down to any page allocator logic\nis buggy and wrong.\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "11320d17ce4ecf8002dc8f9b6f1e49cd18e45a94",
      "tree": "815d7f4f9a10173b30fc7d5eb8b53b50b71abb53",
      "parents": [
        "a1de09195b294c6a4c5dec8c8defd0a2688d3f75"
      ],
      "author": {
        "name": "Nishanth Aravamudan",
        "email": "nacc@us.ibm.com",
        "time": "Wed Mar 26 14:40:20 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 26 15:01:33 2008 -0700"
      },
      "message": "hugetlb: fix potential livelock in return_unused_surplus_hugepages()\n\nRunning the counters testcase from libhugetlbfs results in on 2.6.25-rc5\nand 2.6.25-rc5-mm1:\n\n    BUG: soft lockup - CPU#3 stuck for 61s! [counters:10531]\n    NIP: c0000000000d1f3c LR: c0000000000d1f2c CTR: c0000000001b5088\n    REGS: c000005db12cb360 TRAP: 0901   Not tainted  (2.6.25-rc5-autokern1)\n    MSR: 8000000000009032 \u003cEE,ME,IR,DR\u003e  CR: 48008448  XER: 20000000\n    TASK \u003d c000005dbf3d6000[10531] \u0027counters\u0027 THREAD: c000005db12c8000 CPU: 3\n    GPR00: 0000000000000004 c000005db12cb5e0 c000000000879228 0000000000000004\n    GPR04: 0000000000000010 0000000000000000 0000000000200200 0000000000100100\n    GPR08: c0000000008aba10 000000000000ffff 0000000000000004 0000000000000000\n    GPR12: 0000000028000442 c000000000770080\n    NIP [c0000000000d1f3c] .return_unused_surplus_pages+0x84/0x18c\n    LR [c0000000000d1f2c] .return_unused_surplus_pages+0x74/0x18c\n    Call Trace:\n    [c000005db12cb5e0] [c000005db12cb670] 0xc000005db12cb670 (unreliable)\n    [c000005db12cb670] [c0000000000d24c4] .hugetlb_acct_memory+0x2e0/0x354\n    [c000005db12cb740] [c0000000001b5048] .truncate_hugepages+0x1d4/0x214\n    [c000005db12cb890] [c0000000001b50a4] .hugetlbfs_delete_inode+0x1c/0x3c\n    [c000005db12cb920] [c000000000103fd8] .generic_delete_inode+0xf8/0x1c0\n    [c000005db12cb9b0] [c0000000001b5100] .hugetlbfs_drop_inode+0x3c/0x24c\n    [c000005db12cba50] [c00000000010287c] .iput+0xdc/0xf8\n    [c000005db12cbad0] [c0000000000fee54] .dentry_iput+0x12c/0x194\n    [c000005db12cbb60] [c0000000000ff050] .d_kill+0x6c/0xa4\n    [c000005db12cbbf0] [c0000000000ffb74] .dput+0x18c/0x1b0\n    [c000005db12cbc70] [c0000000000e9e98] .__fput+0x1a4/0x1e8\n    [c000005db12cbd10] [c0000000000e61ec] .filp_close+0xb8/0xe0\n    [c000005db12cbda0] [c0000000000e62d0] .sys_close+0xbc/0x134\n    [c000005db12cbe30] [c00000000000872c] syscall_exit+0x0/0x40\n    Instruction dump:\n    ebbe8038 38800010 e8bf0002 3bbd0008 7fa3eb78 38a50001 7ca507b4 4818df25\n    60000000 38800010 38a00000 7c601b78 \u003c7fa3eb78\u003e 2f800010 409d0008 38000010\n\nThis was tracked down to a potential livelock in\nreturn_unused_surplus_hugepages().  In the case where we have surplus\npages on some node, but no free pages on the same node, we may never\nbreak out of the loop. To avoid this livelock, terminate the search if\nwe iterate a number of times equal to the number of online nodes without\nfreeing a page.\n\nThanks to Andy Whitcroft and Adam Litke for helping with debugging and\nthe patch.\n\nSigned-off-by: Nishanth Aravamudan \u003cnacc@us.ibm.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a1de09195b294c6a4c5dec8c8defd0a2688d3f75",
      "tree": "097720233a20f50a094ce38d8e4853bb4e4a562d",
      "parents": [
        "6edef97e17ca1c322b146023862da8a39e36204d"
      ],
      "author": {
        "name": "Nishanth Aravamudan",
        "email": "nacc@us.ibm.com",
        "time": "Wed Mar 26 14:37:53 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 26 15:01:33 2008 -0700"
      },
      "message": "hugetlb: indicate surplus huge page counts in per-node meminfo\n\nCurrently we show the surplus hugetlb pool state in /proc/meminfo, but\nnot in the per-node meminfo files, even though we track the information\non a per-node basis. Printing it there can help track down dynamic pool\nbugs including the one in the follow-on patch.\n\nSigned-off-by: Nishanth Aravamudan \u003cnacc@us.ibm.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ec1f5eeeb5a79a0d48036de649a3498da42db565",
      "tree": "29b34d9aae8b61633e8ad549864d97cc474ec6b2",
      "parents": [
        "53625b4204753b904addd40ca96d9ba802e6977d"
      ],
      "author": {
        "name": "Daniel Yeisley",
        "email": "dan.yeisley@unisys.com",
        "time": "Tue Mar 25 23:59:08 2008 +0200"
      },
      "committer": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed Mar 26 10:44:17 2008 -0700"
      },
      "message": "slab: fix cache_cache bootstrap in kmem_cache_init()\n\nCommit 556a169dab38b5100df6f4a45b655dddd3db94c1 (\"slab: fix bootstrap on\nmemoryless node\") introduced bootstrap-time cache_cache list3s for all nodes\nbut forgot that initkmem_list3 needs to be accessed by [somevalue + node]. This\npatch fixes list_add() corruption in mm/slab.c seen on the ES7000.\n\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Olaf Hering \u003colaf@aepfle.de\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Dan Yeisley \u003cdan.yeisley@unisys.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\n"
    },
    {
      "commit": "53625b4204753b904addd40ca96d9ba802e6977d",
      "tree": "b5f3f6e526b8800491cc9952926e6e46bf623df8",
      "parents": [
        "05dda977f2574c3341abef9b74c27d2b362e1e3a"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed Mar 19 13:42:07 2008 -0700"
      },
      "committer": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed Mar 26 10:42:28 2008 -0700"
      },
      "message": "count_partial() is not used if !SLUB_DEBUG and !CONFIG_SLABINFO\n\nAvoid warnings about unused functions if neither SLUB_DEBUG nor CONFIG_SLABINFO\nis defined. This patch will be reversed when slab defrag is merged since slab\ndefrag requires count_partial() to determine the fragmentation status of\nslab caches.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\n"
    },
    {
      "commit": "7ed7fe5e82c9fc8473974fbd7389d169b8f17c77",
      "tree": "ff6ff57c88c887133f1585473e7d74981d0dc88c",
      "parents": [
        "a4083c9271e0a697278e089f2c0b9a95363ada0a",
        "a02f76c34d7d6d30b63ac64a8b34dea68593e8da"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Mar 25 08:57:47 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Mar 25 08:57:47 2008 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6:\n  [PATCH] get stack footprint of pathname resolution back to relative sanity\n  [PATCH] double iput() on failure exit in hugetlb\n  [PATCH] double dput() on failure exit in tiny-shmem\n  [PATCH] fix up new filp allocators\n  [PATCH] check for null vfsmount in dentry_open()\n  [PATCH] reiserfs: eliminate private use of struct file in xattr\n  [PATCH] sanitize hppfs\n  hppfs pass vfsmount to dentry_open()\n  [PATCH] restore export of do_kern_mount()\n"
    },
    {
      "commit": "4dd4b920218326231156c7991ce5b94afad841c3",
      "tree": "021d883ec96cd67f5a348eb739a5c6596fcf6d04",
      "parents": [
        "537878d2c988fa12bbfaec19ee060c7603a48230"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Mon Mar 24 12:29:52 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 24 19:22:19 2008 -0700"
      },
      "message": "revert \"kswapd should only wait on IO if there is IO\"\n\nRevert commit f1a9ee758de7de1e040de849fdef46e6802ea117:\n\n  Author: Rik van Riel \u003criel@redhat.com\u003e\n  Date:   Thu Feb 7 00:14:08 2008 -0800\n\n    kswapd should only wait on IO if there is IO\n\n    The current kswapd (and try_to_free_pages) code has an oddity where the\n    code will wait on IO, even if there is no IO in flight.  This problem is\n    notable especially when the system scans through many unfreeable pages,\n    causing unnecessary stalls in the VM.\n\n    Additionally, tasks without __GFP_FS or __GFP_IO in the direct reclaim path\n    will sleep if a significant number of pages are encountered that should be\n    written out.  This gives kswapd a chance to write out those pages, while\n    the direct reclaim task sleeps.\n\n    Signed-off-by: Rik van Riel \u003criel@redhat.com\u003e\n    Signed-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\n    Signed-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n\nBecause of large latencies and interactivity problems reported by Carlos,\nhere: http://lkml.org/lkml/2008/3/22/211\n\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: \"Carlos R.  Mafra\" \u003ccrmafra2@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5a982cbc7b3fe6cf72266f319286f29963c71b9e",
      "tree": "97afbc2ebc81b31ec13e261d0127f5e1639f0e26",
      "parents": [
        "2875fb65f8e40401c4b781ebc5002df10485f635"
      ],
      "author": {
        "name": "Yinghai Lu",
        "email": "yhlu.kernel@gmail.com",
        "time": "Mon Mar 24 12:29:45 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 24 19:22:19 2008 -0700"
      },
      "message": "mm: fix boundary checking in free_bootmem_core\n\nWith numa enabled, some callers could have a range of memory on one node\nbut try to free that on other node.  This can cause some pages to be\nfreed wrongly.\n\nFor example: when we try to allocate 128g boot ram early for\ngart/swiotlb, and free that range later so gart/swiotlb can get some\nrange afterwards.\n\nWith this patch, we don\u0027t need to care which node holds the range, just\nloop to call free_bootmem_node for all online nodes.\n\nThis patch makes free_bootmem_core() more robust by trimming the sidx\nand eidx according the ram range that the node has.\n\nAnd make the free_bootmem_core handle this out of range case.  We could\nuse bdata_list to make sure the range can be freed for sure.  So next\ntime, we don\u0027t need to loop online nodes and could use free_bootmem\ndirectly.\n\nSigned-off-by: Yinghai Lu \u003cyhlu.kernel@gmail.com\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nCc: Yasunori Goto \u003cy-goto@jp.fujitsu.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nTested-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f7850d932fc69cb4bad83117f0bef1a658cce350",
      "tree": "2c7d96fd628472dbecd4f8cddbdabaec2809b92f",
      "parents": [
        "08ca0db8aa2db4ddcf487d46d85dc8ffb22162cc"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Wed Mar 19 17:01:02 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 19 18:53:37 2008 -0700"
      },
      "message": "mm/readahead: fix kernel-doc notation\n\nFix kernel-doc notation in mm/readahead.c.\n\nChange \":\" to \";\" so that it doesn\u0027t get treated as a doc section heading.\nMove the comment block ending \"*/\" to a line by itself so that the text on\nthat last line is not lost (dropped).\n\nSigned-off-by: 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": "52ea27eb4cd5f250f33638029a134ff03c5e6bbb",
      "tree": "56397e15561f77a3aed272c006c275e63f611091",
      "parents": [
        "0cf01f6685bef41dea37bbec606f375b7a98fd98"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Wed Mar 19 17:00:45 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 19 18:53:35 2008 -0700"
      },
      "message": "memcgroup: fix check for thread being a group leader in memcgroup\n\nThe check t-\u003epid \u003d\u003d t-\u003epid is not the blessed way to check whether a task is a\ngroup leader.\n\nThis is not about the code beautifulness only, but about pid namespaces fixes\n- both the tgid and the pid fields on the task_struct are (slowly :( )\nbecoming deprecated.\n\nBesides, the thread_group_leader() macro makes only one dereference :)\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nCc: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Paul Menage \u003cmenage@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": "43d8eac44f28d384d2377dcdd1407f51f79dda55",
      "tree": "65496ae1834a29989a1baf9ebdacec175d315dcd",
      "parents": [
        "77f6078aa8945a18a7780694940e52be0322c2b8"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Wed Mar 19 17:00:43 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 19 18:53:35 2008 -0700"
      },
      "message": "mm: rmap kernel-doc fixes\n\nCorrect kernel-doc function names and parameters in rmap.c.\n\nSigned-off-by: 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": "77f6078aa8945a18a7780694940e52be0322c2b8",
      "tree": "89cab8be618e775993c8a899ef34dbbfe9901c1a",
      "parents": [
        "1b578df02207a67a29e8ced4db3b36d89df52fef"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Wed Mar 19 17:00:42 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 19 18:53:35 2008 -0700"
      },
      "message": "mm: highmem kernel-doc additions\n\nAdd kernel-doc comments to highmem.c.\n\nSigned-off-by: 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": "1b578df02207a67a29e8ced4db3b36d89df52fef",
      "tree": "0ac17c57012263be37b8a4abe70f8ef21e52cd64",
      "parents": [
        "46711810200c50e639ffc52e755b3dba9b4c82a3"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Wed Mar 19 17:00:42 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 19 18:53:35 2008 -0700"
      },
      "message": "mm/oom_kill: fix kernel-doc\n\nFix kernel-doc notation in oom_kill.c.\n\nSigned-off-by: 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": "46711810200c50e639ffc52e755b3dba9b4c82a3",
      "tree": "0279398b04ff7b1609bf689f56c21793cbc40d57",
      "parents": [
        "7682486b3ee06f800d5b11033371c7c5e92e3057"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Wed Mar 19 17:00:41 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 19 18:53:35 2008 -0700"
      },
      "message": "mm/shmem and tiny-shmem: fix some kernel-doc\n\nConvert tiny-shmem.c function comments to kernel-doc.  Add parameters and\nconvert/fix other kernel-doc in shmem.c.\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7682486b3ee06f800d5b11033371c7c5e92e3057",
      "tree": "d0c2eda3204b085fc63200c787b2cf04f0298729",
      "parents": [
        "6cb2a21049b8990df4576c5fce4d48d0206c22d5"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Wed Mar 19 17:00:40 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 19 18:53:35 2008 -0700"
      },
      "message": "mm: fix various kernel-doc comments\n\nFix various kernel-doc notation in mm/:\n\nfilemap.c: add function short description; convert 2 to kernel-doc\nfremap.c: change parameter \u0027prot\u0027 to @prot\npagewalk.c: change \"-\" in function parameters to \":\"\nslab.c: fix short description of kmem_ptr_validate()\nswap.c: fix description \u0026 parameters of put_pages_list()\nswap_state.c: fix function parameters\nvmalloc.c: change \"@returns\" to \"Returns:\" since that is not a parameter\n\nSigned-off-by: 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": "8a03feab32dceb78b9b1edf220e833d36d416b00",
      "tree": "6aff7bc4c5b790f13507417f73ef097ea9c79054",
      "parents": [
        "430e285e0817e3e18aadd814bc078d50d8af0cbf"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Feb 23 05:46:50 2008 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Mar 19 06:54:36 2008 -0400"
      },
      "message": "[PATCH] double dput() on failure exit in tiny-shmem\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "caeab084deb61cd2d51cb8facc0e894a5b406aa4",
      "tree": "9a5bebe51b0dce51169bf86c6a0fb91d0c929c56",
      "parents": [
        "bde4f8fa8db2abd5ac9c542d76012d0fedab050f"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed Mar 12 23:57:49 2008 -0700"
      },
      "committer": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Mar 17 11:14:17 2008 -0700"
      },
      "message": "slub page alloc fallback: Enable interrupts for GFP_WAIT.\n\nThe fallback path needs to enable interrupts like done for\nthe other page allocator calls. This was not necessary with\nthe alternate fast path since we handled irq enable/disable in\nthe slow path. The regular fastpath handles irq enable/disable\naround calls to the slow path so we need to restore the proper\nstatus before calling the page allocator from the slowpath.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\n"
    },
    {
      "commit": "f7009264c519603b8ec67c881bd368a56703cfc9",
      "tree": "163c2fa590e3de5c9084f1cba5c1c2815dbd2dde",
      "parents": [
        "21bbb39c376ce6beeeb549d155f0d53dc76ed000"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Mon Mar 10 11:43:59 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Mar 10 18:01:20 2008 -0700"
      },
      "message": "iov_iter_advance() fix\n\niov_iter_advance() skips over zero-length iovecs, however it does not properly\nterminate at the end of the iovec array.  Fix this by checking against\ni-\u003ecount before we skip a zero-length iov.\n\nThe bug was reproduced with a test program that continually randomly creates\niovs to writev.  The fix was also verified with the same program and also it\ncould verify that the correct data was contained in the file after each\nwritev.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nTested-by: \"Kevin Coffman\" \u003ckwc@citi.umich.edu\u003e\nCc: \"Alexey Dobriyan\" \u003cadobriyan@gmail.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": "2668db9111bb1a6ab5a54f41f703179f35c7d098",
      "tree": "bde940cfd298321663cf988b607151513c801a1a",
      "parents": [
        "842078054da2d754c6b998b116d7c468abbfaaca"
      ],
      "author": {
        "name": "Adam Litke",
        "email": "agl@us.ibm.com",
        "time": "Mon Mar 10 11:43:50 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Mar 10 18:01:19 2008 -0700"
      },
      "message": "hugetlb: correct page count for surplus huge pages\n\nFree pages in the hugetlb pool are free and as such have a reference count of\nzero.  Regular allocations into the pool from the buddy are \"freed\" into the\npool which results in their page_count dropping to zero.  However, surplus\npages can be directly utilized by the caller without first being freed to the\npool.  Therefore, a call to put_page_testzero() is in order so that such a\npage will be handed to the caller with a correct count.\n\nThis has not affected end users because the bad page count is reset before the\npage is handed off.  However, under CONFIG_DEBUG_VM this triggers a BUG when\nthe page count is validated.\n\nThanks go to Mel for first spotting this issue and providing an initial fix.\n\nSigned-off-by: Adam Litke \u003cagl@us.ibm.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nCc: William Lee Irwin III \u003cwli@holomorphy.com\u003e\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\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": "69682d852f5c94ee94e21174b3e8b719626c98db",
      "tree": "ed3c7c0681ef7658132ae32f1cd8a56bb6451621",
      "parents": [
        "9afa802ff568d935dab33dd207dc25d9849f35d4"
      ],
      "author": {
        "name": "Lee Schermerhorn",
        "email": "Lee.Schermerhorn@hp.com",
        "time": "Mon Mar 10 11:43:45 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Mar 10 18:01:19 2008 -0700"
      },
      "message": "mempolicy: fix reference counting bugs\n\nAddress 3 known bugs in the current memory policy reference counting method.\nI have a series of patches to rework the reference counting to reduce overhead\nin the allocation path.  However, that series will require testing in -mm once\nI repost it.\n\n1) alloc_page_vma() does not release the extra reference taken for\n   vma/shared mempolicy when the mode \u003d\u003d MPOL_INTERLEAVE.  This can result in\n   leaking mempolicy structures.  This is probably occurring, but not being\n   noticed.\n\n   Fix:  add the conditional release of the reference.\n\n2) hugezonelist unconditionally releases a reference on the mempolicy when\n   mode \u003d\u003d MPOL_INTERLEAVE.  This can result in decrementing the reference\n   count for system default policy [should have no ill effect] or premature\n   freeing of task policy.  If this occurred, the next allocation using task\n   mempolicy would use the freed structure and probably BUG out.\n\n   Fix:  add the necessary check to the release.\n\n3) The current reference counting method assumes that vma \u0027get_policy()\u0027\n   methods automatically add an extra reference a non-NULL returned mempolicy.\n    This is true for shmem_get_policy() used by tmpfs mappings, including\n   regular page shm segments.  However, SHM_HUGETLB shm\u0027s, backed by\n   hugetlbfs, just use the vma policy without the extra reference.  This\n   results in freeing of the vma policy on the first allocation, with reuse of\n   the freed mempolicy structure on subsequent allocations.\n\n   Fix: Rather than add another condition to the conditional reference\n   release, which occur in the allocation path, just add a reference when\n   returning the vma policy in shm_get_policy() to match the assumptions.\n\nSigned-off-by: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: Greg KH \u003cgreg@kroah.com\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: \u003ceric.whitney@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": "3426fadfa20454f124203768857e8f18ab4909bd",
      "tree": "2f65a70ca42a9f02a4e2eebc816300dbafe0d749",
      "parents": [
        "bf5a25e1fff88a1066e20cc7263329405e4939f6"
      ],
      "author": {
        "name": "Jesper Juhl",
        "email": "jesper.juhl@gmail.com",
        "time": "Mon Mar 10 01:12:08 2008 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sun Mar 09 22:21:52 2008 -0700"
      },
      "message": "Do not include linux/backing-dev.h twice\n\nDon\u0027t include linux/backing-dev.h twice in mm/filemap.c, it\u0027s pointless.\n\nSigned-off-by: Jesper Juhl \u003cjesper.juhl@gmail.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6d2144d355d2a532e5cc3fc12a6ba2a8d4ef15e4",
      "tree": "1c27eecfce86a166ca827bfbd2fe7a46888a7bc0",
      "parents": [
        "b6210386787728b84db25adc4f1eba70440a4c73"
      ],
      "author": {
        "name": "Joe Korty",
        "email": "joe.korty@ccur.com",
        "time": "Wed Mar 05 15:04:59 2008 -0800"
      },
      "committer": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Thu Mar 06 16:21:50 2008 -0800"
      },
      "message": "slab: NUMA slab allocator migration bugfix\n\nNUMA slab allocator cpu migration bugfix\n\nThe NUMA slab allocator (specifically, cache_alloc_refill)\nis not refreshing its local copies of what cpu and what\nnuma node it is on, when it drops and reacquires the irq\nblock that it inherited from its caller.  As a result\nthose values become invalid if an attempt to migrate the\nprocess to another numa node occured while the irq block\nhad been dropped.\n\nThe solution is to make cache_alloc_refill reload these\nvariables whenever it drops and reacquires the irq block.\n\nThe error is very difficult to hit.  When it does occur,\none gets the following oops + stack traceback bits in\ncheck_spinlock_acquired:\n\n\tkernel BUG at mm/slab.c:2417\n\tcache_alloc_refill+0xe6\n\tkmem_cache_alloc+0xd0\n\t...\n\nThis patch was developed against 2.6.23, ported to and\ncompiled-tested only against 2.6.25-rc4.\n\nSigned-off-by: Joe Korty \u003cjoe.korty@ccur.com\u003e\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\n"
    },
    {
      "commit": "b6210386787728b84db25adc4f1eba70440a4c73",
      "tree": "22702da1d1168c50cd56044be6cf68a0c093471e",
      "parents": [
        "1c61fc40fc264059ff41a614ed2d899127288281"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Wed Mar 05 14:05:56 2008 -0800"
      },
      "committer": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Thu Mar 06 16:21:50 2008 -0800"
      },
      "message": "slub: Do not cross cacheline boundaries for very small objects\n\nSLUB should pack even small objects nicely into cachelines if that is what\nhas been asked for. Use the same algorithm as SLAB for this.\n\nThe effect of this patch for a system with a cacheline size of 64\nbytes is that the 24 byte sized slab caches will now put exactly\n2 objects into a cacheline instead of 3 with some overlap into\nthe next cacheline. This reduces the object density in a 4k slab\nfrom 170 to 128 objects (same as SLAB).\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\n"
    },
    {
      "commit": "1c61fc40fc264059ff41a614ed2d899127288281",
      "tree": "53dc93a57a21d07f02fb2fc58a6439c2186710e7",
      "parents": [
        "9ac33b2b749e9539e84bbb1a41f97b066c4bd757"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Wed Mar 05 13:58:17 2008 -0800"
      },
      "committer": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Thu Mar 06 16:21:49 2008 -0800"
      },
      "message": "slab - use angle brackets for include of kmalloc_sizes.h\n\nMake them all use angle brackets and the directory name.\n\nAcked-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\n"
    },
    {
      "commit": "9ac33b2b749e9539e84bbb1a41f97b066c4bd757",
      "tree": "3d00a7ad98e27a813e6d855fbeaf5cef5e783b96",
      "parents": [
        "b773ad73690b5f34eee0c76f4273ac6fcbd88f82"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Tue Mar 04 12:24:22 2008 -0800"
      },
      "committer": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Thu Mar 06 16:21:49 2008 -0800"
      },
      "message": "slab numa fallback logic: Do not pass unfiltered flags to page allocator\n\nThe NUMA fallback logic should be passing local_flags to kmem_get_pages() and not simply the\nflags passed in.\n\nReviewed-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\n"
    },
    {
      "commit": "b773ad73690b5f34eee0c76f4273ac6fcbd88f82",
      "tree": "76487ed8339cde643e05a02b881ddec01a2fb7d6",
      "parents": [
        "d7fe321eeba58f0a37cc4324d10e52092be457e0"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Tue Mar 04 11:10:17 2008 -0800"
      },
      "committer": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Thu Mar 06 16:21:49 2008 -0800"
      },
      "message": "slub statistics: Fix check for DEACTIVATE_REMOTE_FREES\n\nThe remote frees are in the freelist of the page and not in the\npercpu freelist.\n\nReviewed-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\n"
    },
    {
      "commit": "348e1e04b5229a481891699ce86da009b793f29e",
      "tree": "481caab1f0178e64ace723fc9bd7e36627525e39",
      "parents": [
        "ac09b3a15154af5f081fed509c6c3662e79de785"
      ],
      "author": {
        "name": "Nishanth Aravamudan",
        "email": "nacc@us.ibm.com",
        "time": "Tue Mar 04 14:29:42 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Mar 04 16:35:18 2008 -0800"
      },
      "message": "hugetlb: fix pool shrinking while in restricted cpuset\n\nAdam Litke noticed that currently we grow the hugepage pool independent of any\ncpuset the running process may be in, but when shrinking the pool, the cpuset\nis checked.  This leads to inconsistency when shrinking the pool in a\nrestricted cpuset -- an administrator may have been able to grow the pool on a\nnode restricted by a containing cpuset, but they cannot shrink it there.\n\nThere are two options: either prevent growing of the pool outside of the\ncpuset or allow shrinking outside of the cpuset.  \u003eFrom previous discussions\non linux-mm, /proc/sys/vm/nr_hugepages is an administrative interface that\nshould not be restricted by cpusets.  So allow shrinking the pool by removing\npages from nodes outside of current\u0027s cpuset.\n\nSigned-off-by: Nishanth Aravamudan \u003cnacc@us.ibm.com\u003e\nAcked-by: Adam Litke \u003cagl@us.ibm.com\u003e\nCc: William Irwin \u003cwli@holomorphy.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhonr@hp.com\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Paul Jackson \u003cpj@sgi.com\u003e\nCc: David Gibson \u003cdavid@gibson.dropbear.id.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ac09b3a15154af5f081fed509c6c3662e79de785",
      "tree": "753170e02fafcadbd525d93b01105a4995d51461",
      "parents": [
        "a07e6ab41be179cf1ed728a4f41368435508b550"
      ],
      "author": {
        "name": "Adam Litke",
        "email": "agl@us.ibm.com",
        "time": "Tue Mar 04 14:29:38 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Mar 04 16:35:18 2008 -0800"
      },
      "message": "hugetlb: close a difficult to trigger reservation race\n\nA hugetlb reservation may be inadequately backed in the event of racing\nallocations and frees when utilizing surplus huge pages.  Consider the\nfollowing series of events in processes A and B:\n\n A) Allocates some surplus pages to satisfy a reservation\n B) Frees some huge pages\n A) A notices the extra free pages and drops hugetlb_lock to free some of\n    its surplus pages back to the buddy allocator.\n B) Allocates some huge pages\n A) Reacquires hugetlb_lock and returns from gather_surplus_huge_pages()\n\nAvoid this by commiting the reservation after pages have been allocated but\nbefore dropping the lock to free excess pages.  For parity, release the\nreservation in return_unused_surplus_pages().\n\nThis patch also corrects the cpuset_mems_nr() error path in\nhugetlb_acct_memory().  If the cpuset check fails, uncommit the\nreservation, but also be sure to return any surplus huge pages that may\nhave been allocated to back the failed reservation.\n\nThanks to Andy Whitcroft for discovering this.\n\nSigned-off-by: Adam Litke \u003cagl@us.ibm.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nCc: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nCc: William Lee Irwin III \u003cwli@holomorphy.com\u003e\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\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": "fb59e9f1e9786635ea12e12bf6adbb132e10f979",
      "tree": "9104d67895e0e85e3014c60389146ab2318faa7c",
      "parents": [
        "9b3c0a07e0fca35e36751680de3e4c76dbff5df3"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Mar 04 14:29:16 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Mar 04 16:35:15 2008 -0800"
      },
      "message": "memcg: fix oops on NULL lru list\n\nWhile testing force_empty, during an exit_mmap, __mem_cgroup_remove_list\ncalled from mem_cgroup_uncharge_page oopsed on a NULL pointer in the lru list.\n I couldn\u0027t see what racing tasks on other cpus were doing, but surmise that\nanother must have been in mem_cgroup_charge_common on the same page, between\nits unlock_page_cgroup and spin_lock_irqsave near done (thanks to that kzalloc\nwhich I\u0027d almost changed to a kmalloc).\n\nNormally such a race cannot happen, the ref_cnt prevents it, the final\nuncharge cannot race with the initial charge.  But force_empty buggers the\nref_cnt, that\u0027s what it\u0027s all about; and thereafter forced pages are\nvulnerable to races such as this (just think of a shared page also mapped into\nan mm of another mem_cgroup than that just emptied).  And remain vulnerable\nuntil they\u0027re freed indefinitely later.\n\nThis patch just fixes the oops by moving the unlock_page_cgroups down below\nadding to and removing from the list (only possible given the previous patch);\nand while we\u0027re at it, we might as well make it an invariant that\npage-\u003epage_cgroup is always set while pc is on lru.\n\nBut this behaviour of force_empty seems highly unsatisfactory to me: why have\na ref_cnt if we always have to cope with it being violated (as in the earlier\npage migration patch).  We may prefer force_empty to move pages to an orphan\nmem_cgroup (could be the root, but better not), from which other cgroups could\nrecover them; we might need to reverse the locking again; but no time now for\nsuch concerns.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9b3c0a07e0fca35e36751680de3e4c76dbff5df3",
      "tree": "3dd6355a88282ea5577a05b7f2d2d3ae216ab9a8",
      "parents": [
        "2680eed723b664d83e6181ae275fac0ec8fa05ff"
      ],
      "author": {
        "name": "Hirokazu Takahashi",
        "email": "taka@valinux.co.jp",
        "time": "Tue Mar 04 14:29:15 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Mar 04 16:35:15 2008 -0800"
      },
      "message": "memcg: simplify force_empty and move_lists\n\nAs for force_empty, though this may not be the main topic here,\nmem_cgroup_force_empty_list() can be implemented simpler.  It is possible to\nmake the function just call mem_cgroup_uncharge_page() instead of releasing\npage_cgroups by itself.  The tip is to call get_page() before invoking\nmem_cgroup_uncharge_page(), so the page won\u0027t be released during this\nfunction.\n\nKamezawa-san points out that by the time mem_cgroup_uncharge_page() uncharges,\nthe page might have been reassigned to an lru of a different mem_cgroup, and\nnow be emptied from that; but Hugh claims that\u0027s okay, the end state is the\nsame as when it hasn\u0027t gone to another list.\n\nAnd once force_empty stops taking lock_page_cgroup within mz-\u003elru_lock,\nmem_cgroup_move_lists() can be simplified to take mz-\u003elru_lock directly while\nholding page_cgroup lock (but still has to use try_lock_page_cgroup).\n\nSigned-off-by: Hirokazu Takahashi \u003ctaka@valinux.co.jp\u003e\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: YAMAMOTO Takashi \u003cyamamoto@valinux.co.jp\u003e\nCc: Paul Menage \u003cmenage@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": "2680eed723b664d83e6181ae275fac0ec8fa05ff",
      "tree": "f4c137e43c3bdf78e6923bb3aafaf38680c4c301",
      "parents": [
        "6d48ff8bcfd403ec8d3ef7a56538ea9e6f773b9c"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Mar 04 14:29:13 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Mar 04 16:35:15 2008 -0800"
      },
      "message": "memcg: fix mem_cgroup_move_lists locking\n\nEver since the VM_BUG_ON(page_get_page_cgroup(page)) (now Bad page state) went\ninto page freeing, I\u0027ve hit it from time to time in testing on some machines,\nsometimes only after many days.  Recently found a machine which could usually\nproduce it within a few hours, which got me there at last.\n\nThe culprit is mem_cgroup_move_lists, whose locking is inadequate; and the\narrangement of structures was such that you got page_cgroups from the lru list\nneatly put on to SLUB\u0027s freelist.  Kamezawa-san identified the same hole\nindependently.\n\nThe main problem was that it was missing the lock_page_cgroup it needs to\nsafely page_get_page_cgroup; but it\u0027s tricky to go beyond that too, and I\ncouldn\u0027t do it with SLAB_DESTROY_BY_RCU as I\u0027d expected.  See the code for\ncomments on the constraints.\n\nThis patch immediately gets replaced by a simpler one from Hirokazu-san; but\nis it just foolish pride that tells me to put this one on record, in case we\nneed to come back to it later?\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Hirokazu Takahashi \u003ctaka@valinux.co.jp\u003e\nCc: YAMAMOTO Takashi \u003cyamamoto@valinux.co.jp\u003e\nCc: Paul Menage \u003cmenage@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": "6d48ff8bcfd403ec8d3ef7a56538ea9e6f773b9c",
      "tree": "9331ed70405f4933ac923a7595268ee7e773018e",
      "parents": [
        "b9c565d5a29a795f970b4a1340393d8fc6722fb9"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Mar 04 14:29:12 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Mar 04 16:35:15 2008 -0800"
      },
      "message": "memcg: css_put after remove_list\n\nmem_cgroup_uncharge_page does css_put on the mem_cgroup before uncharging from\nit, and before removing page_cgroup from one of its lru lists: isn\u0027t there a\ndanger that struct mem_cgroup memory could be freed and reused before\ncompleting that, so corrupting something?  Never seen it, and for all I know\nthere may be other constraints which make it impossible; but let\u0027s be\ndefensive and reverse the ordering there.\n\nmem_cgroup_force_empty_list is safe because there\u0027s an extra css_get around\nall its works; but even so, change its ordering the same way round, to help\nget in the habit of doing it like this.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Hirokazu Takahashi \u003ctaka@valinux.co.jp\u003e\nCc: YAMAMOTO Takashi \u003cyamamoto@valinux.co.jp\u003e\nCc: Paul Menage \u003cmenage@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": "b9c565d5a29a795f970b4a1340393d8fc6722fb9",
      "tree": "cbd1e0c762738dee438dfd1093a1bb21ce56664b",
      "parents": [
        "d5b69e38f8cdb1e41cc022305c86c9739bf1ffdb"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Mar 04 14:29:11 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Mar 04 16:35:15 2008 -0800"
      },
      "message": "memcg: remove clear_page_cgroup and atomics\n\nRemove clear_page_cgroup: it\u0027s an unhelpful helper, see for example how\nmem_cgroup_uncharge_page had to unlock_page_cgroup just in order to call it\n(serious races from that?  I\u0027m not sure).\n\nOnce that\u0027s gone, you can see it\u0027s pointless for page_cgroup\u0027s ref_cnt to be\natomic: it\u0027s always manipulated under lock_page_cgroup, except where\nforce_empty unilaterally reset it to 0 (and how does uncharge\u0027s\natomic_dec_and_test protect against that?).\n\nSimplify this page_cgroup locking: if you\u0027ve got the lock and the pc is\nattached, then the ref_cnt must be positive: VM_BUG_ONs to check that, and to\ncheck that pc-\u003epage matches page (we\u0027re on the way to finding why sometimes it\ndoesn\u0027t, but this patch doesn\u0027t fix that).\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Hirokazu Takahashi \u003ctaka@valinux.co.jp\u003e\nCc: YAMAMOTO Takashi \u003cyamamoto@valinux.co.jp\u003e\nCc: Paul Menage \u003cmenage@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": "d5b69e38f8cdb1e41cc022305c86c9739bf1ffdb",
      "tree": "fdada47ea248d2b7064d5603eb9c68a1bdfb381d",
      "parents": [
        "8869b8f6e09a1b49bf915eb03f663f2e4e8fbcd4"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Mar 04 14:29:10 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Mar 04 16:35:15 2008 -0800"
      },
      "message": "memcg: memcontrol uninlined and static\n\nMore cleanup to memcontrol.c, this time changing some of the code generated.\nLet the compiler decide what to inline (except for page_cgroup_locked which is\nonly used when CONFIG_DEBUG_VM): the __always_inline on lock_page_cgroup etc.\nwas quite a waste since bit_spin_lock etc.  are inlines in a header file; made\nmem_cgroup_force_empty and mem_cgroup_write_strategy static.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Hirokazu Takahashi \u003ctaka@valinux.co.jp\u003e\nCc: YAMAMOTO Takashi \u003cyamamoto@valinux.co.jp\u003e\nCc: Paul Menage \u003cmenage@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": "8869b8f6e09a1b49bf915eb03f663f2e4e8fbcd4",
      "tree": "add36501e2bcceaae674569e99b474e5b3555fb4",
      "parents": [
        "8289546e573d5ff681cdf0fc7a1184cca66fdb55"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Mar 04 14:29:09 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Mar 04 16:35:15 2008 -0800"
      },
      "message": "memcg: memcontrol whitespace cleanups\n\nSorry, before getting down to more important changes, I\u0027d like to do some\ncleanup in memcontrol.c.  This patch doesn\u0027t change the code generated, but\ncleans up whitespace, moves up a double declaration, removes an unused enum,\nremoves void returns, removes misleading comments, that kind of thing.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Hirokazu Takahashi \u003ctaka@valinux.co.jp\u003e\nCc: YAMAMOTO Takashi \u003cyamamoto@valinux.co.jp\u003e\nCc: Paul Menage \u003cmenage@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": "8289546e573d5ff681cdf0fc7a1184cca66fdb55",
      "tree": "9cf874b55eb9a6c97233d137278c7b7c89a5f4a1",
      "parents": [
        "7e924aafa4b03ff71de34af8553d9a1ebc86c071"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Mar 04 14:29:08 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Mar 04 16:35:15 2008 -0800"
      },
      "message": "memcg: remove mem_cgroup_uncharge\n\nNothing uses mem_cgroup_uncharge apart from mem_cgroup_uncharge_page, (a\ntrivial wrapper around it) and mem_cgroup_end_migration (which does the same\nas mem_cgroup_uncharge_page).  And it often ends up having to lock just to let\nits caller unlock.  Remove it (but leave the silly locking until a later\npatch).\n\nMoved mem_cgroup_cache_charge next to mem_cgroup_charge in memcontrol.h.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nAcked-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Hirokazu Takahashi \u003ctaka@valinux.co.jp\u003e\nCc: YAMAMOTO Takashi \u003cyamamoto@valinux.co.jp\u003e\nCc: Paul Menage \u003cmenage@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": "7e924aafa4b03ff71de34af8553d9a1ebc86c071",
      "tree": "21735b7369ede27f34c41184b0a686020b80e2c6",
      "parents": [
        "9442ec9df40d952b0de185ae5638a74970388e01"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Mar 04 14:29:08 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Mar 04 16:35:15 2008 -0800"
      },
      "message": "memcg: mem_cgroup_charge never NULL\n\nMy memcgroup patch to fix hang with shmem/tmpfs added NULL page handling to\nmem_cgroup_charge_common.  It seemed convenient at the time, but hard to\njustify now: there\u0027s a perfectly appropriate swappage to charge and uncharge\ninstead, this is not on any hot path through shmem_getpage, and no performance\nhit was observed from the slight extra overhead.\n\nSo revert that NULL page handling from mem_cgroup_charge_common; and make it\nclearer by bringing page_cgroup_assign_new_page_cgroup into its body - that\nwas a helper I found more of a hindrance to understanding.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nAcked-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Hirokazu Takahashi \u003ctaka@valinux.co.jp\u003e\nCc: YAMAMOTO Takashi \u003cyamamoto@valinux.co.jp\u003e\nCc: Paul Menage \u003cmenage@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": "9442ec9df40d952b0de185ae5638a74970388e01",
      "tree": "14b06d71203be119d93736464ca49f37ce402c1c",
      "parents": [
        "98837c7f82ef78aa38f40462aa2fcac68fd3acbf"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Mar 04 14:29:07 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Mar 04 16:35:15 2008 -0800"
      },
      "message": "memcg: bad page if page_cgroup when free\n\nReplace free_hot_cold_page\u0027s VM_BUG_ON(page_get_page_cgroup(page)) by a \"Bad\npage state\" and clear: most users don\u0027t have CONFIG_DEBUG_VM on, and if it\nwere set here, it\u0027d likely cause corruption when the page is reused.\n\nDon\u0027t use page_assign_page_cgroup to clear it: that should be private to\nmemcontrol.c, and always called with the lock taken; and memmap_init_zone\ndoesn\u0027t need it either - like page-\u003emapping and other pointers throughout the\nkernel, Linux assumes pointers in zeroed structures are NULL pointers.\n\nInstead use page_reset_bad_cgroup, added to memcontrol.h for this only.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nAcked-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Hirokazu Takahashi \u003ctaka@valinux.co.jp\u003e\nCc: YAMAMOTO Takashi \u003cyamamoto@valinux.co.jp\u003e\nCc: Paul Menage \u003cmenage@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": "98837c7f82ef78aa38f40462aa2fcac68fd3acbf",
      "tree": "6d76841b18b57a9202d7699ba4dca5b39fdd7aea",
      "parents": [
        "61469f1d51777fc3b6d8d70da8373ee77ee13349"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Mar 04 14:29:06 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Mar 04 16:35:14 2008 -0800"
      },
      "message": "memcg: fix VM_BUG_ON from page migration\n\nPage migration gave me free_hot_cold_page\u0027s VM_BUG_ON page-\u003epage_cgroup.\nremove_migration_pte was calling mem_cgroup_charge on the new page whenever it\nfound a swap pte, before it had determined it to be a migration entry.  That\nleft a surplus reference count on the page_cgroup, so it was still attached\nwhen the page was later freed.\n\nMove that mem_cgroup_charge down to where we\u0027re sure it\u0027s a migration entry.\nWe were already under i_mmap_lock or anon_vma-\u003elock, so its GFP_KERNEL was\nalready inappropriate: change that to GFP_ATOMIC.\n\nIt\u0027s essential that remove_migration_pte removes all the migration entries,\nother crashes follow if not.  So proceed even when the charge fails: normally\nit cannot, but after a mem_cgroup_force_empty it might - comment in the code.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Hirokazu Takahashi \u003ctaka@valinux.co.jp\u003e\nCc: YAMAMOTO Takashi \u003cyamamoto@valinux.co.jp\u003e\nCc: Paul Menage \u003cmenage@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": "61469f1d51777fc3b6d8d70da8373ee77ee13349",
      "tree": "cdcde89af7b998c340414f305a2a723106770c17",
      "parents": [
        "6dbf6d3bb955d5a92005b6ecd6ffad2c5b95b963"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Mar 04 14:29:04 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Mar 04 16:35:14 2008 -0800"
      },
      "message": "memcg: when do_swap\u0027s do_wp_page fails\n\nDon\u0027t uncharge when do_swap_page\u0027s call to do_wp_page fails: the page which\nwas charged for is there in the pagetable, and will be correctly uncharged\nwhen that area is unmapped - it was only its COWing which failed.\n\nAnd while we\u0027re here, remove earlier XXX comment: yes, OR in do_wp_page\u0027s\nreturn value (maybe VM_FAULT_WRITE) with do_swap_page\u0027s there; but if it\nfails, mask out success bits, which might confuse some arches e.g.  sparc.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nAcked-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Hirokazu Takahashi \u003ctaka@valinux.co.jp\u003e\nCc: YAMAMOTO Takashi \u003cyamamoto@valinux.co.jp\u003e\nCc: Paul Menage \u003cmenage@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": "6dbf6d3bb955d5a92005b6ecd6ffad2c5b95b963",
      "tree": "429960ea7e804a2454eb76271f4f58621a62e456",
      "parents": [
        "427d5416f317681498337ab19218d195edea02d6"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Mar 04 14:29:04 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Mar 04 16:35:14 2008 -0800"
      },
      "message": "memcg: page_cache_release not __free_page\n\nThere\u0027s nothing wrong with mem_cgroup_charge failure in do_wp_page and\ndo_anonymous page using __free_page, but it does look odd when nearby code\nuses page_cache_release: use that instead (while turning a blind eye to\nancient inconsistencies of page_cache_release versus put_page).\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nAcked-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Hirokazu Takahashi \u003ctaka@valinux.co.jp\u003e\nCc: YAMAMOTO Takashi \u003cyamamoto@valinux.co.jp\u003e\nCc: Paul Menage \u003cmenage@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": "427d5416f317681498337ab19218d195edea02d6",
      "tree": "967cfc87ec775ca3c05f95f2339697e796383191",
      "parents": [
        "bd845e38c7a7251a95a8f2c38aa7fb87140b771d"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Mar 04 14:29:03 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Mar 04 16:35:14 2008 -0800"
      },
      "message": "memcg: move_lists on page not page_cgroup\n\nEach caller of mem_cgroup_move_lists is having to use page_get_page_cgroup:\nit\u0027s more convenient if it acts upon the page itself not the page_cgroup; and\nin a later patch this becomes important to handle within memcontrol.c.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nAcked-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Hirokazu Takahashi \u003ctaka@valinux.co.jp\u003e\nCc: YAMAMOTO Takashi \u003cyamamoto@valinux.co.jp\u003e\nCc: Paul Menage \u003cmenage@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": "bd845e38c7a7251a95a8f2c38aa7fb87140b771d",
      "tree": "007a1a6703f4fe27d52a07e6caea8ce87d06ff77",
      "parents": [
        "acc4988bcf38f9618886eaeb9802aeacc6978ec2"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Mar 04 14:29:01 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Mar 04 16:35:14 2008 -0800"
      },
      "message": "memcg: mm_match_cgroup not vm_match_cgroup\n\nvm_match_cgroup is a perverse name for a macro to match mm with cgroup: rename\nit mm_match_cgroup, matching mm_init_cgroup and mm_free_cgroup.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nAcked-by: David Rientjes \u003crientjes@google.com\u003e\nAcked-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Hirokazu Takahashi \u003ctaka@valinux.co.jp\u003e\nCc: YAMAMOTO Takashi \u003cyamamoto@valinux.co.jp\u003e\nCc: Paul Menage \u003cmenage@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": "00f0b8259e48979c37212995d798f3fbd0374690",
      "tree": "589e8250c016450324e0c730139d020cf2bf887c",
      "parents": [
        "804defea1c020d5c52985685e56986f1a399acde"
      ],
      "author": {
        "name": "Balbir Singh",
        "email": "balbir@linux.vnet.ibm.com",
        "time": "Tue Mar 04 14:28:39 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Mar 04 16:35:12 2008 -0800"
      },
      "message": "Memory controller: rename to Memory Resource Controller\n\nRename Memory Controller to Memory Resource Controller.  Reflect the same\nchanges in the CONFIG definition for the Memory Resource Controller.  Group\ntogether the config options for Resource Counters and Memory Resource\nController.\n\nSigned-off-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: Paul Menage \u003cmenage@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": "be852795e1c8d3829ddf3cb1ce806113611fa555",
      "tree": "3671dbd5ba64f11650f93fdd9178666bcbb84f7e",
      "parents": [
        "e3892296de632e3f9299d9fabe0c746740004891"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Tue Mar 04 14:28:35 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Mar 04 16:35:11 2008 -0800"
      },
      "message": "alloc_percpu() fails to allocate percpu data\n\nSome oprofile results obtained while using tbench on a 2x2 cpu machine were\nvery surprising.\n\nFor example, loopback_xmit() function was using high number of cpu cycles\nto perform the statistic updates, supposed to be real cheap since they use\npercpu data\n\n        pcpu_lstats \u003d netdev_priv(dev);\n        lb_stats \u003d per_cpu_ptr(pcpu_lstats, smp_processor_id());\n        lb_stats-\u003epackets++;  /* HERE : serious contention */\n        lb_stats-\u003ebytes +\u003d skb-\u003elen;\n\nstruct pcpu_lstats is a small structure containing two longs.  It appears\nthat on my 32bits platform, alloc_percpu(8) allocates a single cache line,\ninstead of giving to each cpu a separate cache line.\n\nUsing the following patch gave me impressive boost in various benchmarks\n( 6 % in tbench)\n(all percpu_counters hit this bug too)\n\nLong term fix (ie \u003e\u003d 2.6.26) would be to let each CPU allocate their own\nblock of memory, so that we dont need to roudup sizes to L1_CACHE_BYTES, or\nmerging the SGI stuff of course...\n\nNote : SLUB vs SLAB is important here to *show* the improvement, since they\ndont have the same minimum allocation sizes (8 bytes vs 32 bytes).  This\ncould very well explain regressions some guys reported when they switched\nto SLUB.\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "10ed273f5016c582413dfbc468dd084957d847e1",
      "tree": "58f76f68e57866c4124dc09e956103e9093c8d32",
      "parents": [
        "d9d4fcfe515d7cece1b26decd75f5d41544a287b"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Tue Mar 04 14:28:32 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Mar 04 16:35:10 2008 -0800"
      },
      "message": "zlc_setup(): handle jiffies wraparound\n\njiffies subtraction may cause an overflow problem.  It should be using\ntime_after().\n\n[akpm@linux-foundation.org: include jiffies.h]\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\nCc: Paul Jackson \u003cpj@sgi.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "62e5c4b4d6351707346695fd9e151b6cda85cbe1",
      "tree": "66a8e4a842d4bcd2f87e28bb2faac19e75e355b3",
      "parents": [
        "f619cfe1bda809a97c407f4c723eb3235ecd64e5"
      ],
      "author": {
        "name": "Cyrill Gorcunov",
        "email": "gorcunov@gmail.com",
        "time": "Sun Mar 02 23:28:24 2008 +0300"
      },
      "committer": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Mar 03 12:22:32 2008 -0800"
      },
      "message": "slub: fix possible NULL pointer dereference\n\nThis patch fix possible NULL pointer dereference if kzalloc\nfailed. To be able to return proper error code the function\nreturn type is changed to ssize_t (according to callees and\nsysfs definitions).\n\nSigned-off-by: Cyrill Gorcunov \u003cgorcunov@gmail.com\u003e\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\n"
    },
    {
      "commit": "f619cfe1bda809a97c407f4c723eb3235ecd64e5",
      "tree": "d073f8fe0221c2c196aaa888e7bc861c275f7fbd",
      "parents": [
        "7693143481730686362cc6360e3d47c012d9b2c8"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Sat Mar 01 13:56:40 2008 -0800"
      },
      "committer": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Mar 03 12:22:32 2008 -0800"
      },
      "message": "slub: Add kmalloc_large_node() to support kmalloc_node fallback\n\nSlub is missing some NUMA support for large kmallocs. Provide that.\n\nReviewed-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\n"
    },
    {
      "commit": "7693143481730686362cc6360e3d47c012d9b2c8",
      "tree": "c621d072280676d62c3ae61ea97d3e8c471d1f92",
      "parents": [
        "6446faa2ff30ca77c5b25e886bbbfb81c63f1c91"
      ],
      "author": {
        "name": "Pekka J Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Sat Mar 01 13:43:54 2008 -0800"
      },
      "committer": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Mar 03 12:22:32 2008 -0800"
      },
      "message": "slub: look up object from the freelist once\n\nWe only need to look up object from c-\u003epage-\u003efreelist once in\n__slab_alloc().\n\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\n"
    },
    {
      "commit": "6446faa2ff30ca77c5b25e886bbbfb81c63f1c91",
      "tree": "d8c29dec4b1395a313cd71e5185f656f7e8abbb6",
      "parents": [
        "d8b42bf54be18b5d0bad941b3a1d3e8f022651a7"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Fri Feb 15 23:45:26 2008 -0800"
      },
      "committer": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Mar 03 12:22:32 2008 -0800"
      },
      "message": "slub: Fix up comments\n\nProvide comments and fix up various spelling / style issues.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\n"
    },
    {
      "commit": "d8b42bf54be18b5d0bad941b3a1d3e8f022651a7",
      "tree": "50c43281c981a82f0f1742fcc84919e35270e9f8",
      "parents": [
        "ae20bfda6813387af18c7fdbc0f8b1fa7be2d05b"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Fri Feb 15 23:45:25 2008 -0800"
      },
      "committer": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Mar 03 12:22:31 2008 -0800"
      },
      "message": "slub: Rearrange #ifdef CONFIG_SLUB_DEBUG in calculate_sizes()\n\nGroup SLUB_DEBUG code together to reduce the number of #ifdefs. Move some\ndebug checks under the #ifdef.\n\nReviewed-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\n"
    },
    {
      "commit": "ae20bfda6813387af18c7fdbc0f8b1fa7be2d05b",
      "tree": "4455ba4cdd5a7bd1d3da13915965f1aed2dd84b0",
      "parents": [
        "27d9e4e94862c89d171cf70911b4f11ad69fb54e"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Fri Feb 15 23:45:25 2008 -0800"
      },
      "committer": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Mar 03 12:22:31 2008 -0800"
      },
      "message": "slub: Remove BUG_ON() from ksize and omit checks for !SLUB_DEBUG\n\nThe BUG_ONs are useless since the pointer derefs will lead to\nNULL deref errors anyways. Some of the checks are not necessary\nif no debugging is possible.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\n"
    },
    {
      "commit": "27d9e4e94862c89d171cf70911b4f11ad69fb54e",
      "tree": "630d7af09633c209e4b2d8390146f2af1074a37d",
      "parents": [
        "d692ef6dcd20da60786470654410e85f29c2ddd9"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Fri Feb 15 23:45:25 2008 -0800"
      },
      "committer": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Mar 03 12:22:31 2008 -0800"
      },
      "message": "slub: Use the objsize from the kmem_cache_cpu structure\n\nNo need to access the kmem_cache structure. We have the same value\nin kmem_cache_cpu.\n\nReviewed-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\n"
    },
    {
      "commit": "d692ef6dcd20da60786470654410e85f29c2ddd9",
      "tree": "a38e03581a829bbd978c7bc03016e275bcf4c774",
      "parents": [
        "e153362a50a34439718a938a851bba977116e19a"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Fri Feb 15 23:45:24 2008 -0800"
      },
      "committer": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Mar 03 12:22:31 2008 -0800"
      },
      "message": "slub: Remove useless checks in alloc_debug_processing\n\nAlloc debug processing is never called with a NULL object pointer.\nNo reason to check for NULL.\n\nReviewed-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\n"
    },
    {
      "commit": "e153362a50a34439718a938a851bba977116e19a",
      "tree": "c8c4b19d13435f9d94ba92eb0c1ab1d8ff25c31a",
      "parents": [
        "d9acf4b7b62d783d84273a61aed41a0f025b08ac"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Fri Feb 15 23:45:24 2008 -0800"
      },
      "committer": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Mar 03 12:22:30 2008 -0800"
      },
      "message": "slub: Remove objsize check in kmem_cache_flags()\n\nThere is no page-\u003eoffset anymore and also no associated limit on the number\nof objects. The page-\u003eoffset field was removed for 2.6.24. So the check\nin kmem_cache_flags() is now also obsolete (should have been dropped\nearlier, somehow a hunk vanished).\n\nReviewed-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-by: Christoph Lameter \u003cclameter@sgi.com\u003e\n"
    },
    {
      "commit": "d9acf4b7b62d783d84273a61aed41a0f025b08ac",
      "tree": "47bae82b68ad25cee6d6b7d3388560e481ddb5f5",
      "parents": [
        "a973e9dd1e140a65bed694a2c5c8d53e9cba1a23"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Fri Feb 15 15:22:21 2008 -0800"
      },
      "committer": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Mar 03 12:22:30 2008 -0800"
      },
      "message": "slub: rename slab_objects to show_slab_objects\n\nThe sysfs callback is better named show_slab_objects since it is always\ncalled from the xxx_show callbacks. We need the name for other purposes\nlater.\n\nReviewed-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\n"
    },
    {
      "commit": "a973e9dd1e140a65bed694a2c5c8d53e9cba1a23",
      "tree": "5a164080dae237d09c57abab9e84b750863a2ff7",
      "parents": [
        "27710bf6febe8323f78bceca002ca7d71e5012a7"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Sat Mar 01 13:40:44 2008 -0800"
      },
      "committer": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Mar 03 12:22:30 2008 -0800"
      },
      "message": "Revert \"unique end pointer\" patch\n\nThis only made sense for the alternate fastpath which was reverted last week.\n\nMathieu is working on a new version that addresses the fastpath issues but that\nnew code first needs to go through mm and it is not clear if we need the\nunique end pointers with his new scheme.\n\nReviewed-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\n"
    },
    {
      "commit": "0643245f595dc175c14245fa1e1e9efda3e12f2a",
      "tree": "435ef9643091618f351f6e4931d7f8b38f15efaa",
      "parents": [
        "d0bcabcd72dda5f553322a1ca92ae31c15b408b6"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Fri Feb 29 22:03:15 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Mar 03 10:47:14 2008 -0800"
      },
      "message": "docbook: fix kernel-api source files\n\nFix docbook problems in kernel-api.tmpl.\nThese cause the generated docbook to be incorrect.\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2dda81ca31dc73e695ff8b83351f7aaefbef192a",
      "tree": "808c6dd9c79f6f62851eb4108c4d7104decc7e9c",
      "parents": [
        "7fde4c3eb7ee68828d76a2148ed6d70b6a794add"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Sat Feb 23 15:24:14 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sat Feb 23 17:13:25 2008 -0800"
      },
      "message": "memcgroup: return negative error code in mem_cgroup_create()\n\nCgroup requires the subsystem to return negative error code on error in the\ncreate method.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Balbir Singh \u003cbalbir@in.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": "7fde4c3eb7ee68828d76a2148ed6d70b6a794add",
      "tree": "de983bf2234e050cb22eb653ab9e363186d9acc7",
      "parents": [
        "2324c5dd47233859cd7ba6272d0601f26ce60dcd"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Sat Feb 23 15:24:13 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sat Feb 23 17:13:25 2008 -0800"
      },
      "message": "memcgroup: remove a useless VM_BUG_ON()\n\nRemove this VM_BUG_ON(), as Balbir stated:\n\nWe used to have a for loop with !list_empty() as a termination condition\nand VM_BUG_ON(!pc) is a spill over.  With the new loop, VM_BUG_ON(!pc) does\nnot make sense.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nAcked-by: Balbir Singh \u003cbalbir@in.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": "b5a0e011329431b90d315eaf6ca5fdb41df7a117",
      "tree": "dc0503d0b6ee2d74cdf4e332524b810ccde5050f",
      "parents": [
        "bcdca225bfa016100985e5fc7e51cdc1d68beaa6"
      ],
      "author": {
        "name": "Alexander van Heukelum",
        "email": "heukelum@mailshack.com",
        "time": "Sat Feb 23 15:24:06 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sat Feb 23 17:13:24 2008 -0800"
      },
      "message": "Solve section mismatch for free_area_init_core.\n\nWARNING: vmlinux.o(.meminit.text+0x649):\nSection mismatch in reference from the\nfunction free_area_init_core() to the function .init.text:setup_usemap()\nThe function __meminit free_area_init_core() references\na function __init setup_usemap().\nIf free_area_init_core is only used by setup_usemap then\nannotate free_area_init_core with a matching annotation.\n\nThe warning is covers this stack of functions in mm/page_alloc.c:\n\nalloc_bootmem_node must be marked __init.\nalloc_bootmem_node is used by setup_usemap, if !SPARSEMEM.\n(usemap_size is only used by setup_usemap, if !SPARSEMEM.)\nsetup_usemap is only used by free_area_init_core.\nfree_area_init_core is only used by free_area_init_node.\n\nfree_area_init_node is used by:\narch/alpha/mm/numa.c: __init paging_init()\narch/arm/mm/init.c: __init bootmem_init_node()\narch/avr32/mm/init.c: __init paging_init()\narch/cris/arch-v10/mm/init.c: __init paging_init()\narch/cris/arch-v32/mm/init.c: __init paging_init()\narch/m32r/mm/discontig.c: __init zone_sizes_init()\narch/m32r/mm/init.c: __init zone_sizes_init()\narch/m68k/mm/motorola.c: __init paging_init()\narch/m68k/mm/sun3mmu.c: __init paging_init()\narch/mips/sgi-ip27/ip27-memory.c: __init paging_init()\narch/parisc/mm/init.c: __init paging_init()\narch/sparc/mm/srmmu.c: __init srmmu_paging_init()\narch/sparc/mm/sun4c.c: __init sun4c_paging_init()\narch/sparc64/mm/init.c: __init paging_init()\nmm/page_alloc.c: __init free_area_init_nodes()\nmm/page_alloc.c: __init free_area_init()\nand\nmm/memory_hotplug.c: hotadd_new_pgdat()\n\nhotadd_new_pgdat can not be an __init function, but:\n\nIt is compiled for MEMORY_HOTPLUG configurations only\nMEMORY_HOTPLUG depends on SPARSEMEM || X86_64_ACPI_NUMA\nX86_64_ACPI_NUMA depends on X86_64\nARCH_FLATMEM_ENABLE depends on X86_32\nARCH_DISCONTIGMEM_ENABLE depends on X86_32\nSo X86_64_ACPI_NUMA implies SPARSEMEM, right?\n\nSo we can mark the stack of functions __init for !SPARSEMEM, but we must mark\nthem __meminit for SPARSEMEM configurations.  This is ok, because then the\ncalls to alloc_bootmem_node are also avoided.\n\nCompile-tested on:\nsilly minimal config\ndefconfig x86_32\ndefconfig x86_64\ndefconfig x86_64 -HIBERNATION +MEMORY_HOTPLUG\n\nSigned-off-by: Alexander van Heukelum \u003cheukelum@fastmail.fm\u003e\nReviewed-by: Sam Ravnborg \u003csam@ravnborg.org\u003e\nAcked-by: Geert Uytterhoeven \u003cgeert@linux-m68k.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e5df70ab194543522397fa3da8c8f80564a0f7d3",
      "tree": "1a4354932196a1611752032362689bd404836af8",
      "parents": [
        "745329c4a2a25efbf5ba6cd7842e07840e4e9775"
      ],
      "author": {
        "name": "Andy Whitcroft",
        "email": "apw@shadowen.org",
        "time": "Sat Feb 23 15:23:32 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sat Feb 23 17:12:13 2008 -0800"
      },
      "message": "hugetlb: ensure we do not reference a surplus page after handing it to buddy\n\nWhen we free a page via free_huge_page and we detect that we are in surplus\nthe page will be returned to the buddy.  After this we no longer own the page.\n\nHowever at the end free_huge_page we clear out our mapping pointer from\npage private.  Even where the page is not a surplus we free the page to\nthe hugepage pool, drop the pool locks and then clear page private.  In\neither case the page may have been reallocated.  BAD.\n\nMake sure we clear out page private before we free the page.\n\nSigned-off-by: Andy Whitcroft \u003capw@shadowen.org\u003e\nAcked-by: Adam Litke \u003cagl@us.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": "00e962c5408b9f2d0bebd2308673fe982cb9a5fe",
      "tree": "be1095cead2711eb26572e8e68054c6fd0f7f3a2",
      "parents": [
        "aa3f98037ce3bcf850bb41f7530754d27481a792"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 19 09:08:49 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 19 09:08:49 2008 -0800"
      },
      "message": "Revert \"SLUB: Alternate fast paths using cmpxchg_local\"\n\nThis reverts commit 1f84260c8ce3b1ce26d4c1d6dedc2f33a3a29c0c, which is\nsuspected to be the reason for some very occasional and hard-to-trigger\ncrashes that usually look related to memory allocation (mostly reported\nin networking, but since that\u0027s generally the most common source of\nshortlived allocations - and allocations in interrupt contexts - that in\nitself is not a big clue).\n\nSee for example\n\thttp://bugzilla.kernel.org/show_bug.cgi?id\u003d9973\n\thttp://lkml.org/lkml/2008/2/19/278\netc.\n\nOne promising suspicion for what the root cause of bug is (which also\nexplains why it\u0027s so hard to trigger in practice) came from Eric\nDumazet:\n\n   \"I wonder how SLUB_FASTPATH is supposed to work, since it is affected\n    by a classical ABA problem of lockless algo.\n\n    cmpxchg_local(\u0026c-\u003efreelist, object, object[c-\u003eoffset]) can succeed,\n    while an interrupt came (on this cpu), and several allocations were\n    done, and one free was performed at the end of this interruption, so\n    \u0027object\u0027 was recycled.\n\n    c-\u003efreelist can then contain the previous value (object), but\n    object[c-\u003eoffset] was changed by IRQ.\n\n    We then put back in freelist an already allocated object.\"\n\nbut another reason for the revert is simply that everybody agrees that\nthis code was the main suspect just by virtue of the pattern of oopses.\n\nCc: Torsten Kaiser \u003cjust.for.lkml@googlemail.com\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Mathieu Desnoyers \u003cmathieu.desnoyers@polymtl.ca\u003e\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f527cf405017e60ceb28f84e2d60ab16fc34f209",
      "tree": "eadf0bfa385dad2e76a27d9a01cdcb22bad0efc1",
      "parents": [
        "cead99dcf48eeaaac0a1ececff9c979756b79294",
        "331dc558fa020451ff773973cee855fd721aa88e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Feb 14 21:24:02 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Feb 14 21:24:02 2008 -0800"
      },
      "message": "Merge branch \u0027slab-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/christoph/vm\n\n* \u0027slab-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/christoph/vm:\n  slub: Support 4k kmallocs again to compensate for page allocator slowness\n  slub: Fallback to kmalloc_large for failing higher order allocs\n  slub: Determine gfpflags once and not every time a slab is allocated\n  make slub.c:slab_address() static\n  slub: kmalloc page allocator pass-through cleanup\n  slab: avoid double initialization \u0026 do initialization in 1 place\n"
    },
    {
      "commit": "664a1566df81b44f7e5e234d55e3bc8c6c0be211",
      "tree": "17eb4b827091279a60f60a36b34e0437ba804dc1",
      "parents": [
        "b9e222904ce92e1b277f2b85411d1eb6bfe27410",
        "f8d8406bcb58ff70e97b71c35ff5be90c54fc3d0"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Feb 14 21:23:19 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Feb 14 21:23:19 2008 -0800"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-x86\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-x86:\n  x86: cpa, fix out of date comment\n  KVM is not seen under X86 config with latest git (32 bit compile)\n  x86: cpa: ensure page alignment\n  x86: include proper prototypes for rodata_test\n  x86: fix gart_iommu_init()\n  x86: EFI set_memory_x()/set_memory_uc() fixes\n  x86: make dump_pagetable() static\n  x86: fix \"BUG: sleeping function called from invalid context\" in print_vma_addr()\n"
    },
    {
      "commit": "cf28b4863f9ee8f122e8ff3ac0d403e07ba9c6d9",
      "tree": "65c91f6911b34c32e517938289621ce0e7baeaf3",
      "parents": [
        "c32c2f63a9d6c953aaf168c0b2551da9734f76d2"
      ],
      "author": {
        "name": "Jan Blunck",
        "email": "jblunck@suse.de",
        "time": "Thu Feb 14 19:38:44 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Feb 14 21:17:09 2008 -0800"
      },
      "message": "d_path: Make d_path() use a struct path\n\nd_path() is used on a \u003cdentry,vfsmount\u003e pair.  Lets use a struct path to\nreflect this.\n\n[akpm@linux-foundation.org: fix build in mm/memory.c]\nSigned-off-by: Jan Blunck \u003cjblunck@suse.de\u003e\nAcked-by: Bryan Wu \u003cbryan.wu@analog.com\u003e\nAcked-by: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: \"J. Bruce Fields\" \u003cbfields@fieldses.org\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Michael Halcrow \u003cmhalcrow@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c32c2f63a9d6c953aaf168c0b2551da9734f76d2",
      "tree": "14eca3083f3de4a87a95359ab66109c10add1ae7",
      "parents": [
        "e83aece3afad4d56cc01abe069d3519e851cd2de"
      ],
      "author": {
        "name": "Jan Blunck",
        "email": "jblunck@suse.de",
        "time": "Thu Feb 14 19:38:43 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Feb 14 21:17:08 2008 -0800"
      },
      "message": "d_path: Make seq_path() use a struct path argument\n\nseq_path() is always called with a dentry and a vfsmount from a struct path.\nMake seq_path() take it directly as an argument.\n\nSigned-off-by: Jan Blunck \u003cjblunck@suse.de\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: \"J. Bruce Fields\" \u003cbfields@fieldses.org\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "331dc558fa020451ff773973cee855fd721aa88e",
      "tree": "12adf10a7e53c8d07835487694d8180b991304cd",
      "parents": [
        "71c7a06ff0a2ba0434ace4d7aa679537c4211d9d"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Thu Feb 14 14:28:09 2008 -0800"
      },
      "committer": {
        "name": "Christoph Lameter",
        "email": "christoph@stapp.engr.sgi.com",
        "time": "Thu Feb 14 15:30:02 2008 -0800"
      },
      "message": "slub: Support 4k kmallocs again to compensate for page allocator slowness\n\nCurrently we hand off PAGE_SIZEd kmallocs to the page allocator in the\nmistaken belief that the page allocator can handle these allocations\neffectively. However, measurements indicate a minimum slowdown by the\nfactor of 8 (and that is only SMP, NUMA is much worse) vs the slub fastpath\nwhich causes regressions in tbench.\n\nIncrease the number of kmalloc caches by one so that we again handle 4k\nkmallocs directly from slub. 4k page buffering for the page allocator\nwill be performed by slub like done by slab.\n\nAt some point the page allocator fastpath should be fixed. A lot of the kernel\nwould benefit from a faster ability to allocate a single page. If that is\ndone then the 4k allocs may again be forwarded to the page allocator and this\npatch could be reverted.\n\nReviewed-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\n"
    },
    {
      "commit": "71c7a06ff0a2ba0434ace4d7aa679537c4211d9d",
      "tree": "99f5a2a5e27eee88f9917d207e2849aac3ba7e62",
      "parents": [
        "b7a49f0d4c34166ae84089d9f145cfaae1b0eec5"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Thu Feb 14 14:28:01 2008 -0800"
      },
      "committer": {
        "name": "Christoph Lameter",
        "email": "christoph@stapp.engr.sgi.com",
        "time": "Thu Feb 14 15:30:01 2008 -0800"
      },
      "message": "slub: Fallback to kmalloc_large for failing higher order allocs\n\nSlub already has two ways of allocating an object. One is via its own\nlogic and the other is via the call to kmalloc_large to hand off object\nallocation to the page allocator. kmalloc_large is typically used\nfor objects \u003e\u003d PAGE_SIZE.\n\nWe can use that handoff to avoid failing if a higher order kmalloc slab\nallocation cannot be satisfied by the page allocator. If we reach the\nout of memory path then simply try a kmalloc_large(). kfree() can\nalready handle the case of an object that was allocated via the page\nallocator and so this will work just fine (apart from object\naccounting...).\n\nFor any kmalloc slab that already requires higher order allocs (which\nmakes it impossible to use the page allocator fastpath!)\nwe just use PAGE_ALLOC_COSTLY_ORDER to get the largest number of\nobjects in one go from the page allocator slowpath.\n\nOn a 4k platform this patch will lead to the following use of higher\norder pages for the following kmalloc slabs:\n\n8 ... 1024\torder 0\n2048 .. 4096\torder 3 (4k slab only after the next patch)\n\nWe may waste some space if fallback occurs on a 2k slab but we\nare always able to fallback to an order 0 alloc.\n\nReviewed-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\n"
    },
    {
      "commit": "b7a49f0d4c34166ae84089d9f145cfaae1b0eec5",
      "tree": "716bd20c8b920511f032a42be78c0a523a17565d",
      "parents": [
        "dada123d99c241d1a45798a7c77bcf99c4968704"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Thu Feb 14 14:21:32 2008 -0800"
      },
      "committer": {
        "name": "Christoph Lameter",
        "email": "christoph@stapp.engr.sgi.com",
        "time": "Thu Feb 14 15:30:01 2008 -0800"
      },
      "message": "slub: Determine gfpflags once and not every time a slab is allocated\n\nCurrently we determine the gfp flags to pass to the page allocator\neach time a slab is being allocated.\n\nDetermine the bits to be set at the time the slab is created. Store\nin a new allocflags field and add the flags in allocate_slab().\n\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nReviewed-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\n"
    },
    {
      "commit": "dada123d99c241d1a45798a7c77bcf99c4968704",
      "tree": "9ee99bc6067c8673880c1a6a2998a9ba61356de0",
      "parents": [
        "eada35efcb2773cf49aa26277e056122e1a3405c"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@kernel.org",
        "time": "Wed Feb 13 23:30:32 2008 +0200"
      },
      "committer": {
        "name": "Christoph Lameter",
        "email": "christoph@stapp.engr.sgi.com",
        "time": "Thu Feb 14 15:30:01 2008 -0800"
      },
      "message": "make slub.c:slab_address() static\n\nslab_address() can become static.\n\nSigned-off-by: Adrian Bunk \u003cbunk@kernel.org\u003e\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\n"
    },
    {
      "commit": "eada35efcb2773cf49aa26277e056122e1a3405c",
      "tree": "69803b03b6f6106722d4cc293678f2e3183bec2e",
      "parents": [
        "e51bfd0ad10600a9fe4c8ede5ac2272e80075008"
      ],
      "author": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Mon Feb 11 22:47:46 2008 +0200"
      },
      "committer": {
        "name": "Christoph Lameter",
        "email": "christoph@stapp.engr.sgi.com",
        "time": "Thu Feb 14 15:30:01 2008 -0800"
      },
      "message": "slub: kmalloc page allocator pass-through cleanup\n\nThis adds a proper function for kmalloc page allocator pass-through. While it\nsimplifies any code that does slab tracing code a lot, I think it\u0027s a\nworthwhile cleanup in itself.\n\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\n"
    },
    {
      "commit": "e51bfd0ad10600a9fe4c8ede5ac2272e80075008",
      "tree": "a204156fbb0036fb76e89ceffa15a30e90bc3f75",
      "parents": [
        "e760e716d47b48caf98da348368fd41b4a9b9e7e"
      ],
      "author": {
        "name": "Marcin Slusarz",
        "email": "marcin.slusarz@gmail.com",
        "time": "Sun Feb 10 11:21:54 2008 +0100"
      },
      "committer": {
        "name": "Christoph Lameter",
        "email": "christoph@stapp.engr.sgi.com",
        "time": "Thu Feb 14 15:30:01 2008 -0800"
      },
      "message": "slab: avoid double initialization \u0026 do initialization in 1 place\n\n- alloc_slabmgmt: initialize all slab fields in 1 place\n- slab-\u003enodeid was initialized twice: in alloc_slabmgmt\n  and immediately after it in cache_grow\n\nSigned-off-by: Marcin Slusarz \u003cmarcin.slusarz@gmail.com\u003e\nCC: Christoph Lameter \u003cclameter@sgi.com\u003e\nReviewed-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\n"
    },
    {
      "commit": "e8bff74afbdb4ad72bf6135c84289c47cf557892",
      "tree": "46b560c1f055a1fe7dbb9ad6b42b19f521e1ec27",
      "parents": [
        "e760e716d47b48caf98da348368fd41b4a9b9e7e"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Feb 13 20:21:06 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Feb 14 23:30:19 2008 +0100"
      },
      "message": "x86: fix \"BUG: sleeping function called from invalid context\" in print_vma_addr()\n\nJiri Kosina reported the following deadlock scenario with\nshow_unhandled_signals enabled:\n\n [   68.379022] gnome-settings-[2941] trap int3 ip:3d2c840f34\n sp:7fff36f5d100 error:0\u003c3\u003eBUG: sleeping function called from invalid\n context at kernel/rwsem.c:21\n [   68.379039] in_atomic():1, irqs_disabled():0\n [   68.379044] no locks held by gnome-settings-/2941.\n [   68.379050] Pid: 2941, comm: gnome-settings- Not tainted 2.6.25-rc1 #30\n [   68.379054]\n [   68.379056] Call Trace:\n [   68.379061]  \u003c#DB\u003e  [\u003cffffffff81064883\u003e] ? __debug_show_held_locks+0x13/0x30\n [   68.379109]  [\u003cffffffff81036765\u003e] __might_sleep+0xe5/0x110\n [   68.379123]  [\u003cffffffff812f2240\u003e] down_read+0x20/0x70\n [   68.379137]  [\u003cffffffff8109cdca\u003e] print_vma_addr+0x3a/0x110\n [   68.379152]  [\u003cffffffff8100f435\u003e] do_trap+0xf5/0x170\n [   68.379168]  [\u003cffffffff8100f52b\u003e] do_int3+0x7b/0xe0\n [   68.379180]  [\u003cffffffff812f4a6f\u003e] int3+0x9f/0xd0\n [   68.379203]  \u003c\u003cEOE\u003e\u003e\n [   68.379229]  in libglib-2.0.so.0.1505.0[3d2c800000+dc000]\n\nand tracked it down to:\n\n  commit 03252919b79891063cf99145612360efbdf9500b\n  Author: Andi Kleen \u003cak@suse.de\u003e\n  Date:   Wed Jan 30 13:33:18 2008 +0100\n\n      x86: print which shared library/executable faulted in segfault etc. messages\n\nthe problem is that we call down_read() from an atomic context.\n\nSolve this by returning from print_vma_addr() if the preempt count is\nelevated. Update preempt_conditional_sti / preempt_conditional_cli to\nunconditionally lift the preempt count even on !CONFIG_PREEMPT.\n\nReported-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "064d9efe947542097be669581f82d6b097e81d1a",
      "tree": "ddfc9f1c4d60135a7d7a1c5ebb7d0e85f683cfcb",
      "parents": [
        "2695a14d315c014474ccadbaed40b0169b00cb5b"
      ],
      "author": {
        "name": "Nishanth Aravamudan",
        "email": "nacc@us.ibm.com",
        "time": "Wed Feb 13 15:03:19 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Feb 13 16:21:18 2008 -0800"
      },
      "message": "hugetlb: fix overcommit locking\n\nproc_doulongvec_minmax() calls copy_to_user()/copy_from_user(), so we can\u0027t\nhold hugetlb_lock over the call.  Use a dummy variable to store the sysctl\nresult, like in hugetlb_sysctl_handler(), then grab the lock to update\nnr_overcommit_huge_pages.\n\nSigned-off-by: Nishanth Aravamudan \u003cnacc@us.ibm.com\u003e\nReported-by: Miles Lane \u003cmiles.lane@gmail.com\u003e\nCc: Adam Litke \u003cagl@us.ibm.com\u003e\nCc: David Gibson \u003cdavid@gibson.dropbear.id.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b5606c2d4447e80b1d72406af4e78af1eda611d4",
      "tree": "ebdaa1a0aae4279b84af82651c16a8777f76bfe4",
      "parents": [
        "fbf6bfca76d50abef478ba902b8597ecbadfd390"
      ],
      "author": {
        "name": "Harvey Harrison",
        "email": "harvey.harrison@gmail.com",
        "time": "Wed Feb 13 15:03:16 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Feb 13 16:21:18 2008 -0800"
      },
      "message": "remove final fastcall users\n\nfastcall always expands to empty, remove it.\n\nSigned-off-by: Harvey Harrison \u003charvey.harrison@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "31f1de46b90ad360a16e7af3e277d104961df923",
      "tree": "a54e8698d4e4d088c4008e0ae91b579b13d2c208",
      "parents": [
        "1a510089849ff9f70b654659bf976a6baf3a4833"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Tue Feb 12 13:30:22 2008 +0900"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Feb 11 20:48:29 2008 -0800"
      },
      "message": "mempolicy: silently restrict nodemask to allowed nodes\n\nKosaki Motohito noted that \"numactl --interleave\u003dall ...\" failed in the\npresence of memoryless nodes.  This patch attempts to fix that problem.\n\nSome background:\n\nnumactl --interleave\u003dall calls set_mempolicy(2) with a fully populated\n[out to MAXNUMNODES] nodemask.  set_mempolicy() [in do_set_mempolicy()]\ncalls contextualize_policy() which requires that the nodemask be a\nsubset of the current task\u0027s mems_allowed; else EINVAL will be returned.\n\nA task\u0027s mems_allowed will always be a subset of node_states[N_HIGH_MEMORY]\ni.e., nodes with memory.  So, a fully populated nodemask will be\ndeclared invalid if it includes memoryless nodes.\n\n  NOTE:  the same thing will occur when running in a cpuset\n         with restricted mem_allowed--for the same reason:\n         node mask contains dis-allowed nodes.\n\nmbind(2), on the other hand, just masks off any nodes in the nodemask\nthat are not included in the caller\u0027s mems_allowed.\n\nIn each case [mbind() and set_mempolicy()], mpol_check_policy() will\ncomplain [again, resulting in EINVAL] if the nodemask contains any\nmemoryless nodes.  This is somewhat redundant as mpol_new() will remove\nmemoryless nodes for interleave policy, as will bind_zonelist()--called\nby mpol_new() for BIND policy.\n\nProposed fix:\n\n1) modify contextualize_policy logic to:\n   a) remember whether the incoming node mask is empty.\n   b) if not, restrict the nodemask to allowed nodes, as is\n      currently done in-line for mbind().  This guarantees\n      that the resulting mask includes only nodes with memory.\n\n      NOTE:  this is a [benign, IMO] change in behavior for\n             set_mempolicy().  Dis-allowed nodes will be\n             silently ignored, rather than returning an error.\n\n   c) fold this code into mpol_check_policy(), replace 2 calls to\n      contextualize_policy() to call mpol_check_policy() directly\n      and remove contextualize_policy().\n\n2) In existing mpol_check_policy() logic, after \"contextualization\":\n   a) MPOL_DEFAULT:  require that in coming mask \"was_empty\"\n   b) MPOL_{BIND|INTERLEAVE}:  require that contextualized nodemask\n      contains at least one node.\n   c) add a case for MPOL_PREFERRED:  if in coming was not empty\n      and resulting mask IS empty, user specified invalid nodes.\n      Return EINVAL.\n   c) remove the now redundant check for memoryless nodes\n\n3) remove the now redundant masking of policy nodes for interleave\n   policy from mpol_new().\n\n4) Now that mpol_check_policy() contextualizes the nodemask, remove\n   the in-line nodes_and() from sys_mbind().  I believe that this\n   restores mbind() to the behavior before the memoryless-nodes\n   patch series.  E.g., we\u0027ll no longer treat an invalid nodemask\n   with MPOL_PREFERRED as local allocation.\n\n[ Patch history:\n\n  v1 -\u003e v2:\n   - Communicate whether or not incoming node mask was empty to\n     mpol_check_policy() for better error checking.\n   - As suggested by David Rientjes, remove the now unused\n     cpuset_nodes_subset_current_mems_allowed() from cpuset.h\n\n  v2 -\u003e v3:\n   - As suggested by Kosaki Motohito, fold the \"contextualization\"\n     of policy nodemask into mpol_check_policy().  Looks a little\n     cleaner. ]\n\nSigned-off-by:  Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nSigned-off-by:  KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nTested-by:      KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nAcked-by:       David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "900cf086fd2fbad07f72f4575449e0d0958f860f",
      "tree": "9d48ca4463111c074ea8688fd8041115387156e1",
      "parents": [
        "b1292b17dc03fcd90f3301974cea1b7c61371ba5"
      ],
      "author": {
        "name": "Jonathan Corbet",
        "email": "corbet@lwn.net",
        "time": "Mon Feb 11 16:17:33 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Feb 11 20:44:44 2008 -0800"
      },
      "message": "Be more robust about bad arguments in get_user_pages()\n\nSo I spent a while pounding my head against my monitor trying to figure\nout the vmsplice() vulnerability - how could a failure to check for\n*read* access turn into a root exploit? It turns out that it\u0027s a buffer\noverflow problem which is made easy by the way get_user_pages() is\ncoded.\n\nIn particular, \"len\" is a signed int, and it is only checked at the\n*end* of a do {} while() loop.  So, if it is passed in as zero, the loop\nwill execute once and decrement len to -1.  At that point, the loop will\nproceed until the next invalid address is found; in the process, it will\nlikely overflow the pages array passed in to get_user_pages().\n\nI think that, if get_user_pages() has been asked to grab zero pages,\nthat\u0027s what it should do.  Thus this patch; it is, among other things,\nenough to block the (already fixed) root exploit and any others which\nmight be lurking in similar code.  I also think that the number of pages\nshould be unsigned, but changing the prototype of this function probably\nrequires some more careful review.\n\nSigned-off-by: Jonathan Corbet \u003ccorbet@lwn.net\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "60c12b1202a60eabb1c61317e5d2678fcea9893f",
      "tree": "143e5bdbd10d32832fce9183500deebad6c6e4db",
      "parents": [
        "6966a97753854c8b5336cf3997d5d1d205d91b12"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Sat Feb 09 00:10:15 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sat Feb 09 11:08:33 2008 -0800"
      },
      "message": "memcontrol: add vm_match_cgroup()\n\nmm_cgroup() is exclusively used to test whether an mm\u0027s mem_cgroup pointer\nis pointing to a specific cgroup.  Instead of returning the pointer, we can\njust do the test itself in a new macro:\n\n\tvm_match_cgroup(mm, cgroup)\n\nreturns non-zero if the mm\u0027s mem_cgroup points to cgroup.  Otherwise it\nreturns zero.\n\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Adrian Bunk \u003cbunk@stusta.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b1d0e4f535e10775cffde922208b49629169aeaa",
      "tree": "c5fa68fb25ffd2485da5de236fcf2b67d9df3dfd",
      "parents": [
        "6a306e8b4c81a1c1f538e390d92bfe80d04b254c"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Sat Feb 09 01:15:19 2008 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Feb 08 18:57:39 2008 -0800"
      },
      "message": "mm: special mapping nopage\n\nConvert special mapping install from nopage to fault.\n\nBecause the \"vm_file\" is NULL for the special mapping, the generic VM\ncode has messed up \"vm_pgoff\" thinking that it\u0027s an anonymous mapping\nand the offset does\u0027t matter.  For that reason, we need to undo the\nvm_pgoff offset that got added into vmf-\u003epgoff.\n\n[ We _really_ should clean that up - either by making this whole special\n  mapping code just use a real file entry rather than that ugly array of\n  \"struct page\" pointers, or by just making the VM code realize that\n  even if vm_file is NULL it may not be a regular anonymous mmap.\n\t\t\t\t\t\t\t - Linus ]\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: linux-mm@kvack.org\nCc: linux-kernel@vger.kernel.org\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2f569afd9ced9ebec9a6eb3dbf6f83429be0a7b4",
      "tree": "23a31763887d9505e62e9d7cc8ec2fa4b86bd380",
      "parents": [
        "13214adf738abc92b0a00c0763fd3be79eebaa7c"
      ],
      "author": {
        "name": "Martin Schwidefsky",
        "email": "schwidefsky@de.ibm.com",
        "time": "Fri Feb 08 04:22:04 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Feb 08 09:22:42 2008 -0800"
      },
      "message": "CONFIG_HIGHPTE vs. sub-page page tables.\n\nBackground: I\u0027ve implemented 1K/2K page tables for s390.  These sub-page\npage tables are required to properly support the s390 virtualization\ninstruction with KVM.  The SIE instruction requires that the page tables\nhave 256 page table entries (pte) followed by 256 page status table entries\n(pgste).  The pgstes are only required if the process is using the SIE\ninstruction.  The pgstes are updated by the hardware and by the hypervisor\nfor a number of reasons, one of them is dirty and reference bit tracking.\nTo avoid wasting memory the standard pte table allocation should return\n1K/2K (31/64 bit) and 2K/4K if the process is using SIE.\n\nProblem: Page size on s390 is 4K, page table size is 1K or 2K.  That means\nthe s390 version for pte_alloc_one cannot return a pointer to a struct\npage.  Trouble is that with the CONFIG_HIGHPTE feature on x86 pte_alloc_one\ncannot return a pointer to a pte either, since that would require more than\n32 bit for the return value of pte_alloc_one (and the pte * would not be\naccessible since its not kmapped).\n\nSolution: The only solution I found to this dilemma is a new typedef: a\npgtable_t.  For s390 pgtable_t will be a (pte *) - to be introduced with a\nlater patch.  For everybody else it will be a (struct page *).  The\nadditional problem with the initialization of the ptl lock and the\nNR_PAGETABLE accounting is solved with a constructor pgtable_page_ctor and\na destructor pgtable_page_dtor.  The page table allocation and free\nfunctions need to call these two whenever a page table page is allocated or\nfreed.  pmd_populate will get a pgtable_t instead of a struct page pointer.\n To get the pgtable_t back from a pmd entry that has been installed with\npmd_populate a new function pmd_pgtable is added.  It replaces the pmd_page\ncall in free_pte_range and apply_to_pte_range.\n\nSigned-off-by: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: \u003clinux-arch@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b76db735407a26c1036fdfef249ddc35eb969bc4",
      "tree": "02a9eb85b34765bc1eb82d632b1913ce79b8a6d6",
      "parents": [
        "680d794babebc74484c141448baa9b95b211cf5e"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Fri Feb 08 04:21:49 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Feb 08 09:22:41 2008 -0800"
      },
      "message": "mount-options-fix-tmpfs-fix\n\nDocumentation/SubmitCheckist, please.\n\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "680d794babebc74484c141448baa9b95b211cf5e",
      "tree": "fa8b9c085fceaed12b54ea20a8c04696c750053e",
      "parents": [
        "90d09e141bb23bf0df5e31c40fb3175c17e8bda2"
      ],
      "author": {
        "name": "akpm@linux-foundation.org",
        "email": "akpm@linux-foundation.org",
        "time": "Fri Feb 08 04:21:48 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Feb 08 09:22:41 2008 -0800"
      },
      "message": "mount options: fix tmpfs\n\nAdd .show_options super operation to tmpfs.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    }
  ],
  "next": "36e789144267105e0b3f2b9bca7db3184fce50dc"
}
