)]}'
{
  "log": [
    {
      "commit": "0fe41b8982001cd14ee2c77cd776735a5024e98b",
      "tree": "83e65d595c413d55259ea14fb97748ce5efe5707",
      "parents": [
        "eedf2c5296a8dfaaf9aec1a938c1d3bd73159a30",
        "9759d22c8348343b0da4e25d6150c41712686c14"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 28 14:03:14 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 28 14:03:14 2009 -0700"
      },
      "message": "Merge branch \u0027devel\u0027 of master.kernel.org:/home/rmk/linux-2.6-arm\n\n* \u0027devel\u0027 of master.kernel.org:/home/rmk/linux-2.6-arm: (422 commits)\n  [ARM] 5435/1: fix compile warning in sanity_check_meminfo()\n  [ARM] 5434/1: ARM: OMAP: Fix mailbox compile for 24xx\n  [ARM] pxa: fix the bad assumption that PCMCIA sockets always start with 0\n  [ARM] pxa: fix Colibri PXA300 and PXA320 LCD backlight pins\n  imxfb: Fix TFT mode\n  i.MX21/27: remove ifdef CONFIG_FB_IMX\n  imxfb: add clock support\n  mxc: add arch_reset() function\n  clkdev: add possibility to get a clock based on the device name\n  i.MX1: remove fb support from mach-imx\n  [ARM] pxa: build arch/arm/plat-pxa/mfp.c only when PXA3xx or ARCH_MMP defined\n  Gemini: Add support for Teltonika RUT100\n  Gemini: gpiolib based GPIO support v2\n  MAINTAINERS: add myself as Gemini architecture maintainer\n  ARM: Add Gemini architecture v3\n  [ARM] OMAP: Fix compile for omap2_init_common_hw()\n  MAINTAINERS: Add myself as Faraday ARM core variant maintainer\n  ARM: Add support for FA526 v2\n  [ARM] acorn,ebsa110,footbridge,integrator,sa1100: Convert asm/io.h to linux/io.h\n  [ARM] collie: fix two minor formatting nits\n  ...\n"
    },
    {
      "commit": "ed40d0c472b136682b2fcba05f89762859c7374f",
      "tree": "076b83a26bcd63d6158463735dd34c10bbc591dc",
      "parents": [
        "9e495834e59ca9b29f1a1f63b9f5533bb022ac49",
        "5d80f8e5a9dc9c9a94d4aeaa567e219a808b8a4a"
      ],
      "author": {
        "name": "Russell King",
        "email": "rmk@dyn-67.arm.linux.org.uk",
        "time": "Sat Mar 28 20:29:51 2009 +0000"
      },
      "committer": {
        "name": "Russell King",
        "email": "rmk+kernel@arm.linux.org.uk",
        "time": "Sat Mar 28 20:29:51 2009 +0000"
      },
      "message": "Merge branch \u0027origin\u0027 into devel\n\nConflicts:\n\tsound/soc/pxa/pxa2xx-i2s.c\n"
    },
    {
      "commit": "6e15cf04860074ad032e88c306bea656bbdd0f22",
      "tree": "c346383bb7563e8d66b2f4a502f875b259c34870",
      "parents": [
        "be0ea69674ed95e1e98cb3687a241badc756d228",
        "60db56422043aaa455ac7f858ce23c273220f9d9"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Mar 26 21:39:17 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Mar 27 17:28:43 2009 +0100"
      },
      "message": "Merge branch \u0027core/percpu\u0027 into percpu-cpumask-x86-for-linus-2\n\nConflicts:\n\tarch/parisc/kernel/irq.c\n\tarch/x86/include/asm/fixmap_64.h\n\tarch/x86/include/asm/setup.h\n\tkernel/irq/handle.c\n\nSemantic merge:\n        arch/x86/include/asm/fixmap.h\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "be0ea69674ed95e1e98cb3687a241badc756d228",
      "tree": "36d0db8fe389d65bbc8c7aa5be0e61b066f9536a",
      "parents": [
        "4496d937a518fde0d0e1980e4ab470cedb4b50cd",
        "15a5b0a4912d98a9615ef457c7bde8d08195a771"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 26 16:18:17 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 26 16:18:17 2009 -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  slob: fix lockup in slob_free()\n  slub: use get_track()\n  slub: rename calculate_min_partial() to set_min_partial()\n  slub: add min_partial sysfs tunable\n  slub: move min_partial to struct kmem_cache\n  SLUB: Fix default slab order for big object sizes\n  SLUB: Do not pass 8k objects through to the page allocator\n  SLUB: Introduce and use SLUB_MAX_SIZE and SLUB_PAGE_SHIFT constants\n  slob: clean up the code\n  SLUB: Use -\u003eobjsize from struct kmem_cache_cpu in slab_free()\n"
    },
    {
      "commit": "86d9c070175de65890794fa227b68297da6206d8",
      "tree": "1aa4f1d1ecf397bd0d745a67b9d828420a99a8b4",
      "parents": [
        "413e3376485e6cf81f4cf6a4dbc0de0326535093",
        "a2a9537ac0b37a5da6fbe7e1e9cb06c524d2a9c4"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 26 16:03:04 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 26 16:03:04 2009 -0700"
      },
      "message": "Merge branch \u0027for-2.6.30\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-2.6.30\u0027 of git://git.kernel.dk/linux-2.6-block:\n  Get rid of pdflush_operation() in emergency sync and remount\n  btrfs: get rid of current_is_pdflush() in btrfs_btree_balance_dirty\n  Move the default_backing_dev_info out of readahead.c and into backing-dev.c\n  block: Repeated lines in switching-sched.txt\n  bsg: Remove bogus check against request_queue-\u003emax_sectors\n  block: WARN in __blk_put_request() for potential bio leak\n  loop: fix circular locking in loop_clr_fd()\n  loop: support barrier writes\n  bsg: add support for tail queuing\n  cpqarray: enable bus mastering\n  block: genhd.h cleanup patch\n  block: add private bio_set for bio integrity allocations\n  block: genhd.h comment needs updating\n  block: get rid of unused blkdev_free_rq() define\n  block: remove various blk_queue_*() setting functions in blk_init_queue_node()\n  cciss: add BUILD_BUG_ON() for catching bad CommandList_struct alignment\n  block: don\u0027t create bio_vec slabs of less than the inline number\n  block: cleanup bio_alloc_bioset()\n"
    },
    {
      "commit": "8d80ce80e1d58ba9cd3e3972b112cccd6b4008f4",
      "tree": "16d3cca8d260c731d02a4e5e1ea5b9817c9c3626",
      "parents": [
        "1646df40bb111715a90ce0b86448dabbcc5b3f3d",
        "703a3cd72817e99201cef84a8a7aecc60b2b3581"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 26 11:03:39 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 26 11:03:39 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6: (71 commits)\n  SELinux: inode_doinit_with_dentry drop no dentry printk\n  SELinux: new permission between tty audit and audit socket\n  SELinux: open perm for sock files\n  smack: fixes for unlabeled host support\n  keys: make procfiles per-user-namespace\n  keys: skip keys from another user namespace\n  keys: consider user namespace in key_permission\n  keys: distinguish per-uid keys in different namespaces\n  integrity: ima iint radix_tree_lookup locking fix\n  TOMOYO: Do not call tomoyo_realpath_init unless registered.\n  integrity: ima scatterlist bug fix\n  smack: fix lots of kernel-doc notation\n  TOMOYO: Don\u0027t create securityfs entries unless registered.\n  TOMOYO: Fix exception policy read failure.\n  SELinux: convert the avc cache hash list to an hlist\n  SELinux: code readability with avc_cache\n  SELinux: remove unused av.decided field\n  SELinux: more careful use of avd in avc_has_perm_noaudit\n  SELinux: remove the unused ae.used\n  SELinux: check seqno when updating an avc_node\n  ...\n"
    },
    {
      "commit": "1b5e62b42b55c509eea04c3c0f25e42c8b35b564",
      "tree": "be5d783ec67610445828e496706f1e02c74671c1",
      "parents": [
        "0a1c01c9477602ee8b44548a9405b2c1d587b5a2"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Mon Mar 23 08:57:38 2009 +0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 26 11:01:11 2009 -0700"
      },
      "message": "writeback: double the dirty thresholds\n\nEnlarge default dirty ratios from 5/10 to 10/20.  This fixes [Bug\n#12809] iozone regression with 2.6.29-rc6.\n\nThe iozone benchmarks are performed on a 1200M file, with 8GB ram.\n\n  iozone -i 0 -i 1 -i 2 -i 3 -i 4 -r 4k -s 64k -s 512m -s 1200m -b tmp.xls\n  iozone -B -r 4k -s 64k -s 512m -s 1200m -b tmp.xls\n\nThe performance regression is triggered by commit 1cf6e7d83bf3(mm: task\ndirty accounting fix), which makes more correct/thorough dirty\naccounting.\n\nThe default 5/10 dirty ratios were picked (a) with the old dirty logic\nand (b) largely at random and (c) designed to be aggressive.  In\nparticular, that (a) means that having fixed some of the dirty\naccounting, maybe the real bug is now that it was always too aggressive,\njust hidden by an accounting issue.\n\nThe enlarged 10/20 dirty ratios are just about enough to fix the regression.\n\n[ We will have to look at how this affects the old fsync() latency issue,\n  but that probably will need independent work.  - Linus ]\n\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nReported-by: \"Lin, Ming M\" \u003cming.m.lin@intel.com\u003e\nTested-by: \"Lin, Ming M\" \u003cming.m.lin@intel.com\u003e\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "26160158d3d3df548f4ee046cc6147fe048cfa9c",
      "tree": "19affc0b08f00ac22e8881d6ec73061a8764cc5d",
      "parents": [
        "07e86f405addc6436eb969b8279bb14a6dcacce4"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Mar 17 09:35:06 2009 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Mar 26 11:01:33 2009 +0100"
      },
      "message": "Move the default_backing_dev_info out of readahead.c and into backing-dev.c\n\nIt really makes no sense to have it in readahead.c, so move it where\nit belongs.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "8937b7349ca9e25a02b2a72ccb7fba404ddedc5b",
      "tree": "434ffe23d318f8af55850a26c3431ce8b82ab6f4",
      "parents": [
        "997302259f386bca8fe1db67c50296ca426c438f",
        "ffe7f95bb1a4d1e9ca5d252445dc38476e1a208e"
      ],
      "author": {
        "name": "Russell King",
        "email": "rmk@dyn-67.arm.linux.org.uk",
        "time": "Wed Mar 25 18:31:35 2009 +0000"
      },
      "committer": {
        "name": "Russell King",
        "email": "rmk+kernel@arm.linux.org.uk",
        "time": "Wed Mar 25 18:31:35 2009 +0000"
      },
      "message": "Merge branch \u0027for-next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6 into devel\n"
    },
    {
      "commit": "15a5b0a4912d98a9615ef457c7bde8d08195a771",
      "tree": "8a1b974d95acdc5a5c9cc96b9a5772f6b20bafda",
      "parents": [
        "8e0ee43bc2c3e19db56a4adaa9a9b04ce885cd84",
        "6e9ed0cc4b963fde66ab47d9fb19147631e44555",
        "6fb8f424393025674fde7869b59f485d1e352182",
        "c0bdb232b23b51c23e551041510ad6bea5ce5a92",
        "1a00df4a2cc001dd9f45890e690548c24b2fa2d9",
        "e8120ff1ffc51102ead1f4c98a3fd5d26fefc722"
      ],
      "author": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Tue Mar 24 10:25:21 2009 +0200"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Tue Mar 24 10:25:21 2009 +0200"
      },
      "message": "Merge branches \u0027topic/slob/cleanups\u0027, \u0027topic/slob/fixes\u0027, \u0027topic/slub/core\u0027, \u0027topic/slub/cleanups\u0027 and \u0027topic/slub/perf\u0027 into for-linus\n"
    },
    {
      "commit": "703a3cd72817e99201cef84a8a7aecc60b2b3581",
      "tree": "3e943755178ff410694722bb031f523136fbc432",
      "parents": [
        "df7f54c012b92ec93d56b68547351dcdf8a163d3",
        "8e0ee43bc2c3e19db56a4adaa9a9b04ce885cd84"
      ],
      "author": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Tue Mar 24 10:52:46 2009 +1100"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Tue Mar 24 10:52:46 2009 +1100"
      },
      "message": "Merge branch \u0027master\u0027 into next\n"
    },
    {
      "commit": "6fb8f424393025674fde7869b59f485d1e352182",
      "tree": "1ba7de5a6c9cba9cf3c3e57b2355b56cb5eb670f",
      "parents": [
        "b578f3fcca1e78624dfb5f358776e63711d7fda2"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "nickpiggin@yahoo.com.au",
        "time": "Mon Mar 16 21:00:28 2009 +1100"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Mon Mar 23 10:40:45 2009 +0200"
      },
      "message": "slob: fix lockup in slob_free()\n\nDon\u0027t hold SLOB lock when freeing the page. Reduces lock hold width. See\nthe following thread for discussion of the bug:\n\n  http://marc.info/?l\u003dlinux-kernel\u0026m\u003d123709983214143\u0026w\u003d2\n\nReported-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nAcked-by: Matt Mackall \u003cmpm@selenic.com\u003e\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\n"
    },
    {
      "commit": "1a00df4a2cc001dd9f45890e690548c24b2fa2d9",
      "tree": "40137bca1657f6a9e9e10ff004d8ec6b3d6b39f2",
      "parents": [
        "6047a007d0f6b7395cd158f3bdda34ab39a48821"
      ],
      "author": {
        "name": "Akinobu Mita",
        "email": "akinobu.mita@gmail.com",
        "time": "Sat Mar 07 00:36:21 2009 +0900"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Mon Mar 23 09:43:52 2009 +0200"
      },
      "message": "slub: use get_track()\n\nUse get_track() in set_track()\n\nSigned-off-by: Akinobu Mita \u003cakinobu.mita@gmail.com\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\n"
    },
    {
      "commit": "3297e760776af18a26bf30046cbaaae2e730c5c2",
      "tree": "2ccbafb9aade478d6ad351cd6ecb80298f5a7e8a",
      "parents": [
        "3835f6cb645bdb9a58aa6e062fe1d5777f1a9748"
      ],
      "author": {
        "name": "Nicolas Pitre",
        "email": "nico@cam.org",
        "time": "Wed Mar 04 22:49:41 2009 -0500"
      },
      "committer": {
        "name": "Nicolas Pitre",
        "email": "nico@cam.org",
        "time": "Sun Mar 15 21:01:21 2009 -0400"
      },
      "message": "highmem: atomic highmem kmap page pinning\n\nMost ARM machines have a non IO coherent cache, meaning that the\ndma_map_*() set of functions must clean and/or invalidate the affected\nmemory manually before DMA occurs.  And because the majority of those\nmachines have a VIVT cache, the cache maintenance operations must be\nperformed using virtual\naddresses.\n\nWhen a highmem page is kunmap\u0027d, its mapping (and cache) remains in place\nin case it is kmap\u0027d again. However if dma_map_page() is then called with\nsuch a page, some cache maintenance on the remaining mapping must be\nperformed. In that case, page_address(page) is non null and we can use\nthat to synchronize the cache.\n\nIt is unlikely but still possible for kmap() to race and recycle the\nvirtual address obtained above, and use it for another page before some\non-going cache invalidation loop in dma_map_page() is done. In that case,\nthe new mapping could end up with dirty cache lines for another page,\nand the unsuspecting cache invalidation loop in dma_map_page() might\nsimply discard those dirty cache lines resulting in data loss.\n\nFor example, let\u0027s consider this sequence of events:\n\n\t- dma_map_page(..., DMA_FROM_DEVICE) is called on a highmem page.\n\n\t--\u003e\t- vaddr \u003d page_address(page) is non null. In this case\n\t\tit is likely that the page has valid cache lines\n\t\tassociated with vaddr. Remember that the cache is VIVT.\n\n\t\t--\u003e\tfor (i \u003d vaddr; i \u003c vaddr + PAGE_SIZE; i +\u003d 32)\n\t\t\t\tinvalidate_cache_line(i);\n\n\t*** preemption occurs in the middle of the loop above ***\n\n\t- kmap_high() is called for a different page.\n\n\t--\u003e\t- last_pkmap_nr wraps to zero and flush_all_zero_pkmaps()\n\t\t  is called.  The pkmap_count value for the page passed\n\t\t  to dma_map_page() above happens to be 1, so the page\n\t\t  is unmapped.  But prior to that, flush_cache_kmaps()\n\t\t  cleared the cache for it.  So far so good.\n\n\t\t- A fresh pkmap entry is assigned for this kmap request.\n\t\t  The Murphy law says this pkmap entry will eventually\n\t\t  happen to use the same vaddr as the one which used to\n\t\t  belong to the other page being processed by\n\t\t  dma_map_page() in the preempted thread above.\n\n\t- The kmap_high() caller start dirtying the cache using the\n\t  just assigned virtual mapping for its page.\n\n\t*** the first thread is rescheduled ***\n\n\t\t\t- The for(...) loop is resumed, but now cached\n\t\t\t  data belonging to a different physical page is\n\t\t\t  being discarded !\n\nAnd this is not only a preemption issue as ARM can be SMP as well,\nmaking the above scenario just as likely. Hence the need for some kind\nof pkmap page pinning which can be used in any context, primarily for\nthe benefit of dma_map_page() on ARM.\n\nThis provides the necessary interface to cope with the above issue if\nARCH_NEEDS_KMAP_HIGH_GET is defined, otherwise the resulting code is\nunchanged.\n\nSigned-off-by: Nicolas Pitre \u003cnico@marvell.com\u003e\nReviewed-by: MinChan Kim \u003cminchan.kim@gmail.com\u003e\nAcked-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1d885526f2f3fffacee2ecb541270bd00168adff",
      "tree": "0f87c5d264361fd75c628b4485ef5bf91eb0c95d",
      "parents": [
        "84814d642a4f1f294bd675ab11aae1ca54c6cedb"
      ],
      "author": {
        "name": "Daisuke Nishimura",
        "email": "nishimura@mxp.nes.nec.co.jp",
        "time": "Fri Mar 13 13:52:00 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 14 11:57:22 2009 -0700"
      },
      "message": "vmscan: pgmoved should be cleared after updating recent_rotated\n\npgmoved should be cleared after updating recent_rotated.\n\nSigned-off-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\nAcked-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f272b7bc447553410dde691aa31fc531adf9c175",
      "tree": "95bd28ba8cea8471c0f461cfe6a9f2f0c2f00dff",
      "parents": [
        "02d46e07e538c285accb5c000a7db3a97eff1fbf"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Thu Mar 12 14:31:36 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 12 16:20:24 2009 -0700"
      },
      "message": "memcg: use correct scan number at reclaim\n\nEven when page reclaim is under mem_cgroup, # of scan page is determined by\nstatus of global LRU. Fix that.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: 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": "60db56422043aaa455ac7f858ce23c273220f9d9",
      "tree": "1c1184c02cdcaa2264fbb142c532261cef8ff9c8",
      "parents": [
        "66c3a75772247c31feabefb724e082220a1ab060"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 11 14:36:54 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 11 14:36:54 2009 +0900"
      },
      "message": "percpu: fix spurious alignment WARN in legacy SMP percpu allocator\n\nImpact: remove spurious WARN on legacy SMP percpu allocator\n\nCommit f2a8205c4ef1af917d175c36a4097ae5587791c8 incorrectly added too\ntight WARN_ON_ONCE() on alignments for UP and legacy SMP percpu\nallocator.  Commit e317603694bfd17b28a40de9d65e1a4ec12f816e fixed it\nfor UP but legacy SMP allocator was forgotten.  Fix it.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReported-by: Sachin P. Sant \u003csachinp@in.ibm.com\u003e\n"
    },
    {
      "commit": "66c3a75772247c31feabefb724e082220a1ab060",
      "tree": "5e61a0e44c82474729e81007edc2093d37fffe95",
      "parents": [
        "6074d5b0a319fe8400ff079a3c289406ca024321"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Mar 10 16:27:48 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Mar 10 16:27:48 2009 +0900"
      },
      "message": "percpu: generalize embedding first chunk setup helper\n\nImpact: code reorganization\n\nSeparate out embedding first chunk setup helper from x86 embedding\nfirst chunk allocator and put it in mm/percpu.c.  This will be used by\nthe default percpu first chunk allocator and possibly by other archs.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "6074d5b0a319fe8400ff079a3c289406ca024321",
      "tree": "465ad1ae2ba2a35ee2b67772e188f6a1f5ac189d",
      "parents": [
        "e01009833e22dc87075d770554b34d797843ed23"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Mar 10 16:27:48 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Mar 10 16:27:48 2009 +0900"
      },
      "message": "percpu: more flexibility for @dyn_size of pcpu_setup_first_chunk()\n\nImpact: cleanup, more flexibility for first chunk init\n\nNon-negative @dyn_size used to be allowed iff @unit_size wasn\u0027t auto.\nThis restriction stemmed from implementation detail and made things a\nbit less intuitive.  This patch allows @dyn_size to be specified\nregardless of @unit_size and swaps the positions of @dyn_size and\n@unit_size so that the parameter order makes more sense (static,\nreserved and dyn sizes followed by enclosing unit_size).\n\nWhile at it, add @unit_size \u003e\u003d PCPU_MIN_UNIT_SIZE sanity check.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "e01009833e22dc87075d770554b34d797843ed23",
      "tree": "63462a60b24fd018c94c51ee882aa8848a7accdf",
      "parents": [
        "19390c4d03688b9940a1836f06b76ec622b9cd6f"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Mar 10 16:27:48 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Mar 10 16:27:48 2009 +0900"
      },
      "message": "percpu: make x86 addr \u003c-\u003e pcpu ptr conversion macros generic\n\nImpact: generic addr \u003c-\u003e pcpu ptr conversion macros\n\nThere\u0027s nothing arch specific about x86 __addr_to_pcpu_ptr() and\n__pcpu_ptr_to_addr().  With proper __per_cpu_load and __per_cpu_start\ndefined, they\u0027ll do the right thing regardless of actual layout.\n\nMove these macros from arch/x86/include/asm/percpu.h to mm/percpu.c\nand allow archs to override it as necessary.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "ccea34b5d0fbab081496d1860f31acee99fa8a6d",
      "tree": "e7066b5dde0e83a216768569e57cd71cc83fe912",
      "parents": [
        "a56dbddf06b653ef9c04ca3767f260fd31ccebab"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Mar 07 00:44:13 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Mar 07 14:46:35 2009 +0900"
      },
      "message": "percpu: finer grained locking to break deadlock and allow atomic free\n\nImpact: fix deadlock and allow atomic free\n\nPercpu allocation always uses GFP_KERNEL and whole alloc/free paths\nwere protected by single mutex.  All percpu allocations have been from\nGFP_KERNEL-safe context and the original allocator had this assumption\ntoo.  However, by protecting both alloc and free paths with the same\nmutex, the new allocator creates free -\u003e alloc -\u003e GFP_KERNEL\ndependency which the original allocator didn\u0027t have.  This can lead to\ndeadlock if free is called from FS or IO paths.  Also, in general,\nallocators are expected to allow free to be called from atomic\ncontext.\n\nThis patch implements finer grained locking to break the deadlock and\nallow atomic free.  For details, please read the \"Synchronization\nrules\" comment.\n\nWhile at it, also add CONTEXT: to function comments to describe which\ncontext they expect to be called from and what they do to it.\n\nThis problem was reported by Thomas Gleixner and Peter Zijlstra.\n\n  http://thread.gmane.org/gmane.linux.kernel/802384\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReported-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nReported-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\n"
    },
    {
      "commit": "a56dbddf06b653ef9c04ca3767f260fd31ccebab",
      "tree": "803293315a281a88f807fa3506ac5bef0a910ba4",
      "parents": [
        "9f7dcf224bd09ec9ebcbfb383bf2c465e0e0b03d"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Mar 07 00:44:11 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Mar 07 00:44:11 2009 +0900"
      },
      "message": "percpu: move fully free chunk reclamation into a work\n\nImpact: code reorganization for later changes\n\nDo fully free chunk reclamation using a work.  This change is to\nprepare for locking changes.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "9f7dcf224bd09ec9ebcbfb383bf2c465e0e0b03d",
      "tree": "9e8b07047080fbdb4f4c8f1554d5208570e64fe2",
      "parents": [
        "1880d93b80acc3171850e9df5048bcb26b75c2f5"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Mar 07 00:44:09 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Mar 07 00:44:09 2009 +0900"
      },
      "message": "percpu: move chunk area map extension out of area allocation\n\nImpact: code reorganization for later changes\n\nSeparate out chunk area map extension into a separate function -\npcpu_extend_area_map() - and call it directly from pcpu_alloc() such\nthat pcpu_alloc_area() is guaranteed to have enough area map slots on\ninvocation.\n\nWith this change, pcpu_alloc_area() does only area allocation and the\nonly failure mode is when the chunk doens\u0027t have enough room, so\nthere\u0027s no need to distinguish it from memory allocation failures.\nMake it return -1 on such cases instead of hacky -ENOSPC.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "1880d93b80acc3171850e9df5048bcb26b75c2f5",
      "tree": "e7b564cabf70ef4d711b71ebf0634536ca5a9e15",
      "parents": [
        "6b19b0c2400437a3c10059ede0e59b517092e1bd"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Mar 07 00:44:09 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Mar 07 00:44:09 2009 +0900"
      },
      "message": "percpu: replace pcpu_realloc() with pcpu_mem_alloc() and pcpu_mem_free()\n\nImpact: code reorganization for later changes\n\nWith static map handling moved to pcpu_split_block(), pcpu_realloc()\nonly clutters the code and it\u0027s also unsuitable for scheduled locking\nchanges.  Implement and use pcpu_mem_alloc/free() instead.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "edcb463997ed7b2ffa3bac76e3e75957318f2e01",
      "tree": "d1eefb78736404993b0de4a049392f9af578e29e",
      "parents": [
        "3e24aa58907c62bc79d1094e941a374568f62522"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Mar 06 14:33:59 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Mar 06 14:33:59 2009 +0900"
      },
      "message": "percpu, module: implement reserved allocation and use it for module percpu variables\n\nImpact: add reserved allocation functionality and use it for module\n\tpercpu variables\n\nThis patch implements reserved allocation from the first chunk.  When\nsetting up the first chunk, arch can ask to set aside certain number\nof bytes right after the core static area which is available only\nthrough a separate reserved allocator.  This will be used primarily\nfor module static percpu variables on architectures with limited\nrelocation range to ensure that the module perpcu symbols are inside\nthe relocatable range.\n\nIf reserved area is requested, the first chunk becomes reserved and\nisn\u0027t available for regular allocation.  If the first chunk also\nincludes piggy-back dynamic allocation area, a separate chunk mapping\nthe same region is created to serve dynamic allocation.  The first one\nis called static first chunk and the second dynamic first chunk.\nAlthough they share the page map, their different area map\ninitializations guarantee they serve disjoint areas according to their\npurposes.\n\nIf arch doesn\u0027t setup reserved area, reserved allocation is handled\nlike any other allocation.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "3e24aa58907c62bc79d1094e941a374568f62522",
      "tree": "1398a21daab0d20a32d7dd04bb8ecadae2e0df82",
      "parents": [
        "9a4f8a878b68d5a5d9ee60908a52cf6a55e1b823"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Mar 06 14:33:59 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Mar 06 14:33:59 2009 +0900"
      },
      "message": "percpu: add an indirection ptr for chunk page map access\n\nImpact: allow sharing page map, no functional difference yet\n\nMake chunk-\u003epage access indirect by adding a pointer and renaming the\nactual array to page_ar.  This will be used by future changes.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "cafe8816b217b98dc3f268d3b77445da498beb4f",
      "tree": "7ebbb4e9fc2c4f6ec0035170d4736aecc00d2501",
      "parents": [
        "61ace7fa2fff9c4b6641c506b6b3f1a9394a1b11"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Mar 06 14:33:59 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Mar 06 14:33:59 2009 +0900"
      },
      "message": "percpu: use negative for auto for pcpu_setup_first_chunk() arguments\n\nImpact: argument semantic cleanup\n\nIn pcpu_setup_first_chunk(), zero @unit_size and @dyn_size meant\nauto-sizing.  It\u0027s okay for @unit_size as 0 doesn\u0027t make sense but 0\ndynamic reserve size is valid.  Alos, if arch @dyn_size is calculated\nfrom other parameters, it might end up passing in 0 @dyn_size and\nmalfunction when the size is automatically adjusted.\n\nThis patch makes both @unit_size and @dyn_size ssize_t and use -1 for\nauto sizing.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "61ace7fa2fff9c4b6641c506b6b3f1a9394a1b11",
      "tree": "214d0e04227239c31f93ba6948cf58d67cfedcee",
      "parents": [
        "2441d15c97d498b18f03ae9fba262ffeae42a08b"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Mar 06 14:33:59 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Mar 06 14:33:59 2009 +0900"
      },
      "message": "percpu: improve first chunk initial area map handling\n\nImpact: no functional change\n\nWhen the first chunk is created, its initial area map is not allocated\nbecause kmalloc isn\u0027t online yet.  The map is allocated and\ninitialized on the first allocation request on the chunk.  This works\nfine but the scattering of initialization logic between the init\nfunction and allocation path is a bit confusing.\n\nThis patch makes the first chunk initialize and use minimal statically\nallocated map from pcpu_setpu_first_chunk().  The map resizing path\nstill needs to handle this specially but it\u0027s more straight-forward\nand gives more latitude to the init path.  This will ease future\nchanges.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "2441d15c97d498b18f03ae9fba262ffeae42a08b",
      "tree": "b1ffae67036b6b1eef544342490d330a9ba183d4",
      "parents": [
        "6a242909b01120f6f3d571c0b75e20ec61f0d8d3"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Mar 06 14:33:59 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Mar 06 14:33:59 2009 +0900"
      },
      "message": "percpu: cosmetic renames in pcpu_setup_first_chunk()\n\nImpact: cosmetic, preparation for future changes\n\nMake the following renames in pcpur_setup_first_chunk() in preparation\nfor future changes.\n\n* s/free_size/dyn_size/\n* s/static_vm/first_vm/\n* s/static_chunk/schunk/\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "91d75e209bd59695f0708d66964d928d45b3b2f3",
      "tree": "32cab1359d951e4193bebb181a0f0319824a2b95",
      "parents": [
        "9976b39b5031bbf76f715893cf080b6a17683881",
        "8b0e5860cb099d7958d13b00ffbc35ad02735700"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Mar 04 02:29:19 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Mar 04 02:29:19 2009 +0100"
      },
      "message": "Merge branch \u0027x86/core\u0027 into core/percpu\n"
    },
    {
      "commit": "8b0e5860cb099d7958d13b00ffbc35ad02735700",
      "tree": "fa95e40d50a891c9a671873c7effbc8a66c6b47d",
      "parents": [
        "b6122b3843216f3f8e9624f9e876f4f0514f9205",
        "327f4387e39cf7bfe79a673e56dbf5479db3fec9",
        "c577b098f9bf467fb05dc279ba83604cb3f7cea0",
        "03787ceed8f7bf06af29f3b213017d89f8e9423d",
        "2fb6b2a048ed8fa3f049c7d42f7a2dd3f0c8d7a6",
        "ab76f3d771590d5c89faa3219559c5d3fc0ce0c2",
        "2505170211f7630361a852e25b60f4df4c878daa",
        "780eef9492b16a1543a3b2ae9f9526a735fc9856"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Mar 04 02:22:31 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Mar 04 02:22:31 2009 +0100"
      },
      "message": "Merge branches \u0027x86/apic\u0027, \u0027x86/cpu\u0027, \u0027x86/fixmap\u0027, \u0027x86/mm\u0027, \u0027x86/sched\u0027, \u0027x86/setup-lzma\u0027, \u0027x86/signal\u0027 and \u0027x86/urgent\u0027 into x86/core\n"
    },
    {
      "commit": "f180053694b43d5714bf56cb95499a3c32ff155c",
      "tree": "00286fcc88d2842629b039da4009a1332b3a1719",
      "parents": [
        "34754b69a6f87aa6aa2860525a82f12532f83afd"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Mar 02 11:00:57 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Mar 02 11:06:49 2009 +0100"
      },
      "message": "x86, mm: dont use non-temporal stores in pagecache accesses\n\nImpact: standardize IO on cached ops\n\nOn modern CPUs it is almost always a bad idea to use non-temporal stores,\nas the regression in this commit has shown it:\n\n  30d697f: x86: fix performance regression in write() syscall\n\nThe kernel simply has no good information about whether using non-temporal\nstores is a good idea or not - and trying to add heuristics only increases\ncomplexity and inserts fragility.\n\nThe regression on cached write()s took very long to be found - over two\nyears. So dont take any chances and let the hardware decide how it makes\nuse of its caches.\n\nThe only exception is drivers/gpu/drm/i915/i915_gem.c: there were we are\nabsolutely sure that another entity (the GPU) will pick up the dirty\ndata immediately and that the CPU will not touch that data before the\nGPU will.\n\nAlso, keep the _nocache() primitives to make it easier for people to\nexperiment with these details. There may be more clear-cut cases where\nnon-cached copies can be used, outside of filemap.c.\n\nCc: Salman Qazi \u003csqazi@google.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "55f2b78995826d549401bdf20abeac1832636bb6",
      "tree": "931b31f3b6e0879df0f9a1d58ffd040d9a652f2e",
      "parents": [
        "f5c1aa1537be39d8b9bb5279b5881d81898fd3cd",
        "92b9af9e4f144535c65aee673cfad309f25fa465"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Mar 01 12:47:58 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Mar 01 12:47:58 2009 +0100"
      },
      "message": "Merge branch \u0027x86/urgent\u0027 into x86/pat\n"
    },
    {
      "commit": "d0c4f570276cb4d2dc4215b90eb7cb6e2bdd4a15",
      "tree": "5cf4f85082ed720df7d815299782e25e44d75c9d",
      "parents": [
        "af6326d72c95d6e0bbc88c92185c654f57acef3b"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sun Mar 01 16:06:56 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sun Mar 01 16:06:56 2009 +0900"
      },
      "message": "bootmem, x86: further fixes for arch-specific bootmem wrapping\n\nImpact: fix new breakages introduced by previous fix\n\nCommit c132937556f56ee4b831ef4b23f1846e05fde102 tried to clean up\nbootmem arch wrapper but it wasn\u0027t quite correct.  Before the commit,\nthe followings were broken.\n\n* Low level interface functions prefixed with __ ignored arch\n  preference.\n\n* reserve_bootmem(...) can\u0027t be mapped into\n  reserve_bootmem_node(NODE_DATA(0)-\u003ebdata, ...) because the node is\n  not preference here.  The region specified MUST fall into the\n  specified region; otherwise, it will panic.\n\nAfter the commit,\n\n* If allocation fails for the arch preferred node, it should fallback\n  to whatever is available.  Instead, it simply failed allocation.\n\nThere are too many internal details to allow generic wrapping and\nstill keep things simple for archs.  Plus, all that arch wants is a\nway to prefer certain node over another.\n\nThis patch drops the generic wrapping around alloc_bootmem_core() and\nadd alloc_bootmem_core() instead.  If necessary, arch can define\nbootmem_arch_referred_node() macro or function which takes all\nallocation information and returns the preferred node.  bootmem\ngeneric code will always try the preferred node first and then\nfallback to other nodes as usual.\n\nBreakages noted and changes reviewed by Johannes Weiner.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\n"
    },
    {
      "commit": "02d51fdfb2bfcf6bbd776f983177f55868aa0a79",
      "tree": "0237b1e965f91198955aa637025263ca66c2ce5c",
      "parents": [
        "0093b108a6853d8398e1acf9021bcbd4666f4594"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sun Mar 01 15:42:36 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sun Mar 01 15:42:36 2009 +0900"
      },
      "message": "percpu: kill compile warning in pcpu_populate_chunk()\n\nImpact: remove compile warning\n\nMark local variable map_end in pcpu_populate_chunk() with\nuninitialized_var().  The variable is always used in tandem with\nmap_start and guaranteed to be initialized before use but gcc doesn\u0027t\nunderstand that.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReported-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "cbb766766f3f2f6d9326c561b1020590642c6e39",
      "tree": "0caaf23286211653ac03b04570914d19521e0e5d",
      "parents": [
        "7766970cc13e9071b356b1f2a48a9eb8675bfcce"
      ],
      "author": {
        "name": "Vegard Nossum",
        "email": "vegard.nossum@gmail.com",
        "time": "Fri Feb 27 14:03:04 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Feb 27 16:26:21 2009 -0800"
      },
      "message": "mm: fix lazy vmap purging (use-after-free error)\n\nI just got this new warning from kmemcheck:\n\n    WARNING: kmemcheck: Caught 32-bit read from freed memory (c7806a60)\n    a06a80c7ecde70c1a04080c700000000a06709c1000000000000000000000000\n     f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f\n     ^\n\n    Pid: 0, comm: swapper Not tainted (2.6.29-rc4 #230)\n    EIP: 0060:[\u003cc1096df7\u003e] EFLAGS: 00000286 CPU: 0\n    EIP is at __purge_vmap_area_lazy+0x117/0x140\n    EAX: 00070f43 EBX: c7806a40 ECX: c1677080 EDX: 00027b66\n    ESI: 00002001 EDI: c170df0c EBP: c170df00 ESP: c178830c\n     DS: 007b ES: 007b FS: 00d8 GS: 0000 SS: 0068\n    CR0: 80050033 CR2: c7806b14 CR3: 01775000 CR4: 00000690\n    DR0: 00000000 DR1: 00000000 DR2: 00000000 DR3: 00000000\n    DR6: 00004000 DR7: 00000000\n     [\u003cc1096f3e\u003e] free_unmap_vmap_area_noflush+0x6e/0x70\n     [\u003cc1096f6a\u003e] remove_vm_area+0x2a/0x70\n     [\u003cc1097025\u003e] __vunmap+0x45/0xe0\n     [\u003cc10970de\u003e] vunmap+0x1e/0x30\n     [\u003cc1008ba5\u003e] text_poke+0x95/0x150\n     [\u003cc1008ca9\u003e] alternatives_smp_unlock+0x49/0x60\n     [\u003cc171ef47\u003e] alternative_instructions+0x11b/0x124\n     [\u003cc171f991\u003e] check_bugs+0xbd/0xdc\n     [\u003cc17148c5\u003e] start_kernel+0x2ed/0x360\n     [\u003cc171409e\u003e] __init_begin+0x9e/0xa9\n     [\u003cffffffff\u003e] 0xffffffff\n\nIt happened here:\n\n    $ addr2line -e vmlinux -i c1096df7\n    mm/vmalloc.c:540\n\nCode:\n\n\tlist_for_each_entry(va, \u0026valist, purge_list)\n\t\t__free_vmap_area(va);\n\nIt\u0027s this instruction:\n\n    mov    0x20(%ebx),%edx\n\nWhich corresponds to a dereference of va-\u003epurge_list.next:\n\n    (gdb) p ((struct vmap_area *) 0)-\u003epurge_list.next\n    Cannot access memory at address 0x20\n\nIt seems that we should use \"safe\" list traversal here, as the element\nis freed inside the loop. Please verify that this is the right fix.\n\nAcked-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Vegard Nossum \u003cvegard.nossum@gmail.com\u003e\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: \"Paul E. McKenney\" \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: \u003cstable@kernel.org\u003e\t\t[2.6.28.x]\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7766970cc13e9071b356b1f2a48a9eb8675bfcce",
      "tree": "615ebb34f392c882cc0b72e2958249a2f9f0ee19",
      "parents": [
        "5170836679185357dc1b7660bad13287b39e1e33"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Fri Feb 27 14:03:03 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Feb 27 16:26:21 2009 -0800"
      },
      "message": "mm: vmap fix overflow\n\nThe new vmap allocator can wrap the address and get confused in the case\nof large allocations or VMALLOC_END near the end of address space.\n\nProblem reported by Christoph Hellwig on a 32-bit XFS workload.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nReported-by: Christoph Hellwig \u003chch@lst.de\u003e\nCc: \u003cstable@kernel.org\u003e\t\t[2.6.28.x]\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ecc25fbd6b9e07b33895c61ddf84006b00f55d99",
      "tree": "50cb6411d6aa6559b5e04a088afb73aaa1d4e5be",
      "parents": [
        "801c0be81454901e02c49abe12929c67e7d1cb55",
        "b5f26d05565d070b7b352dba56b1f96e10021980",
        "15d4fcd615989ed83fe848e6a3c7e9f0361cf0d0",
        "63823126c221dd721ce7351b596b3b73aa943613",
        "34754b69a6f87aa6aa2860525a82f12532f83afd",
        "694593e3374a67d95ece6a275a1f181644c2c4d8"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Feb 26 06:31:32 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Feb 26 06:31:32 2009 +0100"
      },
      "message": "Merge branches \u0027x86/apic\u0027, \u0027x86/defconfig\u0027, \u0027x86/memtest\u0027, \u0027x86/mm\u0027 and \u0027linus\u0027 into x86/core\n"
    },
    {
      "commit": "0b0a0806b0d8635e046bf533225a25903b1cddce",
      "tree": "245ac39eb1b7c6008a669ab2d68ed174d66bd7bc",
      "parents": [
        "c15d8a6499d04e5d2cac07f8120f207bb275f60f"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Feb 24 20:51:52 2009 +0000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 25 12:21:42 2009 -0800"
      },
      "message": "shmem: fix shared anonymous accounting\n\nEach time I exit Firefox, /proc/meminfo\u0027s Committed_AS goes down almost\n400 kB: OVERCOMMIT_NEVER would be allowing overcommits it should\nprohibit.\n\nCommit fc8744adc870a8d4366908221508bb113d8b72ee \"Stop playing silly\ngames with the VM_ACCOUNT flag\" changed shmem_file_setup() to set the\nshmem file\u0027s VM_ACCOUNT flag according to VM_NORESERVE not being set in\nthe vma flags; but did so only _after_ the shmem_acct_size(flags, size)\ncall which is expected to pre-account a shared anonymous object.\n\nIt\u0027s all clearer if we switch shmem.c over to use VM_NORESERVE\nthroughout in place of !VM_ACCOUNT.\n\nBut I very nearly sent in a patch which mistakenly removed the\naccounting from tmpfs files: shmem_get_inode()\u0027s memset was good for not\nsetting VM_ACCOUNT, but now it needs to set VM_NORESERVE.\n\nRather than setting that by default, then perhaps clearing it again in\nshmem_file_setup(), let\u0027s pass it as a flag to shmem_get_inode(): that\nallows us to remove the #ifdef CONFIG_SHMEM from shmem_file_setup().\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "34754b69a6f87aa6aa2860525a82f12532f83afd",
      "tree": "2f5234670238c3cf1139d09545fd25140f49c003",
      "parents": [
        "95108fa34a83ffd97e0af959e4b28d7c62008781"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Wed Feb 25 16:04:03 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Feb 25 16:38:34 2009 +0100"
      },
      "message": "x86: make vmap yell louder when it is used under irqs_disabled()\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "3255aa2eb636a508fc82a73fabbb8aaf2ff23c0f",
      "tree": "2a602fb8f4fefe666e8daedf1e1f755800bd700a",
      "parents": [
        "95f66b3770d6d0755b4a2d818c237574ffd74e4c"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Feb 25 08:21:52 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Feb 25 10:20:03 2009 +0100"
      },
      "message": "x86, mm: pass in \u0027total\u0027 to __copy_from_user_*nocache()\n\nImpact: cleanup, enable future change\n\nAdd a \u0027total bytes copied\u0027 parameter to __copy_from_user_*nocache(),\nand update all the callsites.\n\nThe parameter is not used yet - architecture code can use it to\nmore intelligently decide whether the copy should be cached or\nnon-temporal.\n\nCc: Salman Qazi \u003csqazi@google.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "c0bdb232b23b51c23e551041510ad6bea5ce5a92",
      "tree": "c904332ff38d1dac3450734a47997b6d0eca07fc",
      "parents": [
        "73d342b169db700b5a6ad626fe4b86911efec8db"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Wed Feb 25 09:16:35 2009 +0200"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Wed Feb 25 09:16:35 2009 +0200"
      },
      "message": "slub: rename calculate_min_partial() to set_min_partial()\n\nAs suggested by Christoph Lameter, rename calculate_min_partial() to\nset_min_partial() as the function doesn\u0027t really do any calculations.\n\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\n"
    },
    {
      "commit": "0edcf8d6926f4038443dbc24e319530177ca0353",
      "tree": "6010af62f73d01ab673d5106f310eaf4f4228e32",
      "parents": [
        "87b203079ed949de52f0d92aeae20e5e0116c12f",
        "40150d37be7f7949b2ec07d511244da856647d84"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Feb 24 21:52:45 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Feb 24 21:52:45 2009 +0100"
      },
      "message": "Merge branch \u0027tj-percpu\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/misc into core/percpu\n\nConflicts:\n\tarch/x86/include/asm/pgtable.h\n"
    },
    {
      "commit": "40150d37be7f7949b2ec07d511244da856647d84",
      "tree": "6edc4e8d0a0302328f5e65ec6378b703cb6c2e35",
      "parents": [
        "8ac837571491e239e64bd87863c1679d8002e8a2"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 24 12:32:28 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 24 14:24:30 2009 +0900"
      },
      "message": "percpu: add __read_mostly to variables which are mostly read only\n\nMost global variables in percpu allocator are initialized during boot\nand read only from that point on.  Add __read_mostly as per Rusty\u0027s\nsuggestion.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "8d408b4be37bc49c9086531f2ebe411cf5731746",
      "tree": "559a532a04b24dd164ec2c72ab545b30a5a604ef",
      "parents": [
        "d9b55eeb1d55ef2dc5a4fdbff9604c2c68cb5649"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 24 11:57:21 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 24 11:57:21 2009 +0900"
      },
      "message": "percpu: give more latitude to arch specific first chunk initialization\n\nImpact: more latitude for first percpu chunk allocation\n\nThe first percpu chunk serves the kernel static percpu area and may or\nmay not contain extra room for further dynamic allocation.\nInitialization of the first chunk needs to be done before normal\nmemory allocation service is up, so it has its own init path -\npcpu_setup_static().\n\nIt seems archs need more latitude while initializing the first chunk\nfor example to take advantage of large page mapping.  This patch makes\nthe following changes to allow this.\n\n* Define PERCPU_DYNAMIC_RESERVE to give arch hint about how much space\n  to reserve in the first chunk for further dynamic allocation.\n\n* Rename pcpu_setup_static() to pcpu_setup_first_chunk().\n\n* Make pcpu_setup_first_chunk() much more flexible by fetching page\n  pointer by callback and adding optional @unit_size, @free_size and\n  @base_addr arguments which allow archs to selectively part of chunk\n  initialization to their likings.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "d9b55eeb1d55ef2dc5a4fdbff9604c2c68cb5649",
      "tree": "1f81884066512810be81731a76fb5e041ac62c22",
      "parents": [
        "458a3e644c3327be529393982e24277eda8f1ac7"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 24 11:57:21 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 24 11:57:21 2009 +0900"
      },
      "message": "percpu: remove unit_size power-of-2 restriction\n\nImpact: allow unit_size to be arbitrary multiple of PAGE_SIZE\n\nIn dynamic percpu allocator, there is no reason the unit size should\nbe power of two.  Remove the restriction.\n\nAs non-power-of-two unit size means that empty chunks fall into the\nsame slot index as lightly occupied chunks which is bad for reclaming.\nReserve an extra slot for empty chunks.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "c0c0a29379b5848aec2e8f1c58d853d3cb7118b8",
      "tree": "521d4c8ae5756652e7ed3f7242c516b79df76aa2",
      "parents": [
        "2d0aae41695257603fc281b519677131ab5a752b"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 24 11:57:21 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 24 11:57:21 2009 +0900"
      },
      "message": "vmalloc: add @align to vm_area_register_early()\n\nImpact: allow larger alignment for early vmalloc area allocation\n\nSome early vmalloc users might want larger alignment, for example, for\ncustom large page mapping.  Add @align to vm_area_register_early().\nWhile at it, drop docbook comment on non-existent @size.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Ivan Kokshaysky \u003cink@jurassic.park.msu.ru\u003e\n"
    },
    {
      "commit": "c132937556f56ee4b831ef4b23f1846e05fde102",
      "tree": "0f93037ff2ebbdc321ebd0bbfc4752823c8d6a0e",
      "parents": [
        "cb83b42e23bd6c4bf91793a320fbe83787c13596"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 24 11:57:20 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 24 11:57:20 2009 +0900"
      },
      "message": "bootmem: clean up arch-specific bootmem wrapping\n\nImpact: cleaner and consistent bootmem wrapping\n\nBy setting CONFIG_HAVE_ARCH_BOOTMEM_NODE, archs can define\narch-specific wrappers for bootmem allocation.  However, this is done\na bit strangely in that only the high level convenience macros can be\nchanged while lower level, but still exported, interface functions\ncan\u0027t be wrapped.  This not only is messy but also leads to strange\nsituation where alloc_bootmem() does what the arch wants it to do but\nthe equivalent __alloc_bootmem() call doesn\u0027t although they should be\nable to be used interchangeably.\n\nThis patch updates bootmem such that archs can override / wrap the\nbackend function - alloc_bootmem_core() instead of the highlevel\ninterface functions to allow simpler and consistent wrapping.  Also,\nHAVE_ARCH_BOOTMEM_NODE is renamed to HAVE_ARCH_BOOTMEM.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Johannes Weiner \u003channes@saeurebad.de\u003e\n"
    },
    {
      "commit": "cb83b42e23bd6c4bf91793a320fbe83787c13596",
      "tree": "7f2b83bccf1be9548f84fa74867043aaad0a3e45",
      "parents": [
        "cae3aeb83fef5a7c9c8ac40e653e59dd9a35469c"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 24 11:57:20 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 24 11:57:20 2009 +0900"
      },
      "message": "percpu: fix pcpu_chunk_struct_size\n\nImpact: fix short allocation leading to memory corruption\n\nWhile dropping rvalue wrapping macros around global parameters,\npcpu_chunk_struct_size was set incorrectly resulting in shorter page\npointer array.  Fix it.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "73d342b169db700b5a6ad626fe4b86911efec8db",
      "tree": "6ddde0ce99c195eb51e42fae754f8b512e35ce53",
      "parents": [
        "3b89d7d881a1dbb4da158f7eb5d6b3ceefc72810"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Sun Feb 22 17:40:09 2009 -0800"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Mon Feb 23 12:05:46 2009 +0200"
      },
      "message": "slub: add min_partial sysfs tunable\n\nNow that a cache\u0027s min_partial has been moved to struct kmem_cache, it\u0027s\npossible to easily tune it from userspace by adding a sysfs attribute.\n\nIt may not be desirable to keep a large number of partial slabs around\nif a cache is used infrequently and memory, especially when constrained\nby a cgroup, is scarce.  It\u0027s better to allow userspace to set the\nminimum policy per cache instead of relying explicitly on\nkmem_cache_shrink().\n\nThe memory savings from simply moving min_partial from struct\nkmem_cache_node to struct kmem_cache is obviously not significant\n(unless maybe you\u0027re from SGI or something), at the largest it\u0027s\n\n\t# allocated caches * (MAX_NUMNODES - 1) * sizeof(unsigned long)\n\nThe true savings occurs when userspace reduces the number of partial\nslabs that would otherwise be wasted, especially on machines with a\nlarge number of nodes (ia64 with CONFIG_NODES_SHIFT at 10 for default?).\nAs well as the kernel estimates ideal values for n-\u003emin_partial and\nensures it\u0027s within a sane range, userspace has no other input other\nthan writing to /sys/kernel/slab/cache/shrink.\n\nThere simply isn\u0027t any better heuristic to add when calculating the\npartial values for a better estimate that works for all possible caches.\nAnd since it\u0027s currently a static value, the user really has no way of\nreclaiming that wasted space, which can be significant when constrained\nby a cgroup (either cpusets or, later, memory controller slab limits)\nwithout shrinking it entirely.\n\nThis also allows the user to specify that increased fragmentation and\nmore partial slabs are actually desired to avoid the cost of allocating\nnew slabs at runtime for specific caches.\n\nThere\u0027s also no reason why this should be a per-struct kmem_cache_node\nvalue in the first place.  You could argue that a machine would have\nsuch node size asymmetries that it should be specified on a per-node\nbasis, but we know nobody is doing that right now since it\u0027s a purely\nstatic value at the moment and there\u0027s no convenient way to tune that\nvia slub\u0027s sysfs interface.\n\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\n"
    },
    {
      "commit": "3b89d7d881a1dbb4da158f7eb5d6b3ceefc72810",
      "tree": "48c119937a204172677a5fa3a829019890670350",
      "parents": [
        "b578f3fcca1e78624dfb5f358776e63711d7fda2"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Sun Feb 22 17:40:07 2009 -0800"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Mon Feb 23 12:05:41 2009 +0200"
      },
      "message": "slub: move min_partial to struct kmem_cache\n\nAlthough it allows for better cacheline use, it is unnecessary to save a\ncopy of the cache\u0027s min_partial value in each kmem_cache_node.\n\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\n"
    },
    {
      "commit": "adfafefd104d840ee4461965f22624d77532675b",
      "tree": "6c6ba553a2b11703bf5952bd789905ea37c4fc4f",
      "parents": [
        "460c1338fc05add0e8050d4945a46f207b13a5fc",
        "403f307576396f3362fbb65af190885b6036c72c"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Feb 21 14:17:26 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Feb 21 14:17:26 2009 -0800"
      },
      "message": "Merge branch \u0027hibernate\u0027\n\n* hibernate:\n  PM: Fix suspend_console and resume_console to use only one semaphore\n  PM: Wait for console in resume\n  PM: Fix pm_notifiers during user mode hibernation\n  swsusp: clean up shrink_all_zones()\n  swsusp: dont fiddle with swappiness\n  PM: fix build for CONFIG_PM unset\n  PM/hibernate: fix \"swap breaks after hibernation failures\"\n  PM/resume: wait for device probing to finish\n  Consolidate driver_probe_done() loops into one place\n"
    },
    {
      "commit": "0cb57258fe01e9b21076b6a15b6aec7a24168228",
      "tree": "9744786d92356a21d3d2bcd2d3cc2935d81a489f",
      "parents": [
        "3049103ddfc9aac111916bd2f39ac6976c431517"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@cmpxchg.org",
        "time": "Sat Feb 14 02:04:10 2009 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Feb 21 14:17:17 2009 -0800"
      },
      "message": "swsusp: clean up shrink_all_zones()\n\nMove local variables to innermost possible scopes and use local\nvariables to cache calculations/reads done more than once.\n\nNo change in functionality (intended).\n\nSigned-off-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nCc: Len Brown \u003clenb@kernel.org\u003e\nCc: Greg KH \u003cgregkh@suse.de\u003e\nAcked-by: Pavel Machek \u003cpavel@ucw.cz\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3049103ddfc9aac111916bd2f39ac6976c431517",
      "tree": "709bfc2b40389cac7643e27be5307c81a35c6c4b",
      "parents": [
        "09664fda48c5dd63277f1f42888ca9d5dca6037a"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@cmpxchg.org",
        "time": "Sat Feb 14 02:03:08 2009 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Feb 21 14:17:17 2009 -0800"
      },
      "message": "swsusp: dont fiddle with swappiness\n\nsc.swappiness is not used in the swsusp memory shrinking path, do not\nset it.\n\nSigned-off-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nCc: Len Brown \u003clenb@kernel.org\u003e\nCc: Greg KH \u003cgregkh@suse.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a1bb7d61233ba5fb5cd865f907a9ddcc8f8c02bd",
      "tree": "bd0877610aaa2e33a7ff76c684a51a65765c78fb",
      "parents": [
        "eed3ee08292d821282169708e5e8e89a0d0a0c63"
      ],
      "author": {
        "name": "Alan Jenkins",
        "email": "alan-jenkins@tuffmail.co.uk",
        "time": "Sat Feb 14 02:01:14 2009 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Feb 21 14:17:17 2009 -0800"
      },
      "message": "PM/hibernate: fix \"swap breaks after hibernation failures\"\n\nhttp://bugzilla.kernel.org/show_bug.cgi?id\u003d12239\n\nThe image writing code dropped a reference to the current swap device.\nThis doesn\u0027t show up if the hibernation succeeds - because it doesn\u0027t\naffect the image which gets resumed.  But it means multiple _failed_\nhibernations end up freeing the swap device while it is still use!\n\nswsusp_write() finds the block device for the swap file using swap_type_of().\nIt then uses blkdev_get() / blkdev_put() to open and close the block device.\n\nUnfortunately, blkdev_get() assumes ownership of the inode of the block_device\npassed to it.  So blkdev_put() calls iput() on the inode.  This is by design\nand other callers expect this behaviour.  The fix is for swap_type_of() to take\na reference on the inode using bdget().\n\nSigned-off-by: Alan Jenkins \u003calan-jenkins@tuffmail.co.uk\u003e\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nCc: Len Brown \u003clenb@kernel.org\u003e\nCc: Greg KH \u003cgregkh@suse.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "cae3aeb83fef5a7c9c8ac40e653e59dd9a35469c",
      "tree": "373e23d2e7339efed747a77ebd8aa1323c05f6e6",
      "parents": [
        "11124411aa95827404d6bfdfc14c908e1b54513c"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Feb 21 16:56:23 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Feb 21 16:56:23 2009 +0900"
      },
      "message": "percpu: clean up size usage\n\nAndrew was concerned about the unit of variables named or have suffix\nsize.  Every usage in percpu allocator is in bytes but make it super\nclear by adding comments.\n\nWhile at it, make pcpu_depopulate_chunk() take int @off and @size like\neveryone else.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f6fcba7014f9cc535fa75ef98c008b24e49e2212",
      "tree": "85aae17fc20b8a4b6d5112c740950e0dcdcb9baf",
      "parents": [
        "3fd076dd955a34c35dc456f4ef676e03cdced044"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Feb 20 15:38:48 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Feb 20 17:57:49 2009 -0800"
      },
      "message": "vmalloc: call flush_cache_vunmap() from unmap_kernel_range()\n\nImpact: proper vcache flush on unmap_kernel_range()\n\nflush_cache_vunmap() should be called before pages are unmapped.  Add\na call to it in unmap_kernel_range().\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nAcked-by: David S. Miller \u003cdavem@davemloft.net\u003e\nCc: \u003cstable@kernel.org\u003e\t\t[2.6.28.x]\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3ef0e5ba467366125f04b423f4638baca54a4fc1",
      "tree": "cfe7b95c7b19b1d5b2a8534fa9791d6026e49dcd",
      "parents": [
        "d9190913b71831f5e3d04de62cfb1fd069a9db35"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@cmpxchg.org",
        "time": "Fri Feb 20 15:38:41 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Feb 20 17:57:48 2009 -0800"
      },
      "message": "slab: introduce kzfree()\n\nkzfree() is a wrapper for kfree() that additionally zeroes the underlying\nmemory before releasing it to the slab allocator.\n\nCurrently there is code which memset()s the memory region of an object\nbefore releasing it back to the slab allocator to make sure\nsecurity-sensitive data are really zeroed out after use.\n\nThese callsites can then just use kzfree() which saves some code, makes\nusers greppable and allows for a stupid destructor that isn\u0027t necessarily\naware of the actual object size.\n\nSigned-off-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nReviewed-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nCc: Matt Mackall \u003cmpm@selenic.com\u003e\nAcked-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e8120ff1ffc51102ead1f4c98a3fd5d26fefc722",
      "tree": "3cdadf0dc36df4a34f5ef30a788ef62d3a601de8",
      "parents": [
        "51735a7ca67531267a27b57e5fe20f7815192f9c"
      ],
      "author": {
        "name": "Zhang Yanmin",
        "email": "yanmin.zhang@linux.intel.com",
        "time": "Thu Feb 12 18:00:17 2009 +0200"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Fri Feb 20 12:26:12 2009 +0200"
      },
      "message": "SLUB: Fix default slab order for big object sizes\n\nThe default order of kmalloc-8192 on 2*4 stoakley is an issue of\ncalculate_order.\n\nslab_size       order           name\n-------------------------------------------------\n4096            3               sgpool-128\n8192            2               kmalloc-8192\n16384           3               kmalloc-16384\n\nkmalloc-8192\u0027s default order is smaller than sgpool-128\u0027s.\n\nOn 4*4 tigerton machine, a similiar issue appears on another kmem_cache.\n\nFunction calculate_order uses \u0027min_objects /\u003d 2;\u0027 to shrink. Plus size\ncalculation/checking in slab_order, sometimes above issue appear.\n\nBelow patch against 2.6.29-rc2 fixes it.\n\nI checked the default orders of all kmem_cache and they don\u0027t become\nsmaller than before. So the patch wouldn\u0027t hurt performance.\n\nSigned-off-by Zhang Yanmin \u003cyanmin.zhang@linux.intel.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\n"
    },
    {
      "commit": "ffadd4d0feb5376c82dc3a4104731b7ce2794edc",
      "tree": "bff176ef50efbc161e240ec4295a6da815eae997",
      "parents": [
        "b578f3fcca1e78624dfb5f358776e63711d7fda2"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux-foundation.org",
        "time": "Tue Feb 17 12:05:07 2009 -0500"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Fri Feb 20 12:22:44 2009 +0200"
      },
      "message": "SLUB: Introduce and use SLUB_MAX_SIZE and SLUB_PAGE_SHIFT constants\n\nAs a preparational patch to bump up page allocator pass-through threshold,\nintroduce two new constants SLUB_MAX_SIZE and SLUB_PAGE_SHIFT and convert\nmm/slub.c to use them.\n\nReported-by: \"Zhang, Yanmin\" \u003cyanmin_zhang@linux.intel.com\u003e\nTested-by: \"Zhang, Yanmin\" \u003cyanmin_zhang@linux.intel.com\u003e\nSigned-off-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\n"
    },
    {
      "commit": "fbf59bc9d74d1fb30b8e0630743aff2806eafcea",
      "tree": "3f0a7b7cf809a25e27b7a5ba0b16321fdb901801",
      "parents": [
        "8fc48985006da4ceba24508db64ec77fc0dfe3bb"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Feb 20 16:29:08 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Feb 20 16:29:08 2009 +0900"
      },
      "message": "percpu: implement new dynamic percpu allocator\n\nImpact: new scalable dynamic percpu allocator which allows dynamic\n        percpu areas to be accessed the same way as static ones\n\nImplement scalable dynamic percpu allocator which can be used for both\nstatic and dynamic percpu areas.  This will allow static and dynamic\nareas to share faster direct access methods.  This feature is optional\nand enabled only when CONFIG_HAVE_DYNAMIC_PER_CPU_AREA is defined by\narch.  Please read comment on top of mm/percpu.c for details.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8fc48985006da4ceba24508db64ec77fc0dfe3bb",
      "tree": "2234b92b13c53bfd1972e967c50ff305b6efe013",
      "parents": [
        "f0aa6617903648077dffe5cfcf7c4458f4610fa7"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Feb 20 16:29:08 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Feb 20 16:29:08 2009 +0900"
      },
      "message": "vmalloc: add un/map_kernel_range_noflush()\n\nImpact: two more public map/unmap functions\n\nImplement map_kernel_range_noflush() and unmap_kernel_range_noflush().\nThese functions respectively map and unmap address range in kernel VM\narea but doesn\u0027t do any vcache or tlb flushing.  These will be used by\nnew percpu allocator.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\n"
    },
    {
      "commit": "f0aa6617903648077dffe5cfcf7c4458f4610fa7",
      "tree": "c97ab20b953bfea8a6516d741585ea088a8bf7ef",
      "parents": [
        "f2a8205c4ef1af917d175c36a4097ae5587791c8"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Feb 20 16:29:08 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Feb 20 16:29:08 2009 +0900"
      },
      "message": "vmalloc: implement vm_area_register_early()\n\nImpact: allow multiple early vm areas\n\nThere are places where kernel VM area needs to be allocated before\nvmalloc is initialized.  This is done by allocating static vm_struct,\ninitializing several fields and linking it to vmlist and later vmalloc\ninitialization picking up these from vmlist.  This is currently done\nmanually and if there\u0027s more than one such areas, there\u0027s no defined\nway to arbitrate who gets which address.\n\nThis patch implements vm_area_register_early(), which takes vm_area\nstruct with flags and size initialized, assigns address to it and puts\nit on the vmlist.  This way, multiple early vm areas can determine\nwhich addresses they should use.  The only current user - alpha mm\ninit - is converted to use it.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "f2a8205c4ef1af917d175c36a4097ae5587791c8",
      "tree": "6c5531aa50803fda8005ea94c04b94fcd0310be3",
      "parents": [
        "313e458f81ec3852106c5a83830fe0d4f405a71a"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Feb 20 16:29:08 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Feb 20 16:29:08 2009 +0900"
      },
      "message": "percpu: kill percpu_alloc() and friends\n\nImpact: kill unused functions\n\npercpu_alloc() and its friends never saw much action.  It was supposed\nto replace the cpu-mask unaware __alloc_percpu() but it never happened\nand in fact __percpu_alloc_mask() itself never really grew proper\nup/down handling interface either (no exported interface for\npopulate/depopulate).\n\npercpu allocation is about to go through major reimplementation and\nthere\u0027s no reason to carry this unused interface around.  Replace it\nwith __alloc_percpu() and free_percpu().\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "734269521e320ad14ed39ae9b64d482b9028dcd2",
      "tree": "0414076b628cae80a872adaf15eb85e20855024b",
      "parents": [
        "42f8faecf7a88371de0f30aebb052d1ae51762c0"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Feb 20 16:29:07 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Feb 20 16:29:07 2009 +0900"
      },
      "message": "vmalloc: call flush_cache_vunmap() from unmap_kernel_range()\n\nImpact: proper vcache flush on unmap_kernel_range()\n\nflush_cache_vunmap() should be called before pages are unmapped.  Add\na call to it in unmap_kernel_range().\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "ba95fd47d177d46743ad94055908d22840370e06",
      "tree": "f29e6921fefba2728c3b7f6854ac7f7729f602b2",
      "parents": [
        "59af0a0b5848caf38f1bf7013905c3e9cdba4d1d",
        "be987fdb55a4726e2fcbab7501f89276bdb57288"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 18 18:33:04 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 18 18:33:04 2009 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-linus\u0027 of git://git.kernel.dk/linux-2.6-block:\n  block: fix deadlock in blk_abort_queue() for drivers that readd to timeout list\n  block: fix booting from partitioned md array\n  block: revert part of 18ce3751ccd488c78d3827e9f6bf54e6322676fb\n  cciss: PCI power management reset for kexec\n  paride/pg.c: xs(): \u0026\u0026/|| confusion\n  fs/bio: bio_alloc_bioset: pass right object ptr to mempool_free\n  block: fix bad definition of BIO_RW_SYNC\n  bsg: Fix sense buffer bug in SG_IO\n"
    },
    {
      "commit": "cc2559bccc72767cb446f79b071d96c30c26439b",
      "tree": "aacdeee5368e0eef72ed1d7a7cbd7e6ee4837941",
      "parents": [
        "f2dbcfa738368c8a40d4a5f0b65dc9879577cb21"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Wed Feb 18 14:48:33 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 18 15:37:55 2009 -0800"
      },
      "message": "mm: fix memmap init for handling memory hole\n\nNow, early_pfn_in_nid(PFN, NID) may returns false if PFN is a hole.\nand memmap initialization was not done. This was a trouble for\nsparc boot.\n\nTo fix this, the PFN should be initialized and marked as PG_reserved.\nThis patch changes early_pfn_in_nid() return true if PFN is a hole.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nReported-by: David Miller \u003cdavem@davemlloft.net\u003e\nTested-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nCc: \u003cstable@kernel.org\u003e\t\t[2.6.25.x, 2.6.26.x, 2.6.27.x, 2.6.28.x]\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f2dbcfa738368c8a40d4a5f0b65dc9879577cb21",
      "tree": "bdea32c637fa572a9c356cddd202a57530b2a45c",
      "parents": [
        "ada723dcd681e2dffd7d73345cc8fda0eb0df9bd"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Wed Feb 18 14:48:32 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 18 15:37:55 2009 -0800"
      },
      "message": "mm: clean up for early_pfn_to_nid()\n\nWhat\u0027s happening is that the assertion in mm/page_alloc.c:move_freepages()\nis triggering:\n\n\tBUG_ON(page_zone(start_page) !\u003d page_zone(end_page));\n\nOnce I knew this is what was happening, I added some annotations:\n\n\tif (unlikely(page_zone(start_page) !\u003d page_zone(end_page))) {\n\t\tprintk(KERN_ERR \"move_freepages: Bogus zones: \"\n\t\t       \"start_page[%p] end_page[%p] zone[%p]\\n\",\n\t\t       start_page, end_page, zone);\n\t\tprintk(KERN_ERR \"move_freepages: \"\n\t\t       \"start_zone[%p] end_zone[%p]\\n\",\n\t\t       page_zone(start_page), page_zone(end_page));\n\t\tprintk(KERN_ERR \"move_freepages: \"\n\t\t       \"start_pfn[0x%lx] end_pfn[0x%lx]\\n\",\n\t\t       page_to_pfn(start_page), page_to_pfn(end_page));\n\t\tprintk(KERN_ERR \"move_freepages: \"\n\t\t       \"start_nid[%d] end_nid[%d]\\n\",\n\t\t       page_to_nid(start_page), page_to_nid(end_page));\n ...\n\nAnd here\u0027s what I got:\n\n\tmove_freepages: Bogus zones: start_page[2207d0000] end_page[2207dffc0] zone[fffff8103effcb00]\n\tmove_freepages: start_zone[fffff8103effcb00] end_zone[fffff8003fffeb00]\n\tmove_freepages: start_pfn[0x81f600] end_pfn[0x81f7ff]\n\tmove_freepages: start_nid[1] end_nid[0]\n\nMy memory layout on this box is:\n\n[    0.000000] Zone PFN ranges:\n[    0.000000]   Normal   0x00000000 -\u003e 0x0081ff5d\n[    0.000000] Movable zone start PFN for each node\n[    0.000000] early_node_map[8] active PFN ranges\n[    0.000000]     0: 0x00000000 -\u003e 0x00020000\n[    0.000000]     1: 0x00800000 -\u003e 0x0081f7ff\n[    0.000000]     1: 0x0081f800 -\u003e 0x0081fe50\n[    0.000000]     1: 0x0081fed1 -\u003e 0x0081fed8\n[    0.000000]     1: 0x0081feda -\u003e 0x0081fedb\n[    0.000000]     1: 0x0081fedd -\u003e 0x0081fee5\n[    0.000000]     1: 0x0081fee7 -\u003e 0x0081ff51\n[    0.000000]     1: 0x0081ff59 -\u003e 0x0081ff5d\n\nSo it\u0027s a block move in that 0x81f600--\u003e0x81f7ff region which triggers\nthe problem.\n\nThis patch:\n\nDeclaration of early_pfn_to_nid() is scattered over per-arch include\nfiles, and it seems it\u0027s complicated to know when the declaration is used.\n I think it makes fix-for-memmap-init not easy.\n\nThis patch moves all declaration to include/linux/mm.h\n\nAfter this,\n  if !CONFIG_NODES_POPULATES_NODE_MAP \u0026\u0026 !CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID\n     -\u003e Use static definition in include/linux/mm.h\n  else if !CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID\n     -\u003e Use generic definition in mm/page_alloc.c\n  else\n     -\u003e per-arch back end function will be called.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nTested-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nReported-by: David Miller \u003cdavem@davemlloft.net\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nCc: \u003cstable@kernel.org\u003e\t\t[2.6.25.x, 2.6.26.x, 2.6.27.x, 2.6.28.x]\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1cf6e7d83bf334cc5916137862c920a97aabc018",
      "tree": "6bdbc4a98e9b332919beaeba0649797fff544795",
      "parents": [
        "610d18f4128ebbd88845d0fc60cce67b49af881e"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Wed Feb 18 14:48:18 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 18 15:37:54 2009 -0800"
      },
      "message": "mm: task dirty accounting fix\n\nYAMAMOTO-san noticed that task_dirty_inc doesn\u0027t seem to be called properly for\ncases where set_page_dirty is not used to dirty a page (eg. mark_buffer_dirty).\n\nAdditionally, there is some inconsistency about when task_dirty_inc is\ncalled.  It is used for dirty balancing, however it even gets called for\n__set_page_dirty_no_writeback.\n\nSo rather than increment it in a set_page_dirty wrapper, move it down to\nexactly where the dirty page accounting stats are incremented.\n\nCc: YAMAMOTO Takashi \u003cyamamoto@valinux.co.jp\u003e\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\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": "c296861291669f305deef19b78042330d7135017",
      "tree": "a623faa7815c0eb70ea463966c8a8715e7e69246",
      "parents": [
        "5955c7a2cfb6a35429adea5dc480002b15ca8cfc"
      ],
      "author": {
        "name": "Benjamin Herrenschmidt",
        "email": "benh@kernel.crashing.org",
        "time": "Wed Feb 18 14:48:12 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 18 15:37:53 2009 -0800"
      },
      "message": "vmalloc: add __get_vm_area_caller()\n\nWe have get_vm_area_caller() and __get_vm_area() but not\n__get_vm_area_caller()\n\nOn powerpc, I use __get_vm_area() to separate the ranges of addresses\ngiven to vmalloc vs.  ioremap (various good reasons for that) so in order\nto be able to implement the new caller tracking in /proc/vmallocinfo, I\nneed a \"_caller\" variant of it.\n\n(akpm: needed for ongoing powerpc development, so merge it early)\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "93dbb393503d53cd226e5e1f0088fe8f4dbaa2b8",
      "tree": "790365e207951cf6810e8995f3141ddc0b74519b",
      "parents": [
        "c1c201200a359cf3b6e2e36a4236cdca77a3cd8e"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Feb 16 10:25:40 2009 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Feb 18 10:32:00 2009 +0100"
      },
      "message": "block: fix bad definition of BIO_RW_SYNC\n\nWe can\u0027t OR shift values, so get rid of BIO_RW_SYNC and use BIO_RW_SYNCIO\nand BIO_RW_UNPLUG explicitly. This brings back the behaviour from before\n213d9417fec62ef4c3675621b9364a667954d4dd.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "35010334aa007480a833401b80922299cb1a15ef",
      "tree": "6e318eb89da45d37ea8dceddd1ae6858b74dee1e",
      "parents": [
        "8ce9a75a307e142a8871c649627555e0e4a1eefb",
        "be716615fe596ee117292dc615e95f707fb67fd1"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Feb 17 14:27:39 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Feb 17 14:27:39 2009 -0800"
      },
      "message": "Merge branch \u0027x86-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027x86-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  x86, vm86: fix preemption bug\n  x86, olpc: fix model detection without OFW\n  x86, hpet: fix for LS21 + HPET \u003d boot hang\n  x86: CPA avoid repeated lazy mmu flush\n  x86: warn if arch_flush_lazy_mmu_cpu is called in preemptible context\n  x86/paravirt: make arch_flush_lazy_mmu/cpu disable preemption\n  x86, pat: fix warn_on_once() while mapping 0-1MB range with /dev/mem\n  x86/cpa: make sure cpa is safe to call in lazy mmu mode\n  x86, ptrace, mm: fix double-free on race\n"
    },
    {
      "commit": "7032e8696726354d6180d8a2d17191f958cd93ae",
      "tree": "5af02052e633bcde0e33f77cac52ab4685ad07f1",
      "parents": [
        "f268fe7333ccd16e3e5b7de0be1df201e40a8e7c",
        "3bd323a1da42525317e2ce6c93b97b5ba653bc9d",
        "b13e24644c138d0ddbc451403c30a96b09bfd556"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Feb 13 09:47:32 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Feb 13 09:47:32 2009 +0100"
      },
      "message": "Merge branches \u0027x86/paravirt\u0027, \u0027x86/pat\u0027, \u0027x86/setup-v2\u0027, \u0027x86/subarch\u0027, \u0027x86/uaccess\u0027 and \u0027x86/urgent\u0027 into x86/core\n"
    },
    {
      "commit": "071a0bc2ceace31266836801510879407a3701fa",
      "tree": "9b52364206229861146e48e299e4e9079b6259d3",
      "parents": [
        "3a4c6800f31ea8395628af5e7e490270ee5d0585",
        "b1aabecd55931ee754f6a913969516b26a0e682e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Feb 12 09:56:14 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Feb 12 09:56:14 2009 -0800"
      },
      "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  mm: Export symbol ksize()\n"
    },
    {
      "commit": "3a4c6800f31ea8395628af5e7e490270ee5d0585",
      "tree": "5703cf8140e5b58f5f333dbbf7b1514404584e69",
      "parents": [
        "b578f3fcca1e78624dfb5f358776e63711d7fda2"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Thu Feb 12 04:34:23 2009 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Feb 12 08:10:53 2009 -0800"
      },
      "message": "Fix page writeback thinko, causing Berkeley DB slowdown\n\nA bug was introduced into write_cache_pages cyclic writeout by commit\n31a12666d8f0c22235297e1c1575f82061480029 (\"mm: write_cache_pages cyclic\nfix\").  The intention (and comments) is that we should cycle back and\nlook for more dirty pages at the beginning of the file if there is no\nmore work to be done.\n\nBut the !done condition was dropped from the test.  This means that any\ntime the page writeout loop breaks (eg.  due to nr_to_write \u003d\u003d 0), we\nwill set index to 0, then goto again.  This will set done_index to\nindex, then find done is set, so will proceed to the end of the\nfunction.  When updating mapping-\u003ewriteback_index for cyclic writeout,\nwe now use done_index \u003d\u003d 0, so we\u0027re always cycling back to 0.\n\nThis seemed to be causing random mmap writes (slapadd and iozone) to\nstart writing more pages from the LRU and writeout would slowdown, and\ncaused bugzilla entry\n\n\thttp://bugzilla.kernel.org/show_bug.cgi?id\u003d12604\n\nabout Berkeley DB slowing down dramatically.\n\nWith this patch, iozone random write performance is increased nearly\n5x on my system (iozone -B -r 4k -s 64k -s 512m -s 1200m on ext2).\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nReported-and-tested-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b1aabecd55931ee754f6a913969516b26a0e682e",
      "tree": "a52357aabb016960d80fce9a7ad0f78441e9f5c1",
      "parents": [
        "b578f3fcca1e78624dfb5f358776e63711d7fda2"
      ],
      "author": {
        "name": "Kirill A. Shutemov",
        "email": "kirill@shutemov.name",
        "time": "Tue Feb 10 15:21:44 2009 +0200"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Thu Feb 12 17:50:46 2009 +0200"
      },
      "message": "mm: Export symbol ksize()\n\nCommit 7b2cd92adc5430b0c1adeb120971852b4ea1ab08 (\"crypto: api - Fix\nzeroing on free\") added modular user of ksize(). Export that to fix\ncrypto.ko compilation.\n\nCc: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nSigned-off-by: Kirill A. Shutemov \u003ckirill@shutemov.name\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\n"
    },
    {
      "commit": "9480c53e9b2aa13a06283ffb96bb8f1873ac4e9a",
      "tree": "4d7949c56e6877f0aac372bebed379eda7b0e646",
      "parents": [
        "3abdbf90a3ffb006108c831c56b092e35483b6ec"
      ],
      "author": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@goop.org",
        "time": "Wed Feb 11 13:04:41 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 11 14:25:37 2009 -0800"
      },
      "message": "mm: rearrange exit_mmap() to unlock before arch_exit_mmap\n\nChristophe Saout reported [in precursor to:\nhttp://marc.info/?l\u003dlinux-kernel\u0026m\u003d123209902707347\u0026w\u003d4]:\n\n\u003e Note that I also some a different issue with CONFIG_UNEVICTABLE_LRU.\n\u003e Seems like Xen tears down current-\u003emm early on process termination, so\n\u003e that __get_user_pages in exit_mmap causes nasty messages when the\n\u003e process had any mlocked pages.  (in fact, it somehow manages to get into\n\u003e the swapping code and produces a null pointer dereference trying to get\n\u003e a swap token)\n\nJeremy explained:\n\nYes.  In the normal case under Xen, an in-use pagetable is \"pinned\",\nmeaning that it is RO to the kernel, and all updates must go via hypercall\n(or writes are trapped and emulated, which is much the same thing).  An\nunpinned pagetable is not currently in use by any process, and can be\ndirectly accessed as normal RW pages.\n\nAs an optimisation at process exit time, we unpin the pagetable as early\nas possible (switching the process to init_mm), so that all the normal\npagetable teardown can happen with direct memory accesses.\n\nThis happens in exit_mmap() -\u003e arch_exit_mmap().  The munlocking happens\na few lines below.  The obvious thing to do would be to move\narch_exit_mmap() to below the munlock code, but I think we\u0027d want to\ncall it even if mm-\u003emmap is NULL, just to be on the safe side.\n\nThus, this patch:\n\nexit_mmap() needs to unlock any locked vmas before calling arch_exit_mmap,\nas the latter may switch the current mm to init_mm, which would cause the\nformer to fail.\n\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy.fitzhardinge@citrix.com\u003e\nSigned-off-by: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: Christophe Saout \u003cchristophe@saout.de\u003e\nCc: Keir Fraser \u003ckeir.fraser@eu.citrix.com\u003e\nCc: Christophe Saout \u003cchristophe@saout.de\u003e\nCc: Alex Williamson \u003calex.williamson@hp.com\u003e\nCc: \u003cstable@kernel.org\u003e\t\t[2.6.28.x]\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "89e1219004b3657cc014521663eeef0744f1c99d",
      "tree": "350162d8019af504c6f0461b2f54606bd6af7142",
      "parents": [
        "6c5979631b4b03c9288776562c18036765e398c1"
      ],
      "author": {
        "name": "Federico Cuello",
        "email": "fedux@lugmen.org.ar",
        "time": "Wed Feb 11 13:04:39 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 11 14:25:37 2009 -0800"
      },
      "message": "writeback: fix break condition\n\nCommit dcf6a79dda5cc2a2bec183e50d829030c0972aaa (\"write-back: fix\nnr_to_write counter\") fixed nr_to_write counter, but didn\u0027t set the break\ncondition properly.\n\nIf nr_to_write \u003d\u003d 0 after being decremented it will loop one more time\nbefore setting done \u003d 1 and breaking the loop.\n\n[akpm@linux-foundation.org: coding-style fixes]\nCc: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\nAcked-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2e9c23724328ae4e56c42a35a717a956d7d3001d",
      "tree": "e96657542d354cef4d50020b48ab565053810d5d",
      "parents": [
        "d4097456cd1d9285e876fc5d08a789462804cc28"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Wed Feb 11 13:04:29 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 11 14:25:35 2009 -0800"
      },
      "message": "memcg: use __GFP_NOWARN in page cgroup allocation\n\npage_cgroup\u0027s page allocation at init/memory hotplug uses kmalloc() and\nvmalloc(). If kmalloc() failes, vmalloc() is used.\n\nThis is because vmalloc() is very limited resource on 32bit systems.\nWe want to use kmalloc() first.\n\nBut in this kind of call, __GFP_NOWARN should be specified.\n\nReported-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nAcked-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "508b9f8efdad123b202b228f71f59feba51e4fb5",
      "tree": "0da0d842edb168cfb7b883a3148b147dc631c2b9",
      "parents": [
        "02ac597c9b86af49b2016aa98aee20ab59dbf0d2"
      ],
      "author": {
        "name": "MinChan Kim",
        "email": "minchan.kim@gmail.com",
        "time": "Wed Feb 11 13:04:27 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 11 14:25:35 2009 -0800"
      },
      "message": "mm: fix mlocked page counter mismatch\n\nWhen I tested following program, I found that the mlocked counter\nis strange.  It cannot free some mlocked pages.\n\nIt is because try_to_unmap_file() doesn\u0027t check real\npage mappings in vmas.\n\nThat is because the goal of an address_space for a file is to find all\nprocesses into which the file\u0027s specific interval is mapped.  It is\nrelated to the file\u0027s interval, not to pages.\n\nEven if the page isn\u0027t really mapped by the vma, it returns SWAP_MLOCK\nsince the vma has VM_LOCKED, then calls try_to_mlock_page.  After this the\nmlocked counter is increased again.\n\nCOWed anon page in a file-backed vma could be a such case.  This patch\nresolves it.\n\n-- my test program --\n\nint main()\n{\n       mlockall(MCL_CURRENT);\n       return 0;\n}\n\n-- before --\n\nroot@barrios-target-linux:~# cat /proc/meminfo | egrep \u0027Mlo|Unev\u0027\nUnevictable:           0 kB\nMlocked:               0 kB\n\n-- after --\n\nroot@barrios-target-linux:~# cat /proc/meminfo | egrep \u0027Mlo|Unev\u0027\nUnevictable:           8 kB\nMlocked:               8 kB\n\nSigned-off-by: MinChan Kim \u003cminchan.kim@gmail.com\u003e\nAcked-by: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nAcked-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nTested-by: Lee Schermerhorn \u003clee.schermerhorn@hp.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": "fc3501d411d34823fb9be248a95a0c44f945866f",
      "tree": "9a16de761b4c7d3401149a212b8004df23fbbcca",
      "parents": [
        "35887b1cf74dc751dd0574b26515142d3cea9376"
      ],
      "author": {
        "name": "Sven Wegener",
        "email": "sven.wegener@stealer.net",
        "time": "Wed Feb 11 13:04:23 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 11 14:25:35 2009 -0800"
      },
      "message": "mm: fix dirty_bytes/dirty_background_bytes sysctls on 64bit arches\n\nWe need to pass an unsigned long as the minimum, because it gets casted\nto an unsigned long in the sysctl handler. If we pass an int, we\u0027ll\naccess four more bytes on 64bit arches, resulting in a random minimum\nvalue.\n\n[rientjes@google.com: fix type of `old_bytes\u0027]\nSigned-off-by: Sven Wegener \u003csven.wegener@stealer.net\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1001c9fb8721ab395e21f571ed2aaa523cdd1e29",
      "tree": "fc8835db2b1a5fb5b147af4025767d3393bb3a33",
      "parents": [
        "17c9d12e126cb0de8d535dc1908c4819d712bc68"
      ],
      "author": {
        "name": "Daisuke Nishimura",
        "email": "nishimura@mxp.nes.nec.co.jp",
        "time": "Wed Feb 11 13:04:18 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 11 14:25:34 2009 -0800"
      },
      "message": "migration: migrate_vmas should check \"vma\"\n\nmigrate_vmas() should check \"vma\" not \"vma-\u003evm_next\" for for-loop condition.\n\nSigned-off-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "17c9d12e126cb0de8d535dc1908c4819d712bc68",
      "tree": "a1a9a07e2eb70e8c474d3bd040d724413bde9718",
      "parents": [
        "6c6f1f0f4db31a192916eaa31ec2f114fda7d5e5"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Wed Feb 11 16:34:16 2009 +0000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 11 12:38:09 2009 -0800"
      },
      "message": "Do not account for hugetlbfs quota at mmap() time if mapping [SHM|MAP]_NORESERVE\n\nCommit 5a6fe125950676015f5108fb71b2a67441755003 brought hugetlbfs more\nin line with the core VM by obeying VM_NORESERVE and not reserving\nhugepages for both shared and private mappings when [SHM|MAP]_NORESERVE\nare specified.  However, it is still taking filesystem quota\nunconditionally.\n\nAt fault time, if there are no reserves and attempt is made to allocate\nthe page and account for filesystem quota.  If either fail, the fault\nfails.  The impact is that quota is getting accounted for twice.  This\npatch partially reverts 5a6fe125950676015f5108fb71b2a67441755003.  To\nhelp prevent this mistake happening again, it improves the documentation\nof hugetlb_reserve_pages()\n\nReported-by: Andy Whitcroft \u003capw@canonical.com\u003e\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nAcked-by: Andy Whitcroft \u003capw@canonical.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9f339e7028e2855717af3193c938f9960ad13b38",
      "tree": "76e0e9181f4ee2b324742d517518e837d5c250bf",
      "parents": [
        "06eb23b1ba39c61ee5d5faeb42a097635693e370"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Wed Feb 11 15:10:27 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Feb 11 15:44:20 2009 +0100"
      },
      "message": "x86, ptrace, mm: fix double-free on race\n\nPtrace_detach() races with __ptrace_unlink() if the traced task is\nreaped while detaching. This might cause a double-free of the BTS\nbuffer.\n\nChange the ptrace_detach() path to only do the memory accounting in\nptrace_bts_detach() and leave the buffer free to ptrace_bts_untrace()\nwhich will be called from __ptrace_unlink().\n\nThe fix follows a proposal from Oleg Nesterov.\n\nReported-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "ed850a52af971528b048812c4215cef298af0d3b",
      "tree": "e78fdb9e91e61dd297df2b126527340b483ae2a2",
      "parents": [
        "cb5629b10d64a8006622ce3a52bc887d91057d69"
      ],
      "author": {
        "name": "Mimi Zohar",
        "email": "zohar@linux.vnet.ibm.com",
        "time": "Tue Feb 10 23:01:19 2009 -0500"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Wed Feb 11 15:27:15 2009 +1100"
      },
      "message": "integrity: shmem zero fix\n\nBased on comments from Mike Frysinger and Randy Dunlap:\n(http://lkml.org/lkml/2009/2/9/262)\n- moved ima.h include before CONFIG_SHMEM test to fix compiler error\n  on Blackfin:\nmm/shmem.c: In function \u0027shmem_zero_setup\u0027:\nmm/shmem.c:2670: error: implicit declaration of function \u0027ima_shm_check\u0027\n\n- added \u0027struct linux_binprm\u0027 in ima.h to fix compiler warning on Blackfin:\nIn file included from mm/shmem.c:32:\ninclude/linux/ima.h:25: warning: \u0027struct linux_binprm\u0027 declared inside\nparameter list\ninclude/linux/ima.h:25: warning: its scope is only this definition or\ndeclaration, which is probably not what you want\n\n- moved fs.h include within _LINUX_IMA_H definition\n\nSigned-off-by: Mimi Zohar \u003czohar@us.ibm.com\u003e\nSigned-off-by: Mike Frysinger \u003cvapier@gentoo.org\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "5a6fe125950676015f5108fb71b2a67441755003",
      "tree": "c985fac46de39392466c4917c497b50bdc9c0757",
      "parents": [
        "4c098bcd55fad34dcf224bf8343db6a9ac58fc68"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Tue Feb 10 14:02:27 2009 +0000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Feb 10 10:48:42 2009 -0800"
      },
      "message": "Do not account for the address space used by hugetlbfs using VM_ACCOUNT\n\nWhen overcommit is disabled, the core VM accounts for pages used by anonymous\nshared, private mappings and special mappings. It keeps track of VMAs that\nshould be accounted for with VM_ACCOUNT and VMAs that never had a reserve\nwith VM_NORESERVE.\n\nOvercommit for hugetlbfs is much riskier than overcommit for base pages\ndue to contiguity requirements. It avoids overcommiting on both shared and\nprivate mappings using reservation counters that are checked and updated\nduring mmap(). This ensures (within limits) that hugepages exist in the\nfuture when faults occurs or it is too easy to applications to be SIGKILLed.\n\nAs hugetlbfs makes its own reservations of a different unit to the base page\nsize, VM_ACCOUNT should never be set. Even if the units were correct, we would\ndouble account for the usage in the core VM and hugetlbfs. VM_NORESERVE may\nbe set because an application can request no reserves be made for hugetlbfs\nat the risk of getting killed later.\n\nWith commit fc8744adc870a8d4366908221508bb113d8b72ee, VM_NORESERVE and\nVM_ACCOUNT are getting unconditionally set for hugetlbfs-backed mappings. This\nbreaks the accounting for both the core VM and hugetlbfs, can trigger an\nOOM storm when hugepage pools are too small lockups and corrupted counters\notherwise are used. This patch brings hugetlbfs more in line with how the\ncore VM treats VM_NORESERVE but prevents VM_ACCOUNT being set.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d5b562330ec766292a3ac54ae5e0673610bd5b3d",
      "tree": "a0e10b64c1f7264efd073bbb0d93011c2064730f",
      "parents": [
        "8e4921515c1a379539607eb443d51c30f4f7f338"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Sun Feb 08 20:56:58 2009 +0000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Feb 08 13:53:28 2009 -0800"
      },
      "message": "mm: fix error case in mlock downgrade reversion\n\nCommit 27421e211a39784694b597dbf35848b88363c248, Manually revert\n\"mlock: downgrade mmap sem while populating mlocked regions\", has\nintroduced its own regression: __mlock_vma_pages_range() may report\nan error (for example, -EFAULT from trying to lock down pages from\nbeyond EOF), but mlock_vma_pages_range() must hide that from its\ncallers as before.\n\nReported-by: Sami Farin \u003csafari-kernel@safari.iki.fi\u003e\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "cb5629b10d64a8006622ce3a52bc887d91057d69",
      "tree": "7c06d8f30783115e3384721046258ce615b129c5",
      "parents": [
        "8920d5ad6ba74ae8ab020e90cc4d976980e68701",
        "f01d1d546abb2f4028b5299092f529eefb01253a"
      ],
      "author": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Fri Feb 06 11:01:45 2009 +1100"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Fri Feb 06 11:01:45 2009 +1100"
      },
      "message": "Merge branch \u0027master\u0027 into next\n\nConflicts:\n\tfs/namei.c\n\nManually merged per:\n\ndiff --cc fs/namei.c\nindex 734f2b5,bbc15c2..0000000\n--- a/fs/namei.c\n+++ b/fs/namei.c\n@@@ -860,9 -848,8 +849,10 @@@ static int __link_path_walk(const char\n  \t\tnd-\u003eflags |\u003d LOOKUP_CONTINUE;\n  \t\terr \u003d exec_permission_lite(inode);\n  \t\tif (err \u003d\u003d -EAGAIN)\n- \t\t\terr \u003d vfs_permission(nd, MAY_EXEC);\n+ \t\t\terr \u003d inode_permission(nd-\u003epath.dentry-\u003ed_inode,\n+ \t\t\t\t\t       MAY_EXEC);\n +\t\tif (!err)\n +\t\t\terr \u003d ima_path_check(\u0026nd-\u003epath, MAY_EXEC);\n   \t\tif (err)\n  \t\t\tbreak;\n\n@@@ -1525,14 -1506,9 +1509,14 @@@ int may_open(struct path *path, int acc\n  \t\tflag \u0026\u003d ~O_TRUNC;\n  \t}\n\n- \terror \u003d vfs_permission(nd, acc_mode);\n+ \terror \u003d inode_permission(inode, acc_mode);\n  \tif (error)\n  \t\treturn error;\n +\n- \terror \u003d ima_path_check(\u0026nd-\u003epath,\n++\terror \u003d ima_path_check(path,\n +\t\t\t       acc_mode \u0026 (MAY_READ | MAY_WRITE | MAY_EXEC));\n +\tif (error)\n +\t\treturn error;\n  \t/*\n  \t * An append-only file must be opened in append mode for writing.\n  \t */\n\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "1df9f0a73178718969ae47d813b8e7aab2cf073c",
      "tree": "6bd3d8838858f0e93acd8f7969b7d0e5ce2bfb08",
      "parents": [
        "f4bd857bc8ed997c25ec06b56ef8064aafa6d4f3"
      ],
      "author": {
        "name": "Mimi Zohar",
        "email": "zohar@linux.vnet.ibm.com",
        "time": "Wed Feb 04 09:07:02 2009 -0500"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Fri Feb 06 09:05:33 2009 +1100"
      },
      "message": "Integrity: IMA file free imbalance\n\nThe number of calls to ima_path_check()/ima_file_free()\nshould be balanced.  An extra call to fput(), indicates\nthe file could have been accessed without first being\nmeasured.\n\nAlthough f_count is incremented/decremented in places other\nthan fget/fput, like fget_light/fput_light and get_file, the\ncurrent task must already hold a file refcnt.  The call to\n__fput() is delayed until the refcnt becomes 0, resulting\nin ima_file_free() flagging any changes.\n\n- add hook to increment opencount for IPC shared memory(SYSV),\n  shmat files, and /dev/zero\n- moved NULL iint test in opencount_get()\n\nSigned-off-by: Mimi Zohar \u003czohar@us.ibm.com\u003e\nAcked-by: Serge Hallyn \u003cserue@us.ibm.com\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "6146f0d5e47ca4047ffded0fb79b6c25359b386c",
      "tree": "edd792e52ad56d4a5d3ac6caa8437d3283fc157e",
      "parents": [
        "659aaf2bb5496a425ba14036b5b5900f593e4484"
      ],
      "author": {
        "name": "Mimi Zohar",
        "email": "zohar@linux.vnet.ibm.com",
        "time": "Wed Feb 04 09:06:57 2009 -0500"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Fri Feb 06 09:05:30 2009 +1100"
      },
      "message": "integrity: IMA hooks\n\nThis patch replaces the generic integrity hooks, for which IMA registered\nitself, with IMA integrity hooks in the appropriate places directly\nin the fs directory.\n\nSigned-off-by: Mimi Zohar \u003czohar@us.ibm.com\u003e\nAcked-by: Serge Hallyn \u003cserue@us.ibm.com\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "ab92661d5d9514647346047f30f67a7f35ffea67",
      "tree": "3ed67a71d7cce6dbd5b6bd559966f7fc137c8f00",
      "parents": [
        "777c6c5f1f6e757ae49ecca2ed72d6b1f523c007"
      ],
      "author": {
        "name": "Carsten Otte",
        "email": "cotte@de.ibm.com",
        "time": "Wed Feb 04 15:12:16 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Feb 05 12:56:48 2009 -0800"
      },
      "message": "do_wp_page: fix regression with execute in place\n\nFix do_wp_page for VM_MIXEDMAP mappings.\n\nIn the case where pfn_valid returns 0 for a pfn at the beginning of\ndo_wp_page and the mapping is not shared writable, the code branches to\nlabel `gotten:\u0027 with old_page \u003d\u003d NULL.\n\nIn case the vma is locked (vma-\u003evm_flags \u0026 VM_LOCKED), lock_page,\nclear_page_mlock, and unlock_page try to access the old_page.\n\nThis patch checks whether old_page is valid before it is dereferenced.\n\nThe regression was introduced by \"mlock: mlocked pages are unevictable\"\n(commit b291f000393f5a0b679012b39d79fbc85c018233).\n\nSigned-off-by: Carsten Otte \u003ccotte@de.ibm.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nCc: \u003cstable@kernel.org\u003e\t\t[2.6.28.x]\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "dcf6a79dda5cc2a2bec183e50d829030c0972aaa",
      "tree": "557b2867e7c9df361f50b913936d60d4245cf6f8",
      "parents": [
        "5193535517825f9a07967e4868a1103013d0a99d"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Mon Feb 02 18:33:49 2009 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Feb 03 16:59:08 2009 -0800"
      },
      "message": "write-back: fix nr_to_write counter\n\nCommit 05fe478dd04e02fa230c305ab9b5616669821dd3 introduced some\n@wbc-\u003enr_to_write breakage.\n\nIt made the following changes:\n 1. Decrement wbc-\u003enr_to_write instead of nr_to_write\n 2. Decrement wbc-\u003enr_to_write _only_ if wbc-\u003esync_mode \u003d\u003d WB_SYNC_NONE\n 3. If synced nr_to_write pages, stop only if if wbc-\u003esync_mode \u003d\u003d\n    WB_SYNC_NONE, otherwise keep going.\n\nHowever, according to the commit message, the intention was to only make\nchange 3.  Change 1 is a bug.  Change 2 does not seem to be necessary,\nand it breaks UBIFS expectations, so if needed, it should be done\nseparately later.  And change 2 does not seem to be documented in the\ncommit message.\n\nThis patch does the following:\n 1. Undo changes 1 and 2\n 2. Add a comment explaining change 3 (it very useful to have comments\n    in _code_, not only in the commit).\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\nAcked-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "859281ff370977f917ec2195f86a5bfccf1fc6d6",
      "tree": "ea8b4d21187b5de7b61ca368701c89d3504d5f96",
      "parents": [
        "93bfbd71db4d2e01c05e219f285249a74808b1d4",
        "f58914e41473faf15e2dd66ad26be914da1bce71"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Feb 02 19:27:00 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Feb 02 19:27:00 2009 -0800"
      },
      "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: fix per cpu kmem_cache_cpu array memory leak\n  kmalloc: return NULL instead of link failure\n"
    },
    {
      "commit": "27421e211a39784694b597dbf35848b88363c248",
      "tree": "8d9a06e453c40dea7db3a3d0d9d3d864690427db",
      "parents": [
        "45c82b5a770be66845687a7d027c8b52946d59af"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Feb 01 11:00:16 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Feb 01 11:00:16 2009 -0800"
      },
      "message": "Manually revert \"mlock: downgrade mmap sem while populating mlocked regions\"\n\nThis essentially reverts commit 8edb08caf68184fb170f4f69c7445929e199eaea.\n\nIt downgraded our mmap semaphore to a read-lock while mlocking pages, in\norder to allow other threads (and external accesses like \"ps\" et al) to\nwalk the vma lists and take page faults etc.  Which is a nice idea, but\nthe implementation does not work.\n\nBecause we cannot upgrade the lock back to a write lock without\nreleasing the mmap semaphore, the code had to release the lock entirely\nand then re-take it as a writelock.  However, that meant that the caller\npossibly lost the vma chain that it was following, since now another\nthread could come in and mmap/munmap the range.\n\nThe code tried to work around that by just looking up the vma again and\nerroring out if that happened, but quite frankly, that was just a buggy\nhack that doesn\u0027t actually protect against anything (the other thread\ncould just have replaced the vma with another one instead of totally\nunmapping it).\n\nThe only way to downgrade to a read map _reliably_ is to do it at the\nend, which is likely the right thing to do: do all the \u0027vma\u0027 operations\nwith the write-lock held, then downgrade to a read after completing them\nall, and then do the \"populate the newly mlocked regions\" while holding\njust the read lock.  And then just drop the read-lock and return to user\nspace.\n\nThe (perhaps somewhat simpler) alternative is to just make all the\ncallers of mlock_vma_pages_range() know that the mmap lock got dropped,\nand just re-grab the mmap semaphore if it needs to mlock more than one\nvma region.\n\nSo we can do this \"downgrade mmap sem while populating mlocked regions\"\nthing right, but the way it was done here was absolutely not correct.\nThus the revert, in the expectation that we will do it all correctly\nsome day.\n\nCc: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: stable@kernel.org\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "fc8744adc870a8d4366908221508bb113d8b72ee",
      "tree": "755f4c4a1cc30567fde4e60c9cc5e6a889c360b0",
      "parents": [
        "33bfad54b58cf05cfe6678c3ec9235d4bc8db4c2"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jan 31 15:08:56 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jan 31 15:08:56 2009 -0800"
      },
      "message": "Stop playing silly games with the VM_ACCOUNT flag\n\nThe mmap_region() code would temporarily set the VM_ACCOUNT flag for\nanonymous shared mappings just to inform shmem_zero_setup() that it\nshould enable accounting for the resulting shm object.  It would then\nclear the flag after calling -\u003emmap (for the /dev/zero case) or doing\nshmem_zero_setup() (for the MAP_ANON case).\n\nThis just resulted in vma merge issues, but also made for just\nunnecessary confusion.  Use the already-existing VM_NORESERVE flag for\nthis instead, and let shmem_{zero|file}_setup() just figure it out from\nthat.\n\nThis also happens to make it obvious that the new DRI2 GEM layer uses a\nnon-reserving backing store for its object allocation - which is quite\npossibly not intentional.  But since I didn\u0027t want to change semantics\nin this patch, I left it alone, and just updated the caller to use the\nnew flag semantics.\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "33bfad54b58cf05cfe6678c3ec9235d4bc8db4c2",
      "tree": "d6be0ff97effa23289b2566acf8e56a49aa5657e",
      "parents": [
        "c01a25e7cf6dcb0fa69c155706d5dd1e76e53796"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 30 11:37:22 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 30 11:37:22 2009 -0800"
      },
      "message": "Allow opportunistic merging of VM_CAN_NONLINEAR areas\n\nCommit de33c8db5910cda599899dd431cc30d7c1018cbf (\"Fix OOPS in\nmmap_region() when merging adjacent VM_LOCKED file segments\") unified\nthe vma merging of anonymous and file maps to just one place, which\nsimplified the code and fixed a use-after-free bug that could cause an\noops.\n\nBut by doing the merge opportunistically before even having called\n-\u003emmap() on the file method, it now compares two different \u0027vm_flags\u0027\nvalues: the pre-mmap() value of the new not-yet-formed vma, and previous\nmappings of the same file around it.\n\nAnd in doing so, it refused to merge the common file case, which adds a\nmarker to say \"I can be made non-linear\".\n\nThis fixes it by just adding a set of flags that don\u0027t have to match,\nbecause we know they are ok to merge.  Currently it\u0027s only that single\nVM_CAN_NONLINEAR flag, but at least conceptually there could be others\nin the future.\n\nReported-and-acked-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Greg KH \u003cgregkh@suse.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "299b4eaa302138426d5a9ecd954de1f565d76c94",
      "tree": "790271af066eaa6d01f94ff91ab14d54f96c6f62",
      "parents": [
        "248ae0d43fe7f951352eedfff36572d4b75ce963"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Thu Jan 29 14:25:17 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 29 18:04:44 2009 -0800"
      },
      "message": "memcg: NULL pointer dereference at rmdir on some NUMA systems\n\nN_POSSIBLE doesn\u0027t means there is memory...and force_empty can\nvisit invalid node which have no pgdat.\n\nTo visit all valid nodes, N_HIGH_MEMORY should be used.\n\nReported-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nTested-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "85d9fc89fb0f0703df6444f260187c088a8d59ff",
      "tree": "ba034e2b8bff6b7f3b62a826a0106dc0e1391b46",
      "parents": [
        "7460db567bbca76bf087d1694d792a1a96bdaa26"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Thu Jan 29 14:25:13 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 29 18:04:43 2009 -0800"
      },
      "message": "memcg: fix refcnt handling at swapoff\n\nNow, at swapoff, even while try_charge() fails, commit is executed.  This\nis a bug which turns the refcnt of cgroup_subsys_state negative.\n\nReported-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nTested-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nTested-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nReviewed-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: 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": "7bcc1bb1232de6efc0b85e0c7fe38e90b2436318",
      "tree": "3952a706885f4c57217f4196f055a7c16d0af80b",
      "parents": [
        "baef99a08a2e23d9386b47e53fa5f0d44fc98f66"
      ],
      "author": {
        "name": "Daisuke Nishimura",
        "email": "nishimura@mxp.nes.nec.co.jp",
        "time": "Thu Jan 29 14:25:11 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 29 18:04:43 2009 -0800"
      },
      "message": "memcg: get/put parents at create/free\n\nThe lifetime of struct cgroup and struct mem_cgroup is different and\nmem_cgroup has its own reference count for handling references from\nswap_cgroup.\n\nThis causes strange problem that the parent mem_cgroup dies while child\nmem_cgroup alive, and this problem causes a bug in case of\nuse_hierarchy\u003d\u003d1 because res_counter_uncharge climbs up the tree.\n\nThis patch is for avoiding it by getting the parent at create, and putting\nit at freeing.\n\nSigned-off-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nReviewed-by; KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nCc: Li Zefan \u003clizf@cn.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": "de33c8db5910cda599899dd431cc30d7c1018cbf",
      "tree": "4ee9ba8685bae5d1719a3158284d0c197c83afde",
      "parents": [
        "18e352e4a73465349711a9324767e1b2453383e2"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 29 17:46:42 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 29 17:46:42 2009 -0800"
      },
      "message": "Fix OOPS in mmap_region() when merging adjacent VM_LOCKED file segments\n\nAs of commit ba470de43188cdbff795b5da43a1474523c6c2fb (\"map: handle\nmlocked pages during map, remap, unmap\") we now use the \u0027vma\u0027 variable\nat the end of mmap_region() to handle the page-in of newly mapped\nmlocked pages.\n\nHowever, if we merged adjacent vma\u0027s together, the vma we\u0027re using may\nbe stale.  We historically consciously avoided using it after the merge\noperation, but that got overlooked when redoing the locked page\nhandling.\n\nThis commit simplifies mmap_region() by doing any vma merges early,\navoiding the issue entirely, and \u0027vma\u0027 will always be valid.  As pointed\nout by Hugh Dickins, this depends on any drivers that change the page\noffset of flags to have set one of the VM_SPECIAL bits (so that they\ncannot trigger the early merge logic), but that\u0027s true in general.\n\nReported-and-tested-by: Maksim Yevmenkin \u003cmaksim.yevmenkin@gmail.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    }
  ],
  "next": "3718909448116bf4411445468c58acc946379f92"
}
