)]}'
{
  "log": [
    {
      "commit": "af4f8ba31a4e328677bec493ceeaf112ca193b65",
      "tree": "d97a6dc3a8ddcd2bcebe124a4716e565a7868cdc",
      "parents": [
        "efff0471b0dd8b08ca3830b06a9083f6d6cef44e",
        "c03f94ccbd67fbcf546e5a9fcfeb99ef0aca4ada"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 01 16:50:23 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 01 16:50:23 2012 -0700"
      },
      "message": "Merge branch \u0027slab/for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/linux\n\nPull slab updates from Pekka Enberg:\n \"Mainly a bunch of SLUB fixes from Joonsoo Kim\"\n\n* \u0027slab/for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/linux:\n  slub: use __SetPageSlab function to set PG_slab flag\n  slub: fix a memory leak in get_partial_node()\n  slub: remove unused argument of init_kmem_cache_node()\n  slub: fix a possible memory leak\n  Documentations: Fix slabinfo.c directory in vm/slub.txt\n  slub: fix incorrect return type of get_any_partial()\n"
    },
    {
      "commit": "c03f94ccbd67fbcf546e5a9fcfeb99ef0aca4ada",
      "tree": "c4b107833f17e6812778b25ac942dde7db1dd711",
      "parents": [
        "02d7633fa567be7bf55a993b79d2a31b95ce2227"
      ],
      "author": {
        "name": "Joonsoo Kim",
        "email": "js1304@gmail.com",
        "time": "Fri May 18 00:47:47 2012 +0900"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Fri May 18 12:28:06 2012 +0300"
      },
      "message": "slub: use __SetPageSlab function to set PG_slab flag\n\nTo set page-flag, using SetPageXXXX() and __SetPageXXXX() is more\nunderstandable and maintainable. So change it.\n\nSigned-off-by: Joonsoo Kim \u003cjs1304@gmail.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "02d7633fa567be7bf55a993b79d2a31b95ce2227",
      "tree": "31df09df6c946f9b8edc909648e0a1c33dae794c",
      "parents": [
        "4053497d6a37715f4b20dcc180a52717b4c8ffba"
      ],
      "author": {
        "name": "Joonsoo Kim",
        "email": "js1304@gmail.com",
        "time": "Thu May 17 00:13:02 2012 +0900"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Fri May 18 12:23:36 2012 +0300"
      },
      "message": "slub: fix a memory leak in get_partial_node()\n\nIn the case which is below,\n\n1. acquire slab for cpu partial list\n2. free object to it by remote cpu\n3. page-\u003efreelist \u003d t\n\nthen memory leak is occurred.\n\nChange acquire_slab() not to zap freelist when it works for cpu partial list.\nI think it is a sufficient solution for fixing a memory leak.\n\nBelow is output of \u0027slabinfo -r kmalloc-256\u0027\nwhen \u0027./perf stat -r 30 hackbench 50 process 4000 \u003e /dev/null\u0027 is done.\n\n***Vanilla***\nSizes (bytes)     Slabs              Debug                Memory\n------------------------------------------------------------------------\nObject :     256  Total  :     468   Sanity Checks : Off  Total: 3833856\nSlabObj:     256  Full   :     111   Redzoning     : Off  Used : 2004992\nSlabSiz:    8192  Partial:     302   Poisoning     : Off  Loss : 1828864\nLoss   :       0  CpuSlab:      55   Tracking      : Off  Lalig:       0\nAlign  :       8  Objects:      32   Tracing       : Off  Lpadd:       0\n\n***Patched***\nSizes (bytes)     Slabs              Debug                Memory\n------------------------------------------------------------------------\nObject :     256  Total  :     300   Sanity Checks : Off  Total: 2457600\nSlabObj:     256  Full   :     204   Redzoning     : Off  Used : 2348800\nSlabSiz:    8192  Partial:      33   Poisoning     : Off  Loss :  108800\nLoss   :       0  CpuSlab:      63   Tracking      : Off  Lalig:       0\nAlign  :       8  Objects:      32   Tracing       : Off  Lpadd:       0\n\nTotal and loss number is the impact of this patch.\n\nCc: \u003cstable@vger.kernel.org\u003e\nAcked-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Joonsoo Kim \u003cjs1304@gmail.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "02e1a9cd1ea99b67a668f13b61fdf5d42115db0a",
      "tree": "9b3bda333e113047b62f79681cad416259bee160",
      "parents": [
        "eb94cd96e05d6c65a07937e66a04ea265c1b767d"
      ],
      "author": {
        "name": "majianpeng",
        "email": "majianpeng@gmail.com",
        "time": "Thu May 17 17:03:26 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 17 18:00:51 2012 -0700"
      },
      "message": "slub: missing test for partial pages flush work in flush_all()\n\nI found some kernel messages such as:\n\n    SLUB raid5-md127: kmem_cache_destroy called for cache that still has objects.\n    Pid: 6143, comm: mdadm Tainted: G           O 3.4.0-rc6+        #75\n    Call Trace:\n    kmem_cache_destroy+0x328/0x400\n    free_conf+0x2d/0xf0 [raid456]\n    stop+0x41/0x60 [raid456]\n    md_stop+0x1a/0x60 [md_mod]\n    do_md_stop+0x74/0x470 [md_mod]\n    md_ioctl+0xff/0x11f0 [md_mod]\n    blkdev_ioctl+0xd8/0x7a0\n    block_ioctl+0x3b/0x40\n    do_vfs_ioctl+0x96/0x560\n    sys_ioctl+0x91/0xa0\n    system_call_fastpath+0x16/0x1b\n\nThen using kmemleak I found these messages:\n\n    unreferenced object 0xffff8800b6db7380 (size 112):\n      comm \"mdadm\", pid 5783, jiffies 4294810749 (age 90.589s)\n      hex dump (first 32 bytes):\n        01 01 db b6 ad 4e ad de ff ff ff ff ff ff ff ff  .....N..........\n        ff ff ff ff ff ff ff ff 98 40 4a 82 ff ff ff ff  .........@J.....\n      backtrace:\n        kmemleak_alloc+0x21/0x50\n        kmem_cache_alloc+0xeb/0x1b0\n        kmem_cache_open+0x2f1/0x430\n        kmem_cache_create+0x158/0x320\n        setup_conf+0x649/0x770 [raid456]\n        run+0x68b/0x840 [raid456]\n        md_run+0x529/0x940 [md_mod]\n        do_md_run+0x18/0xc0 [md_mod]\n        md_ioctl+0xba8/0x11f0 [md_mod]\n        blkdev_ioctl+0xd8/0x7a0\n        block_ioctl+0x3b/0x40\n        do_vfs_ioctl+0x96/0x560\n        sys_ioctl+0x91/0xa0\n        system_call_fastpath+0x16/0x1b\n\nThis bug was introduced by commit a8364d5555b (\"slub: only IPI CPUs that\nhave per cpu obj to flush\"), which did not include checks for per cpu\npartial pages being present on a cpu.\n\nSigned-off-by: majianpeng \u003cmajianpeng@gmail.com\u003e\nCc: Gilad Ben-Yossef \u003cgilad@benyossef.com\u003e\nAcked-by: Christoph Lameter \u003ccl@linux.com\u003e\nCc: Pekka Enberg \u003cpenberg@kernel.org\u003e\nTested-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4053497d6a37715f4b20dcc180a52717b4c8ffba",
      "tree": "a40fe690281717cadfae07212d20e0911857bf59",
      "parents": [
        "601d39d00c2af206d10d1252132a85316d95499a"
      ],
      "author": {
        "name": "Joonsoo Kim",
        "email": "js1304@gmail.com",
        "time": "Fri May 11 00:50:47 2012 +0900"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Wed May 16 09:45:45 2012 +0300"
      },
      "message": "slub: remove unused argument of init_kmem_cache_node()\n\nWe don\u0027t use the argument since commit 3b89d7d881a1dbb4da158f7eb5d6b3ceefc72810\n(\u0027slub: move min_partial to struct kmem_cache\u0027), so remove it\n\nAcked-by: Christoph Lameter \u003ccl@linux.com\u003e\nAcked-by: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Joonsoo Kim \u003cjs1304@gmail.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "601d39d00c2af206d10d1252132a85316d95499a",
      "tree": "49cba676d0106e6310b3a5dc560f2b477fd79fea",
      "parents": [
        "9fe496116e966902f5efe593d946222a649ea5c8"
      ],
      "author": {
        "name": "Joonsoo Kim",
        "email": "js1304@gmail.com",
        "time": "Fri May 11 00:32:59 2012 +0900"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Wed May 16 09:37:25 2012 +0300"
      },
      "message": "slub: fix a possible memory leak\n\nMemory allocated by kstrdup should be freed,\nwhen kmalloc(kmem_size, GFP_KERNEL) is failed.\n\nAcked-by: Christoph Lameter \u003ccl@linux.com\u003e\nAcked-by: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Joonsoo Kim \u003cjs1304@gmail.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "de3ec035627b4aba8905643084c1f7944acc99cc",
      "tree": "00aebefbb7ba4b630ed5e8e876b1d6a49cf4db35",
      "parents": [
        "dd775ae2549217d3ae09363e3edb305d0fa19928"
      ],
      "author": {
        "name": "Joonsoo Kim",
        "email": "js1304@gmail.com",
        "time": "Fri Jan 27 00:12:23 2012 -0800"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Tue May 08 08:31:57 2012 +0300"
      },
      "message": "slub: fix incorrect return type of get_any_partial()\n\nCommit 497b66f2ecc97844493e6a147fd5a7e73f73f408 (\u0027slub: return object pointer\nfrom get_partial() / new_slab().\u0027) changed return type of some functions.\nThis updates missing part.\n\nSigned-off-by: Joonsoo Kim \u003cjs1304@gmail.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "532bfc851a7475fb6a36c1e953aa395798a7cca7",
      "tree": "a7892e5a31330dd59f31959efbe9fda1803784fd",
      "parents": [
        "0195c00244dc2e9f522475868fa278c473ba7339",
        "8da00edc1069f01c34510fa405dc15d96c090a3f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 28 17:19:27 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 28 17:19:28 2012 -0700"
      },
      "message": "Merge branch \u0027akpm\u0027 (Andrew\u0027s patch-bomb)\n\nMerge third batch of patches from Andrew Morton:\n - Some MM stragglers\n - core SMP library cleanups (on_each_cpu_mask)\n - Some IPI optimisations\n - kexec\n - kdump\n - IPMI\n - the radix-tree iterator work\n - various other misc bits.\n\n \"That\u0027ll do for -rc1.  I still have ~10 patches for 3.4, will send\n  those along when they\u0027ve baked a little more.\"\n\n* emailed from Andrew Morton \u003cakpm@linux-foundation.org\u003e: (35 commits)\n  backlight: fix typo in tosa_lcd.c\n  crc32: add help text for the algorithm select option\n  mm: move hugepage test examples to tools/testing/selftests/vm\n  mm: move slabinfo.c to tools/vm\n  mm: move page-types.c from Documentation to tools/vm\n  selftests/Makefile: make `run_tests\u0027 depend on `all\u0027\n  selftests: launch individual selftests from the main Makefile\n  radix-tree: use iterators in find_get_pages* functions\n  radix-tree: rewrite gang lookup using iterator\n  radix-tree: introduce bit-optimized iterator\n  fs/proc/namespaces.c: prevent crash when ns_entries[] is empty\n  nbd: rename the nbd_device variable from lo to nbd\n  pidns: add reboot_pid_ns() to handle the reboot syscall\n  sysctl: use bitmap library functions\n  ipmi: use locks on watchdog timeout set on reboot\n  ipmi: simplify locking\n  ipmi: fix message handling during panics\n  ipmi: use a tasklet for handling received messages\n  ipmi: increase KCS timeouts\n  ipmi: decrease the IPMI message transaction time in interrupt mode\n  ...\n"
    },
    {
      "commit": "a8364d5555b2030d093cde0f07951628e55454e1",
      "tree": "a0fa097e39d103644d9f82269eea419b2a604f74",
      "parents": [
        "b3a7e98e024ffa9f7e4554dd720c508015c4a831"
      ],
      "author": {
        "name": "Gilad Ben-Yossef",
        "email": "gilad@benyossef.com",
        "time": "Wed Mar 28 14:42:44 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 28 17:14:35 2012 -0700"
      },
      "message": "slub: only IPI CPUs that have per cpu obj to flush\n\nflush_all() is called for each kmem_cache_destroy().  So every cache being\ndestroyed dynamically ends up sending an IPI to each CPU in the system,\nregardless if the cache has ever been used there.\n\nFor example, if you close the Infinband ipath driver char device file, the\nclose file ops calls kmem_cache_destroy().  So running some infiniband\nconfig tool on one a single CPU dedicated to system tasks might interrupt\nthe rest of the 127 CPUs dedicated to some CPU intensive or latency\nsensitive task.\n\nI suspect there is a good chance that every line in the output of \"git\ngrep kmem_cache_destroy linux/ | grep \u0027\\-\u003e\u0027\" has a similar scenario.\n\nThis patch attempts to rectify this issue by sending an IPI to flush the\nper cpu objects back to the free lists only to CPUs that seem to have such\nobjects.\n\nThe check which CPU to IPI is racy but we don\u0027t care since asking a CPU\nwithout per cpu objects to flush does no damage and as far as I can tell\nthe flush_all by itself is racy against allocs on remote CPUs anyway, so\nif you required the flush_all to be determinstic, you had to arrange for\nlocking regardless.\n\nWithout this patch the following artificial test case:\n\n$ cd /sys/kernel/slab\n$ for DIR in *; do cat $DIR/alloc_calls \u003e /dev/null; done\n\nproduces 166 IPIs on an cpuset isolated CPU. With it it produces none.\n\nThe code path of memory allocation failure for CPUMASK_OFFSTACK\u003dy\nconfig was tested using fault injection framework.\n\nSigned-off-by: Gilad Ben-Yossef \u003cgilad@benyossef.com\u003e\nAcked-by: Christoph Lameter \u003ccl@linux.com\u003e\nCc: Chris Metcalf \u003ccmetcalf@tilera.com\u003e\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Russell King \u003clinux@arm.linux.org.uk\u003e\nCc: Pekka Enberg \u003cpenberg@kernel.org\u003e\nCc: Matt Mackall \u003cmpm@selenic.com\u003e\nCc: Sasha Levin \u003clevinsasha928@gmail.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Alexander Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Avi Kivity \u003cavi@redhat.com\u003e\nCc: Michal Nazarewicz \u003cmina86@mina86.org\u003e\nCc: Kosaki Motohiro \u003ckosaki.motohiro@gmail.com\u003e\nCc: Milton Miller \u003cmiltonm@bga.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0c9aac08261512d70d7d4817bd222abca8b6bdd6",
      "tree": "41bbfed632bfc6233eac3e936cfdce75c5bd3a8f",
      "parents": [
        "ed0bb8ea059764c3fc882fb135473afd347335e9",
        "8bdec192b40cf7f7eec170b317c76089eb5eeddb"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 28 15:04:26 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 28 15:04:26 2012 -0700"
      },
      "message": "Merge branch \u0027slab/for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/linux\n\nPull SLAB changes from Pekka Enberg:\n \"There\u0027s the new kmalloc_array() API, minor fixes and performance\n  improvements, but quite honestly, nothing terribly exciting.\"\n\n* \u0027slab/for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/linux:\n  mm: SLAB Out-of-memory diagnostics\n  slab: introduce kmalloc_array()\n  slub: per cpu partial statistics change\n  slub: include include for prefetch\n  slub: Do not hold slub_lock when calling sysfs_slab_add()\n  slub: prefetch next freelist pointer in slab_alloc()\n  slab, cleanup: remove unneeded return\n"
    },
    {
      "commit": "cc9a6c8776615f9c194ccf0b63a0aa5628235545",
      "tree": "0cbbf118e86541f8eb2fc7b717a0e08eaced986d",
      "parents": [
        "e845e199362cc5712ba0e7eedc14eed70e144258"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mgorman@suse.de",
        "time": "Wed Mar 21 16:34:11 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:54:59 2012 -0700"
      },
      "message": "cpuset: mm: reduce large amounts of memory barrier related damage v3\n\nCommit c0ff7453bb5c (\"cpuset,mm: fix no node to alloc memory when\nchanging cpuset\u0027s mems\") wins a super prize for the largest number of\nmemory barriers entered into fast paths for one commit.\n\n[get|put]_mems_allowed is incredibly heavy with pairs of full memory\nbarriers inserted into a number of hot paths.  This was detected while\ninvestigating at large page allocator slowdown introduced some time\nafter 2.6.32.  The largest portion of this overhead was shown by\noprofile to be at an mfence introduced by this commit into the page\nallocator hot path.\n\nFor extra style points, the commit introduced the use of yield() in an\nimplementation of what looks like a spinning mutex.\n\nThis patch replaces the full memory barriers on both read and write\nsides with a sequence counter with just read barriers on the fast path\nside.  This is much cheaper on some architectures, including x86.  The\nmain bulk of the patch is the retry logic if the nodemask changes in a\nmanner that can cause a false failure.\n\nWhile updating the nodemask, a check is made to see if a false failure\nis a risk.  If it is, the sequence number gets bumped and parallel\nallocators will briefly stall while the nodemask update takes place.\n\nIn a page fault test microbenchmark, oprofile samples from\n__alloc_pages_nodemask went from 4.53% of all samples to 1.15%.  The\nactual results were\n\n                             3.3.0-rc3          3.3.0-rc3\n                             rc3-vanilla        nobarrier-v2r1\n    Clients   1 UserTime       0.07 (  0.00%)   0.08 (-14.19%)\n    Clients   2 UserTime       0.07 (  0.00%)   0.07 (  2.72%)\n    Clients   4 UserTime       0.08 (  0.00%)   0.07 (  3.29%)\n    Clients   1 SysTime        0.70 (  0.00%)   0.65 (  6.65%)\n    Clients   2 SysTime        0.85 (  0.00%)   0.82 (  3.65%)\n    Clients   4 SysTime        1.41 (  0.00%)   1.41 (  0.32%)\n    Clients   1 WallTime       0.77 (  0.00%)   0.74 (  4.19%)\n    Clients   2 WallTime       0.47 (  0.00%)   0.45 (  3.73%)\n    Clients   4 WallTime       0.38 (  0.00%)   0.37 (  1.58%)\n    Clients   1 Flt/sec/cpu  497620.28 (  0.00%) 520294.53 (  4.56%)\n    Clients   2 Flt/sec/cpu  414639.05 (  0.00%) 429882.01 (  3.68%)\n    Clients   4 Flt/sec/cpu  257959.16 (  0.00%) 258761.48 (  0.31%)\n    Clients   1 Flt/sec      495161.39 (  0.00%) 517292.87 (  4.47%)\n    Clients   2 Flt/sec      820325.95 (  0.00%) 850289.77 (  3.65%)\n    Clients   4 Flt/sec      1020068.93 (  0.00%) 1022674.06 (  0.26%)\n    MMTests Statistics: duration\n    Sys Time Running Test (seconds)             135.68    132.17\n    User+Sys Time Running Test (seconds)         164.2    160.13\n    Total Elapsed Time (seconds)                123.46    120.87\n\nThe overall improvement is small but the System CPU time is much\nimproved and roughly in correlation to what oprofile reported (these\nperformance figures are without profiling so skew is expected).  The\nactual number of page faults is noticeably improved.\n\nFor benchmarks like kernel builds, the overall benefit is marginal but\nthe system CPU time is slightly reduced.\n\nTo test the actual bug the commit fixed I opened two terminals.  The\nfirst ran within a cpuset and continually ran a small program that\nfaulted 100M of anonymous data.  In a second window, the nodemask of the\ncpuset was continually randomised in a loop.\n\nWithout the commit, the program would fail every so often (usually\nwithin 10 seconds) and obviously with the commit everything worked fine.\nWith this patch applied, it also worked fine so the fix should be\nfunctionally equivalent.\n\nSigned-off-by: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8028dcea8abbbd51b5156e40ea214c20b559cd01",
      "tree": "b4f60cce7da33fa2942262043a3834724c07405b",
      "parents": [
        "4de900b4d6b2216b7443d32e263f5de9078697a3"
      ],
      "author": {
        "name": "Alex Shi",
        "email": "alex.shi@intel.com",
        "time": "Fri Feb 03 23:34:56 2012 +0800"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Sat Feb 18 11:00:09 2012 +0200"
      },
      "message": "slub: per cpu partial statistics change\n\nThis patch split the cpu_partial_free into 2 parts: cpu_partial_node, PCP refilling\ntimes from node partial; and same name cpu_partial_free, PCP refilling times in\nslab_free slow path. A new statistic \u0027cpu_partial_drain\u0027 is added to get PCP\ndrain to node partial times. These info are useful when do PCP tunning.\n\nThe slabinfo.c code is unchanged, since cpu_partial_node is not on slow path.\n\nSigned-off-by: Alex Shi \u003calex.shi@intel.com\u003e\nAcked-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "4de900b4d6b2216b7443d32e263f5de9078697a3",
      "tree": "f40db4068534208918ee53fb63bf13c5bd747af8",
      "parents": [
        "66c4c35c6bc5a1a452b024cf0364635b28fd94e4"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux.com",
        "time": "Mon Jan 30 15:53:51 2012 -0600"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Fri Feb 10 14:47:39 2012 +0200"
      },
      "message": "slub: include include for prefetch\n\nOtherwise m68k breaks:\n\nOn Mon, 30 Jan 2012, Geert Uytterhoeven wrote:\n\u003e m68k/allmodconfig at http://kisskb.ellerman.id.au/kisskb/buildresult/5527349/\n\u003e\n\u003e mm/slub.c:274: error: implicit declaration of function \u0027prefetch\u0027\n\u003e\n\u003e Sorry, didn\u0027t notice it earlier due to other build breakage in -next.\n\nReported-by: Geert Uytterhoeven \u003cgeert@linux-m68k.org\u003e\nAcked-by: Geert Uytterhoeven \u003cgeert@linux-m68k.org\u003e\nSigned-off-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "66c4c35c6bc5a1a452b024cf0364635b28fd94e4",
      "tree": "75fa5528d28fdedde489e4d9ebc4a961aeecd6f0",
      "parents": [
        "0ad9500e16fe24aa55809a2b00e0d2d0e658fc71"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux.com",
        "time": "Tue Jan 17 09:27:31 2012 -0600"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Mon Feb 06 12:24:13 2012 +0200"
      },
      "message": "slub: Do not hold slub_lock when calling sysfs_slab_add()\n\nsysfs_slab_add() calls various sysfs functions that actually may\nend up in userspace doing all sorts of things.\n\nRelease the slub_lock after adding the kmem_cache structure to the list.\nAt that point the address of the kmem_cache is not known so we are\nguaranteed exlusive access to the following modifications to the\nkmem_cache structure.\n\nIf the sysfs_slab_add fails then reacquire the slub_lock to\nremove the kmem_cache structure from the list.\n\nCc: \u003cstable@vger.kernel.org\u003e\t# 3.3+\nReported-by: Sasha Levin \u003clevinsasha928@gmail.com\u003e\nAcked-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "0ad9500e16fe24aa55809a2b00e0d2d0e658fc71",
      "tree": "a448d51a669d475296c36893b0078a9d553c5b65",
      "parents": [
        "42c8c99cd891184bf4bcf6f09d62c54e42599453"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Fri Dec 16 16:25:34 2011 +0100"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Tue Jan 24 21:53:57 2012 +0200"
      },
      "message": "slub: prefetch next freelist pointer in slab_alloc()\n\nRecycling a page is a problem, since freelist link chain is hot on\ncpu(s) which freed objects, and possibly very cold on cpu currently\nowning slab.\n\nAdding a prefetch of cache line containing the pointer to next object in\nslab_alloc() helps a lot in many workloads, in particular on assymetric\nones (allocations done on one cpu, frees on another cpus). Added cost is\nthree machine instructions only.\n\nExamples on my dual socket quad core ht machine (Intel CPU E5540\n@2.53GHz) (16 logical cpus, 2 memory nodes), 64bit kernel.\n\nBefore patch :\n\n# perf stat -r 32 hackbench 50 process 4000 \u003e/dev/null\n\n Performance counter stats for \u0027hackbench 50 process 4000\u0027 (32 runs):\n\n     327577,471718 task-clock                #   15,821 CPUs utilized            ( +-  0,64% )\n        28 866 491 context-switches          #    0,088 M/sec                    ( +-  1,80% )\n         1 506 929 CPU-migrations            #    0,005 M/sec                    ( +-  3,24% )\n           127 151 page-faults               #    0,000 M/sec                    ( +-  0,16% )\n   829 399 813 448 cycles                    #    2,532 GHz                      ( +-  0,64% )\n   580 664 691 740 stalled-cycles-frontend   #   70,01% frontend cycles idle     ( +-  0,71% )\n   197 431 700 448 stalled-cycles-backend    #   23,80% backend  cycles idle     ( +-  1,03% )\n   503 548 648 975 instructions              #    0,61  insns per cycle\n                                             #    1,15  stalled cycles per insn  ( +-  0,46% )\n    95 780 068 471 branches                  #  292,389 M/sec                    ( +-  0,48% )\n     1 426 407 916 branch-misses             #    1,49% of all branches          ( +-  1,35% )\n\n      20,705679994 seconds time elapsed                                          ( +-  0,64% )\n\nAfter patch :\n\n# perf stat -r 32 hackbench 50 process 4000 \u003e/dev/null\n\n Performance counter stats for \u0027hackbench 50 process 4000\u0027 (32 runs):\n\n     286236,542804 task-clock                #   15,786 CPUs utilized            ( +-  1,32% )\n        19 703 372 context-switches          #    0,069 M/sec                    ( +-  4,99% )\n         1 658 249 CPU-migrations            #    0,006 M/sec                    ( +-  6,62% )\n           126 776 page-faults               #    0,000 M/sec                    ( +-  0,12% )\n   724 636 593 213 cycles                    #    2,532 GHz                      ( +-  1,32% )\n   499 320 714 837 stalled-cycles-frontend   #   68,91% frontend cycles idle     ( +-  1,47% )\n   156 555 126 809 stalled-cycles-backend    #   21,60% backend  cycles idle     ( +-  2,22% )\n   463 897 792 661 instructions              #    0,64  insns per cycle\n                                             #    1,08  stalled cycles per insn  ( +-  0,94% )\n    87 717 352 563 branches                  #  306,451 M/sec                    ( +-  0,99% )\n       941 738 280 branch-misses             #    1,07% of all branches          ( +-  3,35% )\n\n      18,132070670 seconds time elapsed                                          ( +-  1,30% )\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nAcked-by: Christoph Lameter \u003ccl@linux.com\u003e\nCC: Matt Mackall \u003cmpm@selenic.com\u003e\nCC: David Rientjes \u003crientjes@google.com\u003e\nCC: \"Alex,Shi\" \u003calex.shi@intel.com\u003e\nCC: Shaohua Li \u003cshaohua.li@intel.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "2565409fc0303f3ab8d66b8326702a687962a29b",
      "tree": "b57f238d77ee87a991371a7021462b8c71351659",
      "parents": [
        "4156153c4daddf12dd386016f96a947a01e93bf4"
      ],
      "author": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Thu Jan 12 17:17:33 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 12 20:13:03 2012 -0800"
      },
      "message": "mm,x86,um: move CMPXCHG_DOUBLE config option\n\nMove CMPXCHG_DOUBLE and rename it to HAVE_CMPXCHG_DOUBLE so architectures\ncan simply select the option if it is supported.\n\nSigned-off-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nAcked-by: Christoph Lameter \u003ccl@linux.com\u003e\nCc: Pekka Enberg \u003cpenberg@kernel.org\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: \"H. Peter Anvin\" \u003chpa@zytor.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "43570fd2f47ba518145e9289f54cde3dba4c8b25",
      "tree": "67aa61c8b972f4b3af66cd89082222e77e06a4cb",
      "parents": [
        "0d259cf8190b9c446eefd5225ffcc3941e76a432"
      ],
      "author": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Thu Jan 12 17:17:27 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 12 20:13:03 2012 -0800"
      },
      "message": "mm,slub,x86: decouple size of struct page from CONFIG_CMPXCHG_LOCAL\n\nWhile implementing cmpxchg_double() on s390 I realized that we don\u0027t set\nCONFIG_CMPXCHG_LOCAL despite the fact that we have support for it.\n\nHowever setting that option will increase the size of struct page by\neight bytes on 64 bit, which we certainly do not want.  Also, it doesn\u0027t\nmake sense that a present cpu feature should increase the size of struct\npage.\n\nBesides that it looks like the dependency to CMPXCHG_LOCAL is wrong and\nthat it should depend on CMPXCHG_DOUBLE instead.\n\nThis patch:\n\nIf an architecture supports CMPXCHG_LOCAL this shouldn\u0027t result\nautomatically in larger struct pages if the SLUB allocator is used.\nInstead introduce a new config option \"HAVE_ALIGNED_STRUCT_PAGE\" which\ncan be selected if a double word aligned struct page is required.  Also\nupdate x86 Kconfig so that it should work as before.\n\nSigned-off-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nAcked-by: Christoph Lameter \u003ccl@linux.com\u003e\nCc: Pekka Enberg \u003cpenberg@kernel.org\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: \"H. Peter Anvin\" \u003chpa@zytor.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6296e5d3c067df41980a5fd09ad4cc6765f79bb9",
      "tree": "ac10bc5321ac1d750612c0e0ae53d6c4097c5734",
      "parents": [
        "c086ae4ed94f9a1d283318e006813268c2dbf9fc",
        "5878cf431ca7233a56819ca6970153ac0b129599"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jan 11 18:52:23 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jan 11 18:52:23 2012 -0800"
      },
      "message": "Merge branch \u0027slab/for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/linux\n\n* \u0027slab/for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/linux:\n  slub: disallow changing cpu_partial from userspace for debug caches\n  slub: add missed accounting\n  slub: Extract get_freelist from __slab_alloc\n  slub: Switch per cpu partial page support off for debugging\n  slub: fix a possible memleak in __slab_alloc()\n  slub: fix slub_max_order Documentation\n  slub: add missed accounting\n  slab: add taint flag outputting to debug paths.\n  slub: add taint flag outputting to debug paths\n  slab: introduce slab_max_order kernel parameter\n  slab: rename slab_break_gfp_order to slab_max_order\n"
    },
    {
      "commit": "5878cf431ca7233a56819ca6970153ac0b129599",
      "tree": "e5d21d04a0b468d2dabbe3a3824f23b5537fc6a7",
      "parents": [
        "74ee4ef1f901fbb014bdcdc9171d126490ce2b62",
        "b13683d1cc14d1dd30b8e20f3ebea3f814ad029f"
      ],
      "author": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Wed Jan 11 21:11:29 2012 +0200"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Wed Jan 11 21:11:29 2012 +0200"
      },
      "message": "Merge branch \u0027slab/urgent\u0027 into slab/for-linus\n"
    },
    {
      "commit": "fc8d8620d39dbbaf412b1b9247d77d196d92adb9",
      "tree": "aab70c3807026701f326bb8a88c81845da059d9b",
      "parents": [
        "c6968e73b90c2a2fb9a32d4bad249f8f70f70125"
      ],
      "author": {
        "name": "Stanislaw Gruszka",
        "email": "sgruszka@redhat.com",
        "time": "Tue Jan 10 15:07:32 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 10 16:30:43 2012 -0800"
      },
      "message": "slub: min order when debug_guardpage_minorder \u003e 0\n\nDisable slub debug facilities and allocate slabs at minimal order when\ndebug_guardpage_minorder \u003e 0 to increase probability to catch random\nmemory corruption by cpu exception.\n\nSigned-off-by: Stanislaw Gruszka \u003csgruszka@redhat.com\u003e\nCc: \"Rafael J. Wysocki\" \u003crjw@sisk.pl\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nAcked-by: Christoph Lameter \u003ccl@linux.com\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Stanislaw Gruszka \u003csgruszka@redhat.com\u003e\nCc: 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": "74ee4ef1f901fbb014bdcdc9171d126490ce2b62",
      "tree": "47f33960c42e4884f56136a61d5dc024895a810e",
      "parents": [
        "213eeb9fd9d66c33109e2ace242df214dc3a653d"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Mon Jan 09 13:19:45 2012 -0800"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Tue Jan 10 21:31:09 2012 +0200"
      },
      "message": "slub: disallow changing cpu_partial from userspace for debug caches\n\nFor caches with debugging enabled, \"slub: Switch per cpu partial page\nsupport off for debugging\" changes cpu_partial to 0.  It shouldn\u0027t be\ntunable from userspace for such caches, otherwise the same accounting\nissues arise during validation.\n\nThis patch disallows tuning /sys/kernel/slab/cache/cpu_partial to be non-\nzero for caches with debugging enabled.\n\nAcked-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "6b3da11b3c36fdafce3a72e0e90d6c4e99e9aad5",
      "tree": "33e64fc453619978c3ecc86c7ec3649db3b4d8dc",
      "parents": [
        "db0c2bf69aa095d4a6de7b1145f29fe9a7c0f6a3",
        "933393f58fef9963eac61db8093689544e29a600"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jan 09 13:08:28 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jan 09 13:08:28 2012 -0800"
      },
      "message": "Merge branch \u0027for-3.3\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu\n\n* \u0027for-3.3\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu:\n  percpu: Remove irqsafe_cpu_xxx variants\n\nFix up conflict in arch/x86/include/asm/percpu.h due to clash with\ncebef5beed3d (\"x86: Fix and improve percpu_cmpxchg{8,16}b_double()\")\nwhich edited the (now removed) irqsafe_cpu_cmpxchg*_double code.\n"
    },
    {
      "commit": "cdcd629869fabcd38ebd24a03b0a05ec1cbcafb0",
      "tree": "461087dd5b3d310a7da25021cb4f58270cbb7177",
      "parents": [
        "adaf4ed2abbd285c93808060924eeec3af483aee"
      ],
      "author": {
        "name": "Jan Beulich",
        "email": "JBeulich@suse.com",
        "time": "Mon Jan 02 17:02:18 2012 +0000"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Jan 04 15:01:54 2012 +0100"
      },
      "message": "x86: Fix and improve cmpxchg_double{,_local}()\n\nJust like the per-CPU ones they had several\nproblems/shortcomings:\n\nOnly the first memory operand was mentioned in the asm()\noperands, and the 2x64-bit version didn\u0027t have a memory clobber\nwhile the 2x32-bit one did. The former allowed the compiler to\nnot recognize the need to re-load the data in case it had it\ncached in some register, while the latter was overly\ndestructive.\n\nThe types of the local copies of the old and new values were\nincorrect (the types of the pointed-to variables should be used\nhere, to make sure the respective old/new variable types are\ncompatible).\n\nThe __dummy/__junk variables were pointless, given that local\ncopies of the inputs already existed (and can hence be used for\ndiscarded outputs).\n\nThe 32-bit variant of cmpxchg_double_local() referenced\ncmpxchg16b_local().\n\nAt once also:\n\n - change the return value type to what it really is: \u0027bool\u0027\n - unify 32- and 64-bit variants\n - abstract out the common part of the \u0027normal\u0027 and \u0027local\u0027 variants\n\nSigned-off-by: Jan Beulich \u003cjbeulich@suse.com\u003e\nCc: Christoph Lameter \u003ccl@linux.com\u003e\nCc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nLink: http://lkml.kernel.org/r/4F01F12A020000780006A19B@nat28.tlf.novell.com\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "933393f58fef9963eac61db8093689544e29a600",
      "tree": "719f8b231499aa4ea023bc1a06db4582df5f0965",
      "parents": [
        "ecefc36b41ac0fe92d76273a23faf27b2da13411"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux.com",
        "time": "Thu Dec 22 11:58:51 2011 -0600"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Dec 22 10:40:20 2011 -0800"
      },
      "message": "percpu: Remove irqsafe_cpu_xxx variants\n\nWe simply say that regular this_cpu use must be safe regardless of\npreemption and interrupt state.  That has no material change for x86\nand s390 implementations of this_cpu operations.  However, arches that\ndo not provide their own implementation for this_cpu operations will\nnow get code generated that disables interrupts instead of preemption.\n\n-tj: This is part of on-going percpu API cleanup.  For detailed\n     discussion of the subject, please refer to the following thread.\n\n     http://thread.gmane.org/gmane.linux.kernel/1222078\n\nSigned-off-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nLKML-Reference: \u003calpine.DEB.2.00.1112221154380.11787@router.home\u003e\n"
    },
    {
      "commit": "b13683d1cc14d1dd30b8e20f3ebea3f814ad029f",
      "tree": "29384daa693218952473ee9a41dab2045926c914",
      "parents": [
        "8f1e33daeda6cd89753f9e77d174805a6f21db09"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Fri Nov 11 14:54:14 2011 +0800"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Tue Dec 13 22:27:09 2011 +0200"
      },
      "message": "slub: add missed accounting\n\nWith per-cpu partial list, slab is added to partial list first and then moved\nto node list. The __slab_free() code path for add/remove_partial is almost\ndeprecated(except for slub debug). But we forget to account add/remove_partial\nwhen move per-cpu partial pages to node list, so the statistics for such events\nare always 0. Add corresponding accounting.\n\nThis is against the patch \"slub: use correct parameter to add a page to\npartial list tail\"\n\nAcked-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "213eeb9fd9d66c33109e2ace242df214dc3a653d",
      "tree": "caaecaf19dd13f10a1704aa6b2a20fa900fb3d85",
      "parents": [
        "73736e0387ba0e6d2b703407b4d26168d31516a7"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux.com",
        "time": "Fri Nov 11 14:07:14 2011 -0600"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Tue Dec 13 22:17:10 2011 +0200"
      },
      "message": "slub: Extract get_freelist from __slab_alloc\n\nget_freelist retrieves free objects from the page freelist (put there by remote\nfrees) or deactivates a slab page if no more objects are available.\n\nAcked-by: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "8f1e33daeda6cd89753f9e77d174805a6f21db09",
      "tree": "46fa0c7c64953ba12e73c30ad31fc1b10b5af785",
      "parents": [
        "dc47ce90c3a822cd7c9e9339fe4d5f61dcb26b50"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux.com",
        "time": "Wed Nov 23 09:24:27 2011 -0600"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Tue Dec 13 22:14:02 2011 +0200"
      },
      "message": "slub: Switch per cpu partial page support off for debugging\n\nEric saw an issue with accounting of slabs during validation. Its not\npossible to determine accurately how many per cpu partial slabs exist at\nany time so this switches off per cpu partial pages during debug.\n\nAcked-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "73736e0387ba0e6d2b703407b4d26168d31516a7",
      "tree": "448f2d85f82462096d55c93f15cea9876665faaa",
      "parents": [
        "25f4379b8c79066c4be0e5995f37f5265733b801"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Tue Dec 13 04:57:06 2011 +0100"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Tue Dec 13 22:11:21 2011 +0200"
      },
      "message": "slub: fix a possible memleak in __slab_alloc()\n\nZhihua Che reported a possible memleak in slub allocator on\nCONFIG_PREEMPT\u003dy builds.\n\nIt is possible current thread migrates right before disabling irqs in\n__slab_alloc(). We must check again c-\u003efreelist, and perform a normal\nallocation instead of scratching c-\u003efreelist.\n\nMany thanks to Zhihua Che for spotting this bug, introduced in 2.6.39\n\nV2: Its also possible an IRQ freed one (or several) object(s) and\npopulated c-\u003efreelist, so its not a CONFIG_PREEMPT only problem.\n\nCc: \u003cstable@vger.kernel.org\u003e        [2.6.39+]\nReported-by: Zhihua Che \u003czhihua.che@gmail.com\u003e\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nAcked-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "4c493a5a5c0bab6c434af2723328edd79c49aa0c",
      "tree": "184c48e7c1759127de931d903bdbbdcc786acac6",
      "parents": [
        "42616cacf8bf898b1bc734b88a76cbaadffb8eb7"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Fri Nov 11 14:54:14 2011 +0800"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Sun Nov 27 22:08:15 2011 +0200"
      },
      "message": "slub: add missed accounting\n\nWith per-cpu partial list, slab is added to partial list first and then moved\nto node list. The __slab_free() code path for add/remove_partial is almost\ndeprecated(except for slub debug). But we forget to account add/remove_partial\nwhen move per-cpu partial pages to node list, so the statistics for such events\nare always 0. Add corresponding accounting.\n\nThis is against the patch \"slub: use correct parameter to add a page to\npartial list tail\"\n\nAcked-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "42616cacf8bf898b1bc734b88a76cbaadffb8eb7",
      "tree": "77c28c7d6013d0b3353b42f7523f5958a1e5be42",
      "parents": [
        "face37f5e615646f364fa848f0a5c9d361d7a46e",
        "bc6697d8a506dedf09e8e9974ffa3a316183e608"
      ],
      "author": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Sun Nov 27 22:08:03 2011 +0200"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Sun Nov 27 22:08:03 2011 +0200"
      },
      "message": "Merge branch \u0027slab/urgent\u0027 into slab/next\n"
    },
    {
      "commit": "bc6697d8a506dedf09e8e9974ffa3a316183e608",
      "tree": "b54d3d45349fb8a00ce8a086da55a1ebf3394646",
      "parents": [
        "42d623a8cd08eb93ab221d22cee5a62618895bbf"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Tue Nov 22 16:02:02 2011 +0100"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Thu Nov 24 08:44:19 2011 +0200"
      },
      "message": "slub: avoid potential NULL dereference or corruption\n\nshow_slab_objects() can trigger NULL dereferences or memory corruption.\n\nAnother cpu can change its c-\u003epage to NULL or c-\u003enode to NUMA_NO_NODE\nwhile we use them.\n\nUse ACCESS_ONCE(c-\u003epage) and ACCESS_ONCE(c-\u003enode) to make sure this\ncannot happen.\n\nAcked-by: Christoph Lameter \u003ccl@linux.com\u003e\nAcked-by: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "42d623a8cd08eb93ab221d22cee5a62618895bbf",
      "tree": "c2bc80e3b59253f3d4c9e81e608ba59d15a5bf0e",
      "parents": [
        "9ada19342b2441f290f0043ed7c562682c8c4ede"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux.com",
        "time": "Wed Nov 23 09:14:38 2011 -0600"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Thu Nov 24 08:44:14 2011 +0200"
      },
      "message": "slub: use irqsafe_cpu_cmpxchg for put_cpu_partial\n\nThe cmpxchg must be irq safe. The fallback for this_cpu_cmpxchg only\ndisables preemption which results in per cpu partial page operation\npotentially failing on non x86 platforms.\n\nThis patch fixes the following problem reported by Christian Kujau:\n\n  I seem to hit it with heavy disk \u0026 cpu IO is in progress on this\n  PowerBook\n  G4. Full dmesg \u0026 .config: http://nerdbynature.de/bits/3.2.0-rc1/oops/\n\n  I\u0027ve enabled some debug options and now it really points to slub.c:2166\n\n    http://nerdbynature.de/bits/3.2.0-rc1/oops/oops4m.jpg\n\n  With debug options enabled I\u0027m currently in the xmon debugger, not sure\n  what to make of it yet, I\u0027ll try to get something useful out of it :)\n\nReported-by: Christian Kujau \u003clists@nerdbynature.de\u003e\nTested-by: Christian Kujau \u003clists@nerdbynature.de\u003e\nAcked-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nAcked-by: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "265d47e7115023df9e2b7a864b207b4738d9e18c",
      "tree": "cb696cbbb7eceb99315a72e56abd9cd3ba2964a6",
      "parents": [
        "3df1cccdfb3fab6aa9176beb655d802eb384eabc"
      ],
      "author": {
        "name": "Dave Jones",
        "email": "davej@redhat.com",
        "time": "Tue Nov 15 15:04:00 2011 -0800"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Wed Nov 16 21:14:40 2011 +0200"
      },
      "message": "slub: add taint flag outputting to debug paths\n\nWhen we get corruption reports, it\u0027s useful to see if the kernel was\ntainted, to rule out problems we can\u0027t do anything about.\n\nSigned-off-by: Dave Jones \u003cdavej@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "9ada19342b2441f290f0043ed7c562682c8c4ede",
      "tree": "702599b3b616d4bce7415012d8d4d18c7c43e5ec",
      "parents": [
        "f64ae042d94d376b54e7a343d93c48561e9d2e16"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Mon Nov 14 13:34:13 2011 +0800"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Tue Nov 15 20:41:00 2011 +0200"
      },
      "message": "slub: move discard_slab out of node lock\n\nLockdep reports there is potential deadlock for slub node list_lock.\ndiscard_slab() is called with the lock hold in unfreeze_partials(),\nwhich could trigger a slab allocation, which could hold the lock again.\n\ndiscard_slab() doesn\u0027t need hold the lock actually, if the slab is\nalready removed from partial list.\n\nAcked-by: Christoph Lameter \u003ccl@linux.com\u003e\nReported-and-tested-by: Yong Zhang \u003cyong.zhang0@gmail.com\u003e\nReported-and-tested-by: Julie Sullivan \u003ckernelmail.jms@gmail.com\u003e\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "f64ae042d94d376b54e7a343d93c48561e9d2e16",
      "tree": "da4a9c1b06e5e1234cad1f2b7ae6dc3c372b26cc",
      "parents": [
        "1ea6b8f48918282bdca0b32a34095504ee65bab5"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Fri Nov 11 08:33:48 2011 +0800"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Tue Nov 15 20:37:15 2011 +0200"
      },
      "message": "slub: use correct parameter to add a page to partial list tail\n\nunfreeze_partials() needs add the page to partial list tail, since such page\nhasn\u0027t too many free objects. We now explictly use DEACTIVATE_TO_TAIL for this,\nwhile DEACTIVATE_TO_TAIL !\u003d 1. This will cause performance regression (eg, more\nlock contention in node-\u003elist_lock) without below fix.\n\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nAcked-by: Christoph Lameter \u003ccl@linux.com\u003e\nAcked-by: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "798248206b59acc6e1238c778281419c041891a7",
      "tree": "ff8564431367b442b18bca4a0a9732e5799e2391",
      "parents": [
        "77311139f364d7f71fc9ba88f59fd90e60205007"
      ],
      "author": {
        "name": "Akinobu Mita",
        "email": "akinobu.mita@gmail.com",
        "time": "Mon Oct 31 17:08:07 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:47 2011 -0700"
      },
      "message": "lib/string.c: introduce memchr_inv()\n\nmemchr_inv() is mainly used to check whether the whole buffer is filled\nwith just a specified byte.\n\nThe function name and prototype are stolen from logfs and the\nimplementation is from SLUB.\n\nSigned-off-by: Akinobu Mita \u003cakinobu.mita@gmail.com\u003e\nAcked-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nAcked-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\nCc: Matt Mackall \u003cmpm@selenic.com\u003e\nAcked-by: Joern Engel \u003cjoern@logfs.org\u003e\nCc: Marcin Slusarz \u003cmarcin.slusarz@gmail.com\u003e\nCc: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e182a345d40deba7c3165a2857812bf403818319",
      "tree": "01cace799491cbb6bea19c10de971fd3a84d9868",
      "parents": [
        "3cfef9524677a4ecb392d6fbffe6ebce6302f1d4",
        "fe353178653b15add8626f5474842601be160281",
        "dcc3be6a548a1e51adaab3be6d9dfbb68bc0e3a0"
      ],
      "author": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Wed Oct 26 18:09:12 2011 +0300"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Wed Oct 26 18:09:12 2011 +0300"
      },
      "message": "Merge branches \u0027slab/next\u0027 and \u0027slub/partial\u0027 into slab/for-linus\n"
    },
    {
      "commit": "dcc3be6a548a1e51adaab3be6d9dfbb68bc0e3a0",
      "tree": "afe8ced0d1944ed1a33db168eae6686bd6d038bb",
      "parents": [
        "9f26490412cf15b04ac8f44a512ba0b09e774576"
      ],
      "author": {
        "name": "Alex Shi",
        "email": "alex.shi@intel.com",
        "time": "Tue Sep 06 14:46:01 2011 +0800"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Tue Sep 27 23:03:31 2011 +0300"
      },
      "message": "slub: Discard slab page when node partial \u003e minimum partial number\n\nDiscarding slab should be done when node partial \u003e min_partial.  Otherwise,\nnode partial slab may eat up all memory.\n\nSigned-off-by: Alex Shi \u003calex.shi@intel.com\u003e\nAcked-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "9f26490412cf15b04ac8f44a512ba0b09e774576",
      "tree": "56bc5068f353fb16a1038ffc0fdaaef54d7fd7c8",
      "parents": [
        "12d79634f8d7af5229b7d21143d50e7cf7d94177"
      ],
      "author": {
        "name": "Alex Shi",
        "email": "alex.shi@intel.com",
        "time": "Thu Sep 01 11:32:18 2011 +0800"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Tue Sep 27 23:03:30 2011 +0300"
      },
      "message": "slub: correct comments error for per cpu partial\n\nCorrect comment errors, that mistake cpu partial objects number as pages\nnumber, may make reader misunderstand.\n\nSigned-off-by: Alex Shi \u003calex.shi@intel.com\u003e\nReviewed-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "ab067e99d22ec78ff646de1283348729d1aa66d4",
      "tree": "813af760ebc66398cb17cfe8652ae8e851eddbfd",
      "parents": [
        "d20bbfab01802e195a50435940f7e4aa747c217c"
      ],
      "author": {
        "name": "Vasiliy Kulikov",
        "email": "segoon@openwall.com",
        "time": "Tue Sep 27 21:54:53 2011 +0400"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Tue Sep 27 22:59:27 2011 +0300"
      },
      "message": "mm: restrict access to slab files under procfs and sysfs\n\nHistorically /proc/slabinfo and files under /sys/kernel/slab/* have\nworld read permissions and are accessible to the world.  slabinfo\ncontains rather private information related both to the kernel and\nuserspace tasks.  Depending on the situation, it might reveal either\nprivate information per se or information useful to make another\ntargeted attack.  Some examples of what can be learned by\nreading/watching for /proc/slabinfo entries:\n\n1) dentry (and different *inode*) number might reveal other processes fs\nactivity.  The number of dentry \"active objects\" doesn\u0027t strictly show\nfile count opened/touched by a process, however, there is a good\ncorrelation between them.  The patch \"proc: force dcache drop on\nunauthorized access\" relies on the privacy of dentry count.\n\n2) different inode entries might reveal the same information as (1), but\nthese are more fine granted counters.  If a filesystem is mounted in a\nprivate mount point (or even a private namespace) and fs type differs from\nother mounted fs types, fs activity in this mount point/namespace is\nrevealed.  If there is a single ecryptfs mount point, the whole fs\nactivity of a single user is revealed.  Number of files in ecryptfs\nmount point is a private information per se.\n\n3) fuse_* reveals number of files / fs activity of a user in a user\nprivate mount point.  It is approx. the same severity as ecryptfs\ninfoleak in (2).\n\n4) sysfs_dir_cache similar to (2) reveals devices\u0027 addition/removal,\nwhich can be otherwise hidden by \"chmod 0700 /sys/\".  With 0444 slabinfo\nthe precise number of sysfs files is known to the world.\n\n5) buffer_head might reveal some kernel activity.  With other\ninformation leaks an attacker might identify what specific kernel\nroutines generate buffer_head activity.\n\n6) *kmalloc* infoleaks are very situational.  Attacker should watch for\nthe specific kmalloc size entry and filter the noise related to the unrelated\nkernel activity.  If an attacker has relatively silent victim system, he\nmight get rather precise counters.\n\nAdditional information sources might significantly increase the slabinfo\ninfoleak benefits.  E.g. if an attacker knows that the processes\nactivity on the system is very low (only core daemons like syslog and\ncron), he may run setxid binaries / trigger local daemon activity /\ntrigger network services activity / await sporadic cron jobs activity\n/ etc. and get rather precise counters for fs and network activity of\nthese privileged tasks, which is unknown otherwise.\n\nAlso hiding slabinfo and /sys/kernel/slab/* is a one step to complicate\nexploitation of kernel heap overflows (and possibly, other bugs).  The\nrelated discussion:\n\nhttp://thread.gmane.org/gmane.linux.kernel/1108378\n\nTo keep compatibility with old permission model where non-root\nmonitoring daemon could watch for kernel memleaks though slabinfo one\nshould do:\n\n    groupadd slabinfo\n    usermod -a -G slabinfo $MONITOR_USER\n\nAnd add the following commands to init scripts (to mountall.conf in\nUbuntu\u0027s upstart case):\n\n    chmod g+r /proc/slabinfo /sys/kernel/slab/*/*\n    chgrp slabinfo /proc/slabinfo /sys/kernel/slab/*/*\n\nSigned-off-by: Vasiliy Kulikov \u003csegoon@openwall.com\u003e\nReviewed-by: Kees Cook \u003ckees@ubuntu.com\u003e\nReviewed-by: Dave Hansen \u003cdave@linux.vnet.ibm.com\u003e\nAcked-by: Christoph Lameter \u003ccl@gentwo.org\u003e\nAcked-by: David Rientjes \u003crientjes@google.com\u003e\nCC: Valdis.Kletnieks@vt.edu\nCC: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nCC: Alan Cox \u003calan@linux.intel.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "d20bbfab01802e195a50435940f7e4aa747c217c",
      "tree": "82b0007e33c083050a4e60a49dbb2f5477b4c99d",
      "parents": [
        "a37933c37c14b64e81c7c9cc44a5d3f5e0c91412",
        "136333d104bd3a62d783b0ac3d0f32ac0108c5d0"
      ],
      "author": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Mon Sep 19 17:46:07 2011 +0300"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Mon Sep 19 17:46:07 2011 +0300"
      },
      "message": "Merge branch \u0027slab/urgent\u0027 into slab/next\n"
    },
    {
      "commit": "12d79634f8d7af5229b7d21143d50e7cf7d94177",
      "tree": "06096e3fdcc4c7fe84b9111d2f6274514bfb72b0",
      "parents": [
        "aca726a07a71ff7aedc0e90a91f80a2701adcca5"
      ],
      "author": {
        "name": "Alex,Shi",
        "email": "alex.shi@intel.com",
        "time": "Wed Sep 07 10:26:36 2011 +0800"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Tue Sep 13 20:41:25 2011 +0300"
      },
      "message": "slub: Code optimization in get_partial_node()\n\nI find a way to reduce a variable in get_partial_node(). That is also helpful\nfor code understanding.\n\nAcked-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Alex Shi \u003calex.shi@intel.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "136333d104bd3a62d783b0ac3d0f32ac0108c5d0",
      "tree": "dbac3ee89362a3707823bbd1185ad0423cb153de",
      "parents": [
        "130655ef097940b627e8e04fa7c6f3b51cf24f85"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Wed Aug 24 08:57:52 2011 +0800"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Sat Aug 27 11:59:00 2011 +0300"
      },
      "message": "slub: explicitly document position of inserting slab to partial list\n\nAdding slab to partial list head/tail is sensitive to performance.\nSo explicitly uses DEACTIVATE_TO_TAIL/DEACTIVATE_TO_HEAD to document\nit to avoid we get it wrong.\n\nAcked-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Shaohua Li \u003cshli@kernel.org\u003e\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "130655ef097940b627e8e04fa7c6f3b51cf24f85",
      "tree": "c5b968196fe7f7ffcbe9def5dc70dc413a318dbd",
      "parents": [
        "81107188f123e3c2217ac2f2feb2a1147904c62f"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Tue Aug 23 08:36:59 2011 +0800"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Sat Aug 27 11:58:59 2011 +0300"
      },
      "message": "slub: add slab with one free object to partial list tail\n\nThe slab has just one free object, adding it to partial list head doesn\u0027t make\nsense. And it can cause lock contentation. For example,\n1. CPU takes the slab from partial list\n2. fetch an object\n3. switch to another slab\n4. free an object, then the slab is added to partial list again\nIn this way n-\u003elist_lock will be heavily contended.\nIn fact, Alex had a hackbench regression. 3.1-rc1 performance drops about 70%\nagainst 3.0. This patch fixes it.\n\nAcked-by: Christoph Lameter \u003ccl@linux.com\u003e\nReported-by: Alex Shi \u003calex.shi@intel.com\u003e\nSigned-off-by: Shaohua Li \u003cshli@kernel.org\u003e\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "49e2258586b423684f03c278149ab46d8f8b6700",
      "tree": "d4404d1b09d6fe505da29a32602d193c4ef56ac9",
      "parents": [
        "497b66f2ecc97844493e6a147fd5a7e73f73f408"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux.com",
        "time": "Tue Aug 09 16:12:27 2011 -0500"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Fri Aug 19 19:34:27 2011 +0300"
      },
      "message": "slub: per cpu cache for partial pages\n\nAllow filling out the rest of the kmem_cache_cpu cacheline with pointers to\npartial pages. The partial page list is used in slab_free() to avoid\nper node lock taking.\n\nIn __slab_alloc() we can then take multiple partial pages off the per\nnode partial list in one go reducing node lock pressure.\n\nWe can also use the per cpu partial list in slab_alloc() to avoid scanning\npartial lists for pages with free objects.\n\nThe main effect of a per cpu partial list is that the per node list_lock\nis taken for batches of partial pages instead of individual ones.\n\nPotential future enhancements:\n\n1. The pickup from the partial list could be perhaps be done without disabling\n   interrupts with some work. The free path already puts the page into the\n   per cpu partial list without disabling interrupts.\n\n2. __slab_free() may have some code paths that could use optimization.\n\nPerformance:\n\n\t\t\t\tBefore\t\tAfter\n./hackbench 100 process 200000\n\t\t\t\tTime: 1953.047\t1564.614\n./hackbench 100 process 20000\n\t\t\t\tTime: 207.176   156.940\n./hackbench 100 process 20000\n\t\t\t\tTime: 204.468\t156.940\n./hackbench 100 process 20000\n\t\t\t\tTime: 204.879\t158.772\n./hackbench 10 process 20000\n\t\t\t\tTime: 20.153\t15.853\n./hackbench 10 process 20000\n\t\t\t\tTime: 20.153\t15.986\n./hackbench 10 process 20000\n\t\t\t\tTime: 19.363\t16.111\n./hackbench 1 process 20000\n\t\t\t\tTime: 2.518\t2.307\n./hackbench 1 process 20000\n\t\t\t\tTime: 2.258\t2.339\n./hackbench 1 process 20000\n\t\t\t\tTime: 2.864\t2.163\n\nSigned-off-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "497b66f2ecc97844493e6a147fd5a7e73f73f408",
      "tree": "6005da56ead66fca5fb413193bc52ad72a743b7c",
      "parents": [
        "acd19fd1a7b5152cf29f67aaab23aa61078aaa74"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux.com",
        "time": "Tue Aug 09 16:12:26 2011 -0500"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Fri Aug 19 19:34:27 2011 +0300"
      },
      "message": "slub: return object pointer from get_partial() / new_slab().\n\nThere is no need anymore to return the pointer to a slab page from get_partial()\nsince the page reference can be stored in the kmem_cache_cpu structures \"page\" field.\n\nReturn an object pointer instead.\n\nThat in turn allows a simplification of the spaghetti code in __slab_alloc().\n\nSigned-off-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "acd19fd1a7b5152cf29f67aaab23aa61078aaa74",
      "tree": "8695f48ccaa1baa3bc26df2d7b1b0648dd82078b",
      "parents": [
        "e6e82ea1127d899af7eee876f1c1103716d13772"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux.com",
        "time": "Tue Aug 09 16:12:25 2011 -0500"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Fri Aug 19 19:34:26 2011 +0300"
      },
      "message": "slub: pass kmem_cache_cpu pointer to get_partial()\n\nPass the kmem_cache_cpu pointer to get_partial(). That way\nwe can avoid the this_cpu_write() statements.\n\nSigned-off-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "e6e82ea1127d899af7eee876f1c1103716d13772",
      "tree": "76325c985e7265dd5dff9b37b785fa17b7630b03",
      "parents": [
        "7db0d7054048da140798d8bfdd7fff5f74f85abf"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux.com",
        "time": "Tue Aug 09 16:12:24 2011 -0500"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Fri Aug 19 19:34:26 2011 +0300"
      },
      "message": "slub: Prepare inuse field in new_slab()\n\ninuse will always be set to page-\u003eobjects. There is no point in\ninitializing the field to zero in new_slab() and then overwriting\nthe value in __slab_alloc().\n\nSigned-off-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "7db0d7054048da140798d8bfdd7fff5f74f85abf",
      "tree": "e23816d3d5a6c25ec1037989ce4857e96440a0fa",
      "parents": [
        "69cb8e6b7c2982e015d2b35a34ac2674c79e801c"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux.com",
        "time": "Tue Aug 09 16:12:23 2011 -0500"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Fri Aug 19 19:34:25 2011 +0300"
      },
      "message": "slub: Remove useless statements in __slab_alloc\n\nTwo statements in __slab_alloc() do not have any effect.\n\n1. c-\u003epage is already set to NULL by deactivate_slab() called right before.\n\n2. gfpflags are masked in new_slab() before being passed to the page\n   allocator. There is no need to mask gfpflags in __slab_alloc in particular\n   since most frequent processing in __slab_alloc does not require the use of a\n   gfpmask.\n\nCc: torvalds@linux-foundation.org\nSigned-off-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "69cb8e6b7c2982e015d2b35a34ac2674c79e801c",
      "tree": "37905e4cec71f96f2008e9d13c92cf0b976b3390",
      "parents": [
        "93ee7a9340d64f20295aacc3fb6a22b759323280"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux.com",
        "time": "Tue Aug 09 16:12:22 2011 -0500"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Fri Aug 19 19:34:25 2011 +0300"
      },
      "message": "slub: free slabs without holding locks\n\nThere are two situations in which slub holds a lock while releasing\npages:\n\n\tA. During kmem_cache_shrink()\n\tB. During kmem_cache_close()\n\nFor A build a list while holding the lock and then release the pages\nlater. In case of B we are the last remaining user of the slab so\nthere is no need to take the listlock.\n\nAfter this patch all calls to the page allocator to free pages are\ndone without holding any spinlocks. kmem_cache_destroy() will still\nhold the slub_lock semaphore.\n\nSigned-off-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "81107188f123e3c2217ac2f2feb2a1147904c62f",
      "tree": "53626e529423c12d082cbcc23012de0b39f26e4d",
      "parents": [
        "ef62fb32b7b21731e41aea3c1e08bcdb407c9eb9"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux.com",
        "time": "Tue Aug 09 13:01:32 2011 -0500"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Tue Aug 09 21:12:31 2011 +0300"
      },
      "message": "slub: Fix partial count comparison confusion\n\ndeactivate_slab() has the comparison if more than the minimum number of\npartial pages are in the partial list wrong. An effect of this may be that\nempty pages are not freed from deactivate_slab(). The result could be an\nOOM due to growth of the partial slabs per node. Frees mostly occur from\n__slab_free which is okay so this would only affect use cases where a lot\nof switching around of per cpu slabs occur.\n\nSwitching per cpu slabs occurs with high frequency if debugging options are\nenabled.\n\nReported-and-tested-by: Xiaotian Feng \u003cxtfeng@gmail.com\u003e\nSigned-off-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "ef62fb32b7b21731e41aea3c1e08bcdb407c9eb9",
      "tree": "f508ace02d80e7b80791aff0ada407ae104de7e3",
      "parents": [
        "6fbabb20faed9c08f8b96de4182bd721cbd1cfcf"
      ],
      "author": {
        "name": "Akinobu Mita",
        "email": "akinobu.mita@gmail.com",
        "time": "Sun Aug 07 18:30:38 2011 +0900"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Tue Aug 09 16:37:48 2011 +0300"
      },
      "message": "slub: fix check_bytes() for slub debugging\n\nThe check_bytes() function is used by slub debugging.  It returns a pointer\nto the first unmatching byte for a character in the given memory area.\n\nIf the character for matching byte is greater than 0x80, check_bytes()\ndoesn\u0027t work.  Becuase 64-bit pattern is generated as below.\n\n\tvalue64 \u003d value | value \u003c\u003c 8 | value \u003c\u003c 16 | value \u003c\u003c 24;\n\tvalue64 \u003d value64 | value64 \u003c\u003c 32;\n\nThe integer promotions are performed and sign-extended as the type of value\nis u8.  The upper 32 bits of value64 is 0xffffffff in the first line, and\nthe second line has no effect.\n\nThis fixes the 64-bit pattern generation.\n\nSigned-off-by: Akinobu Mita \u003cakinobu.mita@gmail.com\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Matt Mackall \u003cmpm@selenic.com\u003e\nReviewed-by: Marcin Slusarz \u003cmarcin.slusarz@gmail.com\u003e\nAcked-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "6fbabb20faed9c08f8b96de4182bd721cbd1cfcf",
      "tree": "932af354e7ac134bdf684fedce14f7c7bc94ba42",
      "parents": [
        "322a8b034003c0d46d39af85bf24fee27b902f48"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux.com",
        "time": "Mon Aug 08 11:16:56 2011 -0500"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Tue Aug 09 16:36:02 2011 +0300"
      },
      "message": "slub: Fix full list corruption if debugging is on\n\nWhen a slab is freed by __slab_free() and the slab can only contain a\nsingle object ever then it was full (and therefore not on the partial\nlists but on the full list in the debug case) before we reached\nslab_empty.\n\nThis caused the following full list corruption when SLUB debugging was enabled:\n\n  [ 5913.233035] ------------[ cut here ]------------\n  [ 5913.233097] WARNING: at lib/list_debug.c:53 __list_del_entry+0x8d/0x98()\n  [ 5913.233101] Hardware name: Adamo 13\n  [ 5913.233105] list_del corruption. prev-\u003enext should be ffffea000434fd20, but was ffffea0004199520\n  [ 5913.233108] Modules linked in: nfs fscache fuse ebtable_nat ebtables ppdev parport_pc lp parport ipt_MASQUERADE iptable_nat nf_nat nfsd lockd nfs_acl auth_rpcgss xt_CHECKSUM sunrpc iptable_mangle bridge stp llc cpufreq_ondemand acpi_cpufreq freq_table mperf ip6t_REJECT nf_conntrack_ipv6 nf_defrag_ipv6 ip6table_filter ip6_tables rfcomm bnep arc4 iwlagn snd_hda_codec_hdmi snd_hda_codec_idt snd_hda_intel btusb mac80211 snd_hda_codec bluetooth snd_hwdep snd_seq snd_seq_device snd_pcm usb_debug dell_wmi sparse_keymap cdc_ether usbnet cdc_acm uvcvideo cdc_wdm mii cfg80211 snd_timer dell_laptop videodev dcdbas snd microcode v4l2_compat_ioctl32 soundcore joydev tg3 pcspkr snd_page_alloc iTCO_wdt i2c_i801 rfkill iTCO_vendor_support wmi virtio_net kvm_intel kvm ipv6 xts gf128mul dm_crypt i915 drm_kms_helper drm i2c_algo_bit i2c_core video [last unloaded: scsi_wait_scan]\n  [ 5913.233213] Pid: 0, comm: swapper Not tainted 3.0.0+ #127\n  [ 5913.233213] Call Trace:\n  [ 5913.233213]  \u003cIRQ\u003e  [\u003cffffffff8105df18\u003e] warn_slowpath_common+0x83/0x9b\n  [ 5913.233213]  [\u003cffffffff8105dfd3\u003e] warn_slowpath_fmt+0x46/0x48\n  [ 5913.233213]  [\u003cffffffff8127e7c1\u003e] __list_del_entry+0x8d/0x98\n  [ 5913.233213]  [\u003cffffffff8127e7da\u003e] list_del+0xe/0x2d\n  [ 5913.233213]  [\u003cffffffff814e0430\u003e] __slab_free+0x1db/0x235\n  [ 5913.233213]  [\u003cffffffff811706ab\u003e] ? bvec_free_bs+0x35/0x37\n  [ 5913.233213]  [\u003cffffffff811706ab\u003e] ? bvec_free_bs+0x35/0x37\n  [ 5913.233213]  [\u003cffffffff811706ab\u003e] ? bvec_free_bs+0x35/0x37\n  [ 5913.233213]  [\u003cffffffff81133085\u003e] kmem_cache_free+0x88/0x102\n  [ 5913.233213]  [\u003cffffffff811706ab\u003e] bvec_free_bs+0x35/0x37\n  [ 5913.233213]  [\u003cffffffff811706e1\u003e] bio_free+0x34/0x64\n  [ 5913.233213]  [\u003cffffffff813dc390\u003e] dm_bio_destructor+0x12/0x14\n  [ 5913.233213]  [\u003cffffffff8116fef6\u003e] bio_put+0x2b/0x2d\n  [ 5913.233213]  [\u003cffffffff813dccab\u003e] clone_endio+0x9e/0xb4\n  [ 5913.233213]  [\u003cffffffff8116f7dd\u003e] bio_endio+0x2d/0x2f\n  [ 5913.233213]  [\u003cffffffffa00148da\u003e] crypt_dec_pending+0x5c/0x8b [dm_crypt]\n  [ 5913.233213]  [\u003cffffffffa00150a9\u003e] crypt_endio+0x78/0x81 [dm_crypt]\n\n[ Full discussion here: https://lkml.org/lkml/2011/8/4/375 ]\n\nMake sure that we remove such a slab also from the full lists.\n\nReported-and-tested-by: Dave Jones \u003cdavej@redhat.com\u003e\nReported-and-tested-by: Xiaotian Feng \u003cxtfeng@gmail.com\u003e\nSigned-off-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "ffc79d2880009ea0460d679f8413cfa40366bef4",
      "tree": "55481001251fa39d2cbd6bf72b278dfa300f1969",
      "parents": [
        "fdde6abb3e8dd45e4b026fcf32d40aed96ce3944"
      ],
      "author": {
        "name": "Sebastian Andrzej Siewior",
        "email": "bigeasy@linutronix.de",
        "time": "Fri Jul 29 14:10:20 2011 +0200"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Sun Jul 31 19:16:48 2011 +0300"
      },
      "message": "slub: use print_hex_dump\n\nLess code and same functionality. The output would be:\n\n| Object c7428000: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b  kkkkkkkkkkkkkkkk\n| Object c7428010: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b  kkkkkkkkkkkkkkkk\n| Object c7428020: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b  kkkkkkkkkkkkkkkk\n| Object c7428030: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b a5              kkkkkkkkkkk.\n| Redzone c742803c: bb bb bb bb                                      ....\n| Padding c7428064: 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a  ZZZZZZZZZZZZZZZZ\n| Padding c7428074: 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a              ZZZZZZZZZZZZ\n\nAcked-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Sebastian Andrzej Siewior \u003cbigeasy@linutronix.de\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "c11abbbaa3252875c5740a6880b9a1a6f1e2a870",
      "tree": "692143f7edd1157ef499bff21143e0d6df7cace5",
      "parents": [
        "1d3fe4a75b691285cded47c9f1a91b30d25287b0",
        "9e577e8b46ab0c38970c0f0cd7eae62e6dffddee"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jul 30 08:21:48 2011 -1000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jul 30 08:21:48 2011 -1000"
      },
      "message": "Merge branch \u0027slub/lockless\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/slab-2.6\n\n* \u0027slub/lockless\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/slab-2.6: (21 commits)\n  slub: When allocating a new slab also prep the first object\n  slub: disable interrupts in cmpxchg_double_slab when falling back to pagelock\n  Avoid duplicate _count variables in page_struct\n  Revert \"SLUB: Fix build breakage in linux/mm_types.h\"\n  SLUB: Fix build breakage in linux/mm_types.h\n  slub: slabinfo update for cmpxchg handling\n  slub: Not necessary to check for empty slab on load_freelist\n  slub: fast release on full slab\n  slub: Add statistics for the case that the current slab does not match the node\n  slub: Get rid of the another_slab label\n  slub: Avoid disabling interrupts in free slowpath\n  slub: Disable interrupts in free_debug processing\n  slub: Invert locking and avoid slab lock\n  slub: Rework allocator fastpaths\n  slub: Pass kmem_cache struct to lock and freeze slab\n  slub: explicit list_lock taking\n  slub: Add cmpxchg_double_slab()\n  mm: Rearrange struct page\n  slub: Move page-\u003efrozen handling near where the page-\u003efreelist handling occurs\n  slub: Do not use frozen page flag but a bit in the page counters\n  ...\n"
    },
    {
      "commit": "d3ec4844d449cf7af9e749f73ba2052fb7b72fc2",
      "tree": "c515913e85f7e50878c83da2a88bc5a7269d087c",
      "parents": [
        "0003230e8200699860f0b10af524dc47bf8aecad",
        "df2e301fee3c2c2a87592151397ad7699bb14c37"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 25 13:56:39 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 25 13:56:39 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (43 commits)\n  fs: Merge split strings\n  treewide: fix potentially dangerous trailing \u0027;\u0027 in #defined values/expressions\n  uwb: Fix misspelling of neighbourhood in comment\n  net, netfilter: Remove redundant goto in ebt_ulog_packet\n  trivial: don\u0027t touch files that are removed in the staging tree\n  lib/vsprintf: replace link to Draft by final RFC number\n  doc: Kconfig: `to be\u0027 -\u003e `be\u0027\n  doc: Kconfig: Typo: square -\u003e squared\n  doc: Konfig: Documentation/power/{pm \u003d\u003e apm-acpi}.txt\n  drivers/net: static should be at beginning of declaration\n  drivers/media: static should be at beginning of declaration\n  drivers/i2c: static should be at beginning of declaration\n  XTENSA: static should be at beginning of declaration\n  SH: static should be at beginning of declaration\n  MIPS: static should be at beginning of declaration\n  ARM: static should be at beginning of declaration\n  rcu: treewide: Do not use rcu_read_lock_held when calling rcu_dereference_check\n  Update my e-mail address\n  PCIe ASPM: forcedly -\u003e forcibly\n  gma500: push through device driver tree\n  ...\n\nFix up trivial conflicts:\n - arch/arm/mach-ep93xx/dma-m2p.c (deleted)\n - drivers/gpio/gpio-ep93xx.c (renamed and context nearby)\n - drivers/net/r8169.c (just context changes)\n"
    },
    {
      "commit": "9e577e8b46ab0c38970c0f0cd7eae62e6dffddee",
      "tree": "068d8d50963b53a8ce25470328ff6ebe5a51b198",
      "parents": [
        "1d07171c5e58e68a76a141970a3a5e816a414ce6"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux.com",
        "time": "Fri Jul 22 09:35:14 2011 -0500"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Mon Jul 25 20:58:19 2011 +0300"
      },
      "message": "slub: When allocating a new slab also prep the first object\n\nWe need to branch to the debug code for the first object if we allocate\na new slab otherwise the first object will be marked wrongly as inactive.\n\nTested-by: Rabin Vincent \u003crabin@rab.in\u003e\nSigned-off-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "f99b7880cb9863e11441bd8b2f31d4f556ef1a44",
      "tree": "6f3dc6e33e847b431dd899bd968d799f0d4a8fff",
      "parents": [
        "02f8c6aee8df3cdc935e9bdd4f2d020306035dbe",
        "7ea466f2256b02a7047dfd47d76a2f6c1e427e3e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 22 12:44:30 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 22 12:44:30 2011 -0700"
      },
      "message": "Merge branch \u0027slab-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/slab-2.6\n\n* \u0027slab-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/slab-2.6:\n  slab: fix DEBUG_SLAB warning\n  slab: shrink sizeof(struct kmem_cache)\n  slab: fix DEBUG_SLAB build\n  SLUB: Fix missing \u003clinux/stacktrace.h\u003e include\n  slub: reduce overhead of slub_debug\n  slub: Add method to verify memory is not freed\n  slub: Enable backtrace for create/delete points\n  slab allocators: Provide generic description of alignment defines\n  slab, slub, slob: Unify alignment definition\n  slob/lockdep: Fix gfp flags passed to lockdep\n"
    },
    {
      "commit": "497888cf69bf607ac1fe061a6437e0a670b0022f",
      "tree": "ac0897eff214f09c89d5f4fbc3c03ef9d010a83c",
      "parents": [
        "06b72d06d6b182bdaaaec686dbd8b602949521ee"
      ],
      "author": {
        "name": "Phil Carmody",
        "email": "ext-phil.2.carmody@nokia.com",
        "time": "Thu Jul 14 15:07:13 2011 +0300"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Thu Jul 21 14:10:00 2011 +0200"
      },
      "message": "treewide: fix potentially dangerous trailing \u0027;\u0027 in #defined values/expressions\n\nAll these are instances of\n  #define NAME value;\nor\n  #define NAME(params_opt) value;\n\nThese of course fail to build when used in contexts like\n  if(foo $OP NAME)\n  while(bar $OP NAME)\nand may silently generate the wrong code in contexts such as\n  foo \u003d NAME + 1;    /* foo \u003d value; + 1; */\n  bar \u003d NAME - 1;    /* bar \u003d value; - 1; */\n  baz \u003d NAME \u0026 quux; /* baz \u003d value; \u0026 quux; */\n\nReported on comp.lang.c,\nMessage-ID: \u003cab0d55fe-25e5-482b-811e-c475aa6065c3@c29g2000yqd.googlegroups.com\u003e\nInitial analysis of the dangers provided by Keith Thompson in that thread.\n\nThere are many more instances of more complicated macros having unnecessary\ntrailing semicolons, but this pile seems to be all of the cases of simple\nvalues suffering from the problem. (Thus things that are likely to be found\nin one of the contexts above, more complicated ones aren\u0027t.)\n\nSigned-off-by: Phil Carmody \u003cext-phil.2.carmody@nokia.com\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "1d07171c5e58e68a76a141970a3a5e816a414ce6",
      "tree": "9a8dcbf464b150d68daf0295e1ce644c1ec6d987",
      "parents": [
        "013e896373fc53f3d3c039364a25ccbd1fc0729a"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux.com",
        "time": "Thu Jul 14 12:49:12 2011 -0500"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Mon Jul 18 15:17:02 2011 +0300"
      },
      "message": "slub: disable interrupts in cmpxchg_double_slab when falling back to pagelock\n\nSplit cmpxchg_double_slab into two functions. One for the case where we know that\ninterrupts are disabled (and therefore the fallback does not need to disable\ninterrupts) and one for the other cases where fallback will also disable interrupts.\n\nThis fixes the issue that __slab_free called cmpxchg_double_slab in some scenarios\nwithout disabling interrupts.\n\nTested-by: Hugh Dickins \u003chughd@google.com\u003e\nSigned-off-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "bfa71457a091ac0e4e20cab36e8ebad63935e504",
      "tree": "e28fc1c9d38a15a37b9edc0e0417abf5342af588",
      "parents": [
        "c4089f98e943ff445665dea49c190657b34ccffe"
      ],
      "author": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Thu Jul 07 22:47:01 2011 +0300"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Thu Jul 07 22:47:01 2011 +0300"
      },
      "message": "SLUB: Fix missing \u003clinux/stacktrace.h\u003e include\n\nThis fixes the following build breakage commit d6543e3 (\"slub: Enable backtrace\nfor create/delete points\"):\n\n  CC      mm/slub.o\nmm/slub.c: In function ‘set_track’:\nmm/slub.c:428: error: storage size of ‘trace’ isn’t known\nmm/slub.c:435: error: implicit declaration of function ‘save_stack_trace’\nmm/slub.c:428: warning: unused variable ‘trace’\nmake[1]: *** [mm/slub.o] Error 1\nmake: *** [mm/slub.o] Error 2\n\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "c4089f98e943ff445665dea49c190657b34ccffe",
      "tree": "8238e65e7eaf575afc52c44179f428c3069584cd",
      "parents": [
        "d18a90dd85f8243ed20cdadb6d8a37d595df456d"
      ],
      "author": {
        "name": "Marcin Slusarz",
        "email": "marcin.slusarz@gmail.com",
        "time": "Sun Jun 26 21:39:18 2011 +0200"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Thu Jul 07 22:44:45 2011 +0300"
      },
      "message": "slub: reduce overhead of slub_debug\n\nslub checks for poison one byte by one, which is highly inefficient\nand shows up frequently as a highest cpu-eater in perf top.\n\nJoining reads gives nice speedup:\n\n(Compiling some project with different options)\n                                 make -j12    make clean\nslub_debug disabled:             1m 27s       1.2 s\nslub_debug enabled:              1m 46s       7.6 s\nslub_debug enabled + this patch: 1m 33s       3.2 s\n\ncheck_bytes still shows up high, but not always at the top.\n\nSigned-off-by: Marcin Slusarz \u003cmarcin.slusarz@gmail.com\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Pekka Enberg \u003cpenberg@kernel.org\u003e\nCc: Matt Mackall \u003cmpm@selenic.com\u003e\nCc: linux-mm@kvack.org\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "d18a90dd85f8243ed20cdadb6d8a37d595df456d",
      "tree": "35830bc434bfdb18605ff493b0a1406c3dcf8ac0",
      "parents": [
        "d6543e3935cec9f66b9647c24c2e44c68f8a91fd"
      ],
      "author": {
        "name": "Ben Greear",
        "email": "greearb@candelatech.com",
        "time": "Thu Jul 07 11:36:37 2011 -0700"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Thu Jul 07 22:17:08 2011 +0300"
      },
      "message": "slub: Add method to verify memory is not freed\n\nThis is for tracking down suspect memory usage.\n\nAcked-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Ben Greear \u003cgreearb@candelatech.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "d6543e3935cec9f66b9647c24c2e44c68f8a91fd",
      "tree": "f3971c6502cd6a4ea2d17af6177a8dc887ec593f",
      "parents": [
        "90810645f78f894acfb04b3768e8a7d45f2b303a"
      ],
      "author": {
        "name": "Ben Greear",
        "email": "greearb@candelatech.com",
        "time": "Thu Jul 07 11:36:36 2011 -0700"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Thu Jul 07 22:17:03 2011 +0300"
      },
      "message": "slub: Enable backtrace for create/delete points\n\nThis patch attempts to grab a backtrace for the creation\nand deletion points of the slub object.  When a fault is\ndetected, we can then get a better idea of where the item\nwas deleted.\n\nExample output from debugging some funky nfs/rpc behaviour:\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nBUG kmalloc-64: Object is on free-list\n-----------------------------------------------------------------------------\n\nINFO: Allocated in rpcb_getport_async+0x39c/0x5a5 [sunrpc] age\u003d381 cpu\u003d3 pid\u003d3750\n       __slab_alloc+0x348/0x3ba\n       kmem_cache_alloc_trace+0x67/0xe7\n       rpcb_getport_async+0x39c/0x5a5 [sunrpc]\n       call_bind+0x70/0x75 [sunrpc]\n       __rpc_execute+0x78/0x24b [sunrpc]\n       rpc_execute+0x3d/0x42 [sunrpc]\n       rpc_run_task+0x79/0x81 [sunrpc]\n       rpc_call_sync+0x3f/0x60 [sunrpc]\n       rpc_ping+0x42/0x58 [sunrpc]\n       rpc_create+0x4aa/0x527 [sunrpc]\n       nfs_create_rpc_client+0xb1/0xf6 [nfs]\n       nfs_init_client+0x3b/0x7d [nfs]\n       nfs_get_client+0x453/0x5ab [nfs]\n       nfs_create_server+0x10b/0x437 [nfs]\n       nfs_fs_mount+0x4ca/0x708 [nfs]\n       mount_fs+0x6b/0x152\nINFO: Freed in rpcb_map_release+0x3f/0x44 [sunrpc] age\u003d30 cpu\u003d2 pid\u003d29049\n       __slab_free+0x57/0x150\n       kfree+0x107/0x13a\n       rpcb_map_release+0x3f/0x44 [sunrpc]\n       rpc_release_calldata+0x12/0x14 [sunrpc]\n       rpc_free_task+0x59/0x61 [sunrpc]\n       rpc_final_put_task+0x82/0x8a [sunrpc]\n       __rpc_execute+0x23c/0x24b [sunrpc]\n       rpc_async_schedule+0x10/0x12 [sunrpc]\n       process_one_work+0x230/0x41d\n       worker_thread+0x133/0x217\n       kthread+0x7d/0x85\n       kernel_thread_helper+0x4/0x10\nINFO: Slab 0xffffea00029aa470 objects\u003d20 used\u003d9 fp\u003d0xffff8800be7830d8 flags\u003d0x20000000004081\nINFO: Object 0xffff8800be7830d8 @offset\u003d4312 fp\u003d0xffff8800be7827a8\n\nBytes b4 0xffff8800be7830c8:  87 a8 96 00 01 00 00 00 5a 5a 5a 5a 5a 5a 5a 5a .�......ZZZZZZZZ\n Object 0xffff8800be7830d8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk\n Object 0xffff8800be7830e8:  6b 6b 6b 6b 01 08 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkk..kkkkkkkkkk\n Object 0xffff8800be7830f8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk\n Object 0xffff8800be783108:  6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b a5 kkkkkkkkkkkkkkk�\n Redzone 0xffff8800be783118:  bb bb bb bb bb bb bb bb                         �������������\n Padding 0xffff8800be783258:  5a 5a 5a 5a 5a 5a 5a 5a                         ZZZZZZZZ\nPid: 29049, comm: kworker/2:2 Not tainted 3.0.0-rc4+ #8\nCall Trace:\n [\u003cffffffff811055c3\u003e] print_trailer+0x131/0x13a\n [\u003cffffffff81105601\u003e] object_err+0x35/0x3e\n [\u003cffffffff8110746f\u003e] verify_mem_not_deleted+0x7a/0xb7\n [\u003cffffffffa02851b5\u003e] rpcb_getport_done+0x23/0x126 [sunrpc]\n [\u003cffffffffa027d0ba\u003e] rpc_exit_task+0x3f/0x6d [sunrpc]\n [\u003cffffffffa027d4ab\u003e] __rpc_execute+0x78/0x24b [sunrpc]\n [\u003cffffffffa027d6c0\u003e] ? rpc_execute+0x42/0x42 [sunrpc]\n [\u003cffffffffa027d6d0\u003e] rpc_async_schedule+0x10/0x12 [sunrpc]\n [\u003cffffffff810611b7\u003e] process_one_work+0x230/0x41d\n [\u003cffffffff81061102\u003e] ? process_one_work+0x17b/0x41d\n [\u003cffffffff81063613\u003e] worker_thread+0x133/0x217\n [\u003cffffffff810634e0\u003e] ? manage_workers+0x191/0x191\n [\u003cffffffff81066e10\u003e] kthread+0x7d/0x85\n [\u003cffffffff81485924\u003e] kernel_thread_helper+0x4/0x10\n [\u003cffffffff8147eb18\u003e] ? retint_restore_args+0x13/0x13\n [\u003cffffffff81066d93\u003e] ? __init_kthread_worker+0x56/0x56\n [\u003cffffffff81485920\u003e] ? gs_change+0x13/0x13\n\nAcked-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Ben Greear \u003cgreearb@candelatech.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "4eade540fc35353813097bfdb39465c9b8847a15",
      "tree": "3e92af005f3fea4d84de049764c72fac95150e7c",
      "parents": [
        "03e404af26dc2ea0d278d7a342de0aab394793ce"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux.com",
        "time": "Wed Jun 01 12:25:59 2011 -0500"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Sat Jul 02 13:26:57 2011 +0300"
      },
      "message": "slub: Not necessary to check for empty slab on load_freelist\n\nload_freelist is now only branched to only if there are objects available.\nSo no need to check the object variable for NULL.\n\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "03e404af26dc2ea0d278d7a342de0aab394793ce",
      "tree": "1290b42700767c661125aaf584253bdeb98b7afd",
      "parents": [
        "e36a2652d7d1ad97f7636a39bdd8654d296cc36b"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux.com",
        "time": "Wed Jun 01 12:25:58 2011 -0500"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Sat Jul 02 13:26:57 2011 +0300"
      },
      "message": "slub: fast release on full slab\n\nMake deactivation occur implicitly while checking out the current freelist.\n\nThis avoids one cmpxchg operation on a slab that is now fully in use.\n\nSigned-off-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "e36a2652d7d1ad97f7636a39bdd8654d296cc36b",
      "tree": "fd01f6bf66b233e8e66a119ded39691914db7d7e",
      "parents": [
        "fc59c05306fe1dcfa3fb8ba34ed45407fba4689c"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux.com",
        "time": "Wed Jun 01 12:25:57 2011 -0500"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Sat Jul 02 13:26:56 2011 +0300"
      },
      "message": "slub: Add statistics for the case that the current slab does not match the node\n\nSlub reloads the per cpu slab if the page does not satisfy the NUMA condition. Track\nthose reloads since doing so has a performance impact.\n\nSigned-off-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "fc59c05306fe1dcfa3fb8ba34ed45407fba4689c",
      "tree": "b187d9819cdb921fb6b575d10e487915b2a89dbe",
      "parents": [
        "80f08c191f6c9563641291bea80657a3b9faabf0"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux.com",
        "time": "Wed Jun 01 12:25:56 2011 -0500"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Sat Jul 02 13:26:56 2011 +0300"
      },
      "message": "slub: Get rid of the another_slab label\n\nWe can avoid deactivate slab in special cases if we do the\ndeactivation of slabs in each code flow that leads to new_slab.\n\nSigned-off-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "80f08c191f6c9563641291bea80657a3b9faabf0",
      "tree": "9ad3d121f6a6cd30e317b5819a0d8cb729e2b296",
      "parents": [
        "5c2e4bbbd60623f1024a753c291b666068f8a6e7"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux.com",
        "time": "Wed Jun 01 12:25:55 2011 -0500"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Sat Jul 02 13:26:56 2011 +0300"
      },
      "message": "slub: Avoid disabling interrupts in free slowpath\n\nDisabling interrupts can be avoided now. However, list operation still require\ndisabling interrupts since allocations can occur from interrupt\ncontexts and there is no way to perform atomic list operations.\n\nThe acquition of the list_lock therefore has to disable interrupts as well.\n\nDropping interrupt handling significantly simplifies the slowpath.\n\nSigned-off-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "5c2e4bbbd60623f1024a753c291b666068f8a6e7",
      "tree": "b1df70e32d94de20d5c12202250b6e45124435bb",
      "parents": [
        "881db7fb03a77af0bcd460fd1de1f4062d5c18fe"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux.com",
        "time": "Wed Jun 01 12:25:54 2011 -0500"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Sat Jul 02 13:26:55 2011 +0300"
      },
      "message": "slub: Disable interrupts in free_debug processing\n\nWe will be calling free_debug_processing with interrupts disabled\nin some case when the later patches are applied. Some of the\nfunctions called by free_debug_processing expect interrupts to be\noff.\n\nSigned-off-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "881db7fb03a77af0bcd460fd1de1f4062d5c18fe",
      "tree": "281c07cf45aabd44962dbceed4efb1a86492115d",
      "parents": [
        "2cfb7455d223ab24b23df44be430faf92e12390f"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux.com",
        "time": "Wed Jun 01 12:25:53 2011 -0500"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Sat Jul 02 13:26:55 2011 +0300"
      },
      "message": "slub: Invert locking and avoid slab lock\n\nLocking slabs is no longer necesary if the arch supports cmpxchg operations\nand if no debuggin features are used on a slab. If the arch does not support\ncmpxchg then we fallback to use the slab lock to do a cmpxchg like operation.\n\nThe patch also changes the lock order. Slab locks are subsumed to the node lock\nnow. With that approach slab_trylocking is no longer necessary.\n\nSigned-off-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "2cfb7455d223ab24b23df44be430faf92e12390f",
      "tree": "6147fb32816d831d9f3f0e583a702aa4896f8354",
      "parents": [
        "61728d1efc927eccfa64c50ede4998a8765805c3"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux.com",
        "time": "Wed Jun 01 12:25:52 2011 -0500"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Sat Jul 02 13:26:54 2011 +0300"
      },
      "message": "slub: Rework allocator fastpaths\n\nRework the allocation paths so that updates of the page freelist, frozen state\nand number of objects use cmpxchg_double_slab().\n\nSigned-off-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "61728d1efc927eccfa64c50ede4998a8765805c3",
      "tree": "8aeaa3bf585d297400386decf94df2ad842aaecc",
      "parents": [
        "5cc6eee8a8c1aefe9c86fe7345a2aa1c4ca70dc6"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux.com",
        "time": "Wed Jun 01 12:25:51 2011 -0500"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Sat Jul 02 13:26:54 2011 +0300"
      },
      "message": "slub: Pass kmem_cache struct to lock and freeze slab\n\nWe need more information about the slab for the cmpxchg implementation.\n\nSigned-off-by: Christoph Lameter \u003ccl@linux.com\u003e\nAcked-by: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "5cc6eee8a8c1aefe9c86fe7345a2aa1c4ca70dc6",
      "tree": "3d69b8a7a44094ea336efbc59698d0949f5f6ec7",
      "parents": [
        "b789ef518b2a7231b0668c813f677cee528a9d3f"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux.com",
        "time": "Wed Jun 01 12:25:50 2011 -0500"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Sat Jul 02 13:26:54 2011 +0300"
      },
      "message": "slub: explicit list_lock taking\n\nThe allocator fastpath rework does change the usage of the list_lock.\nRemove the list_lock processing from the functions that hide them from the\ncritical sections and move them into those critical sections.\n\nThis in turn simplifies the support functions (no __ variant needed anymore)\nand simplifies the lock handling on bootstrap.\n\nInline add_partial since it becomes pretty simple.\n\nSigned-off-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "b789ef518b2a7231b0668c813f677cee528a9d3f",
      "tree": "08c300c4dde3e1386670962f233612a366bc59af",
      "parents": [
        "fc9bb8c768abe7ae10861c3510e01a95f98d5933"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux.com",
        "time": "Wed Jun 01 12:25:49 2011 -0500"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Sat Jul 02 13:26:53 2011 +0300"
      },
      "message": "slub: Add cmpxchg_double_slab()\n\nAdd a function that operates on the second doubleword in the page struct\nand manipulates the object counters, the freelist and the frozen attribute.\n\nSigned-off-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "8cb0a5068f4108e8ca60d5e0bcfbe6901adcfaef",
      "tree": "48098dca8f01abd882bfb9771880b2c791604f8a",
      "parents": [
        "50d5c41cd151b21ac1dfc98f048210456ccacc20"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux.com",
        "time": "Wed Jun 01 12:25:46 2011 -0500"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Sat Jul 02 13:26:53 2011 +0300"
      },
      "message": "slub: Move page-\u003efrozen handling near where the page-\u003efreelist handling occurs\n\nThis is necessary because the frozen bit has to be handled in the same cmpxchg_double\nwith the freelist and the counters.\n\nSigned-off-by: Christoph Lameter \u003ccl@linux.com\u003e\nAcked-by: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "50d5c41cd151b21ac1dfc98f048210456ccacc20",
      "tree": "406983fe5aca70acad4df7c7f92286e4fc71d70b",
      "parents": [
        "7e0528dadc9f8b04e4de0dba48a075100c2afe75"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux.com",
        "time": "Wed Jun 01 12:25:45 2011 -0500"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Sat Jul 02 13:26:52 2011 +0300"
      },
      "message": "slub: Do not use frozen page flag but a bit in the page counters\n\nDo not use a page flag for the frozen bit. It needs to be part\nof the state that is handled with cmpxchg_double(). So use a bit\nin the counter struct in the page struct for that purpose.\n\nSigned-off-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "7e0528dadc9f8b04e4de0dba48a075100c2afe75",
      "tree": "708bd8384d867d276d36faa6bfc33fb41fe051f3",
      "parents": [
        "e4a46182e1bcc2ddacff5a35f6b52398b51f1b11"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux.com",
        "time": "Wed Jun 01 12:25:44 2011 -0500"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Sat Jul 02 13:26:52 2011 +0300"
      },
      "message": "slub: Push irq disable into allocate_slab()\n\nDo the irq handling in allocate_slab() instead of __slab_alloc().\n\n__slab_alloc() is already cluttered and allocate_slab() is already\nfiddling around with gfp flags.\n\nv6-\u003ev7:\n\tOnly increment ORDER_FALLBACK if we get a page during fallback\n\nSigned-off-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "d4d84fef6d0366b585b7de13527a0faeca84d9ce",
      "tree": "c67449976f955cff4a2fe8a74affc2dd67c37b7e",
      "parents": [
        "55922c9d1b84b89cb946c777fddccb3247e7df2c"
      ],
      "author": {
        "name": "Chris Metcalf",
        "email": "cmetcalf@tilera.com",
        "time": "Thu Jun 02 10:19:41 2011 -0400"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Fri Jun 03 19:33:49 2011 +0300"
      },
      "message": "slub: always align cpu_slab to honor cmpxchg_double requirement\n\nOn an architecture without CMPXCHG_LOCAL but with DEBUG_VM enabled,\nthe VM_BUG_ON() in __pcpu_double_call_return_bool() will cause an early\npanic during boot unless we always align cpu_slab properly.\n\nIn principle we could remove the alignment-testing VM_BUG_ON() for\narchitectures that don\u0027t have CMPXCHG_LOCAL, but leaving it in means\nthat new code will tend not to break x86 even if it is introduced\non another platform, and it\u0027s low cost to require alignment.\n\nAcked-by: David Rientjes \u003crientjes@google.com\u003e\nAcked-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Chris Metcalf \u003ccmetcalf@tilera.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "49a78d085fa6b44d6ed791923c7172a6433589c2",
      "tree": "0fdf94bc4baf3e51f4b52c3718e6fa4f5dcb5032",
      "parents": [
        "3f5785ec31adcb7cafa9135087297a38d9698cf8"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 25 18:06:54 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 25 18:06:54 2011 -0700"
      },
      "message": "slub: remove no-longer used \u0027unlock_out\u0027 label\n\nCommit a71ae47a2cbf (\"slub: Fix double bit unlock in debug mode\")\nremoved the only goto to this label, resulting in\n\n  mm/slub.c: In function \u0027__slab_alloc\u0027:\n  mm/slub.c:1834: warning: label \u0027unlock_out\u0027 defined but not used\n\nfixed trivially by the removal of the label itself too.\n\nReported-by: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nCc: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a71ae47a2cbfa542c69f695809124da4e4dd9e8f",
      "tree": "a6b563bbab796f404fc68fdeebdf9a1c1e2fc27b",
      "parents": [
        "4a7df24ddc7097cd789a7527187826552ea0765e"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux.com",
        "time": "Wed May 25 09:47:43 2011 -0500"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 25 08:38:24 2011 -0700"
      },
      "message": "slub: Fix double bit unlock in debug mode\n\nCommit 442b06bcea23 (\"slub: Remove node check in slab_free\") added a\ncall to deactivate_slab() in the debug case in __slab_alloc(), which\nunlocks the current slab used for allocation.  Going to the label\n\u0027unlock_out\u0027 then does it again.\n\nAlso, in the debug case we do not need all the other processing that the\n\u0027unlock_out\u0027 path does.  We always fall back to the slow path in the\ndebug case.  So the tid update is useless.\n\nSimilarly, ALLOC_SLOWPATH would just be incremented for all allocations.\nAlso a pretty useless thing.\n\nSo simply restore irq flags and return the object.\n\nSigned-off-by: Christoph Lameter \u003ccl@linux.com\u003e\nReported-and-bisected-by: James Morris \u003cjmorris@namei.org\u003e\nReported-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nReported-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\nCc: Pekka Enberg \u003cpenberg@kernel.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "bfb91fb650e988c3c347e50fc75fedb7d4f0c018",
      "tree": "0e8d89e0ceffb9001da2082998222da8b39185c1",
      "parents": [
        "caebc160ce3f76761cc62ad96ef6d6f30f54e3dd",
        "3e0c2ab67e48f77c2da0a5c826aac397792a214e"
      ],
      "author": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Mon May 23 19:50:39 2011 +0300"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Mon May 23 19:50:39 2011 +0300"
      },
      "message": "Merge branch \u0027slab/next\u0027 into for-linus\n\nConflicts:\n\tmm/slub.c\n"
    },
    {
      "commit": "442b06bcea23a01934d3da7ec5898fa154a6cafb",
      "tree": "bc08b4a9d7723057a1ff1687a90cdb608b3c8cce",
      "parents": [
        "bd07d87fd4b8a6af9820544b6bc6c37215d6f8ad"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux.com",
        "time": "Tue May 17 16:29:31 2011 -0500"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Sat May 21 12:53:53 2011 +0300"
      },
      "message": "slub: Remove node check in slab_free\n\nWe can set the page pointing in the percpu structure to\nNULL to have the same effect as setting c-\u003enode to NUMA_NO_NODE.\n\nGets rid of one check in slab_free() that was only used for\nforcing the slab_free to the slowpath for debugging.\n\nWe still need to set c-\u003enode to NUMA_NO_NODE to force the\nslab_alloc() fastpath to the slowpath in case of debugging.\n\nSigned-off-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "bd07d87fd4b8a6af9820544b6bc6c37215d6f8ad",
      "tree": "521042275e3bf152056b5683f637f5750ccf9edb",
      "parents": [
        "1393d9a1857471f816d0be1ccc1d6433a86050f6"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Thu May 12 13:10:49 2011 -0700"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Tue May 17 22:19:00 2011 +0300"
      },
      "message": "slub: avoid label inside conditional\n\nJumping to a label inside a conditional is considered poor style,\nespecially considering the current organization of __slab_alloc().\n\nThis removes the \u0027load_from_page\u0027 label and just duplicates the three\nlines of code that it uses:\n\n\tc-\u003enode \u003d page_to_nid(page);\n\tc-\u003epage \u003d page;\n\tgoto load_freelist;\n\nsince it\u0027s probably not worth making this a separate helper function.\n\nAcked-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "1393d9a1857471f816d0be1ccc1d6433a86050f6",
      "tree": "2bcad46d15f1dc7ea6e458f2ab4d7f17b766dd66",
      "parents": [
        "6332aa9d25e911cc97aa9cc09acee21afda07ea6"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux.com",
        "time": "Mon May 16 15:26:08 2011 -0500"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Tue May 17 22:18:55 2011 +0300"
      },
      "message": "slub: Make CONFIG_DEBUG_PAGE_ALLOC work with new fastpath\n\nFastpath can do a speculative access to a page that CONFIG_DEBUG_PAGE_ALLOC may have\nmarked as invalid to retrieve the pointer to the next free object.\n\nUse probe_kernel_read in that case in order not to cause a page fault.\n\nCc: \u003cstable@kernel.org\u003e # 38.x\nReported-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "6332aa9d25e911cc97aa9cc09acee21afda07ea6",
      "tree": "6b931efc6453812784948ab33a0e0aa123f689c1",
      "parents": [
        "1759415e630e5db0dd2390df9f94892cbfb9a8a2"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux.com",
        "time": "Mon May 16 15:26:06 2011 -0500"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Tue May 17 22:16:08 2011 +0300"
      },
      "message": "slub: Avoid warning for !CONFIG_SLUB_DEBUG\n\nMove the #ifdef so that get_map is only defined if CONFIG_SLUB_DEBUG is defined.\n\nReported-by: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "1759415e630e5db0dd2390df9f94892cbfb9a8a2",
      "tree": "bfae4443c70ee88c54aa9743ca19ed122af45f8f",
      "parents": [
        "8dc16c6c04b1a82d00a8464ccc08e1fe17d0ff82"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux.com",
        "time": "Thu May 05 15:23:54 2011 -0500"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Sat May 07 20:25:38 2011 +0300"
      },
      "message": "slub: Remove CONFIG_CMPXCHG_LOCAL ifdeffery\n\nRemove the #ifdefs. This means that the irqsafe_cpu_cmpxchg_double() is used\neverywhere.\n\nThere may be performance implications since:\n\nA. We now have to manage a transaction ID for all arches\n\nB. The interrupt holdoff for arches not supporting CONFIG_CMPXCHG_LOCAL is reduced\nto a very short irqoff section.\n\nThere are no multiple irqoff/irqon sequences as a result of this change. Even in the fallback\ncase we only have to do one disable and enable like before.\n\nSigned-off-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "30106b8ce2cc2243514116d6f29086e6deecc754",
      "tree": "a2fe06bb2b47a508eaa38680112066bb2eb0bb6b",
      "parents": [
        "0ee5623f9a6e52df90a78bd21179f8ab370e102e"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed May 04 15:38:19 2011 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 04 14:20:20 2011 -0700"
      },
      "message": "slub: Fix the lockless code on 32-bit platforms with no 64-bit cmpxchg\n\nThe SLUB allocator use of the cmpxchg_double logic was wrong: it\nactually needs the irq-safe one.\n\nThat happens automatically when we use the native unlocked \u0027cmpxchg8b\u0027\ninstruction, but when compiling the kernel for older x86 CPUs that do\nnot support that instruction, we fall back to the generic emulation\ncode.\n\nAnd if you don\u0027t specify that you want the irq-safe version, the generic\ncode ends up just open-coding the cmpxchg8b equivalent without any\nprotection against interrupts or preemption.  Which definitely doesn\u0027t\nwork for SLUB.\n\nThis was reported by Werner Landgraf \u003cw.landgraf@ru.ru\u003e, who saw\ninstability with his distro-kernel that was compiled to support pretty\nmuch everything under the sun.  Most big Linux distributions tend to\ncompile for PPro and later, and would never have noticed this problem.\n\nThis also fixes the prototypes for the irqsafe cmpxchg_double functions\nto use \u0027bool\u0027 like they should.\n\n[ Btw, that whole \"generic code defaults to no protection\" design just\n  sounds stupid - if the code needs no protection, there is no reason to\n  use \"cmpxchg_double\" to begin with.  So we should probably just remove\n  the unprotected version entirely as pointless.   - Linus ]\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nReported-and-tested-by: werner \u003cw.landgraf@ru.ru\u003e\nAcked-and-tested-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nAcked-by: Christoph Lameter \u003ccl@linux.com\u003e\nCc: Pekka Enberg \u003cpenberg@kernel.org\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: Tejun Heo \u003ctj@kernel.org\u003e\nLink: http://lkml.kernel.org/r/alpine.LFD.2.02.1105041539050.3005@ionos\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8dc16c6c04b1a82d00a8464ccc08e1fe17d0ff82",
      "tree": "8652572fe6cb411516c5d217eb25bbc6376e3036",
      "parents": [
        "dc1fb7f43636754a4d06f7bdb8ea3269a7d71d6d"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux.com",
        "time": "Fri Apr 15 14:48:16 2011 -0500"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Sun Apr 17 14:03:20 2011 +0300"
      },
      "message": "slub: Move debug handlign in __slab_free\n\nIts easier to read if its with the check for debugging flags.\n\nSigned-off-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "dc1fb7f43636754a4d06f7bdb8ea3269a7d71d6d",
      "tree": "85d7cd2cc81d89805b9d3cc3c0ec89b5f6c357f9",
      "parents": [
        "01ad8a7bc226ddbbf90e4c15167d9e31a8d02930"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux.com",
        "time": "Fri Apr 15 14:48:15 2011 -0500"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Sun Apr 17 14:03:20 2011 +0300"
      },
      "message": "slub: Move node determination out of hotpath\n\nIf the node does not change then there is no need to recalculate\nthe node from the page struct. So move the node determination\ninto the places where we acquire a new slab page.\n\nSigned-off-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "01ad8a7bc226ddbbf90e4c15167d9e31a8d02930",
      "tree": "ec3c1de81f6130917e1df2f4bbbc4d4be93e014c",
      "parents": [
        "5f80b13ae45df7da6646d1881da186318e70b6b6"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux.com",
        "time": "Fri Apr 15 14:48:14 2011 -0500"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Sun Apr 17 14:03:19 2011 +0300"
      },
      "message": "slub: Eliminate repeated use of c-\u003epage through a new page variable\n\n__slab_alloc is full of \"c-\u003epage\" repeats. Lets just use one local variable\nnamed \"page\" for this. Also avoids the need to a have another variable\ncalled \"new\".\n\nSigned-off-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "5f80b13ae45df7da6646d1881da186318e70b6b6",
      "tree": "2c249101bc1bf0020268ca31d09ae198a7031cb1",
      "parents": [
        "33de04ec4cb80b6bd0782e88a64954e60bc15dc1"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux.com",
        "time": "Fri Apr 15 14:48:13 2011 -0500"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Sun Apr 17 14:03:19 2011 +0300"
      },
      "message": "slub: get_map() function to establish map of free objects in a slab\n\nThe bit map of free objects in a slab page is determined in various functions\nif debugging is enabled.\n\nProvide a common function for that purpose.\n\nSigned-off-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "33de04ec4cb80b6bd0782e88a64954e60bc15dc1",
      "tree": "182d78e554cc4d4c5cb367e967d951650f52fccb",
      "parents": [
        "607bf324ab3d780e1ec20b1b1a3bfaa3be58a957"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux.com",
        "time": "Fri Apr 15 14:48:12 2011 -0500"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Sun Apr 17 14:03:19 2011 +0300"
      },
      "message": "slub: Use NUMA_NO_NODE in get_partial\n\nA -1 was leftover during the conversion.\n\nSigned-off-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "607bf324ab3d780e1ec20b1b1a3bfaa3be58a957",
      "tree": "a3dd5e237b11d219e8e3803784ad3d24528a8fb4",
      "parents": [
        "0ce790e7d736cedc563e1fb4e998babf5a4dbc3d"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Tue Apr 12 15:22:26 2011 +0800"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Tue Apr 12 22:27:27 2011 +0300"
      },
      "message": "slub: Fix a typo in config name\n\nThere\u0027s no config named SLAB_DEBUG, and it should be a typo\nof SLUB_DEBUG.\n\nAcked-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "25985edcedea6396277003854657b5f3cb31a628",
      "tree": "f026e810210a2ee7290caeb737c23cb6472b7c38",
      "parents": [
        "6aba74f2791287ec407e0f92487a725a25908067"
      ],
      "author": {
        "name": "Lucas De Marchi",
        "email": "lucas.demarchi@profusion.mobi",
        "time": "Wed Mar 30 22:57:33 2011 -0300"
      },
      "committer": {
        "name": "Lucas De Marchi",
        "email": "lucas.demarchi@profusion.mobi",
        "time": "Thu Mar 31 11:26:23 2011 -0300"
      },
      "message": "Fix common misspellings\n\nFixes generated by \u0027codespell\u0027 and manually reviewed.\n\nSigned-off-by: Lucas De Marchi \u003clucas.demarchi@profusion.mobi\u003e\n"
    },
    {
      "commit": "b8c4c96ed4cdecf5ae51fc6f4c006658e873047f",
      "tree": "d08a3abe924d54284486839864d73e9d8bba6180",
      "parents": [
        "f9b615de4663c4b852e07257e9f967df6a0161c0"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux.com",
        "time": "Thu Mar 24 14:51:38 2011 -0500"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Thu Mar 24 21:53:07 2011 +0200"
      },
      "message": "SLUB: Write to per cpu data when allocating it\n\nIt turns out that the cmpxchg16b emulation has to access vmalloced\npercpu memory with interrupts disabled. If the memory has never\nbeen touched before then the fault necessary to establish the\nmapping will not to occur and the kernel will fail on boot.\n\nFix that by reusing the CONFIG_PREEMPT code that writes the\ncpu number into a field on every cpu. Writing to the per cpu\narea before causes the mapping to be established before we get\nto a cmpxchg16b emulation.\n\nTested-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "f9b615de4663c4b852e07257e9f967df6a0161c0",
      "tree": "5aedfe0d17cbe0d39cf91d17a889b8bb6ae271e6",
      "parents": [
        "6d1e9a42e7176bbce9348274784b2e5f69223936"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Thu Mar 24 21:26:46 2011 +0200"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Thu Mar 24 21:26:46 2011 +0200"
      },
      "message": "slub: Fix debugobjects with lockless fastpath\n\nOn Thu, 24 Mar 2011, Ingo Molnar wrote:\n\u003e RIP: 0010:[\u003cffffffff810570a9\u003e]  [\u003cffffffff810570a9\u003e] get_next_timer_interrupt+0x119/0x260\n\nThat\u0027s a typical timer crash, but you were unable to debug it with\ndebugobjects because commit d3f661d6 broke those.\n\nCc: Christoph Lameter \u003ccl@linux.com\u003e\nTested-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "4fdccdfbb4652a7bbac8adbce7449eb093775118",
      "tree": "ff780cfea8087ea4143b1a2186257448f0bad3bb",
      "parents": [
        "2fd66c517d5e98de2528d86e0e62f5069ff99f59"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux.com",
        "time": "Tue Mar 22 13:35:00 2011 -0500"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Tue Mar 22 20:48:04 2011 +0200"
      },
      "message": "slub: Add statistics for this_cmpxchg_double failures\n\nAdd some statistics for debugging.\n\nSigned-off-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "2fd66c517d5e98de2528d86e0e62f5069ff99f59",
      "tree": "2d8ef9bf8b71872475728f778f0c095ae395785b",
      "parents": [
        "f741a79e982cf56d7584435bad663553ffe6715f"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux.com",
        "time": "Tue Mar 22 13:32:53 2011 -0500"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Tue Mar 22 20:48:04 2011 +0200"
      },
      "message": "slub: Add missing irq restore for the OOM path\n\nOOM path is missing the irq restore in the CONFIG_CMPXCHG_LOCAL case.\n\nSigned-off-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "e8c500c2b64b6e237e67ecba7249e72363c47047",
      "tree": "e9c62e59a879ebef45b0fc2823d318b2fb2fed84",
      "parents": [
        "c53badd0801728feedfcccae04239410b52b0d03",
        "a24c5a0ea902bcda348f086bd909cc2d6e305bf8"
      ],
      "author": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Sun Mar 20 18:13:26 2011 +0200"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Sun Mar 20 18:13:26 2011 +0200"
      },
      "message": "Merge branch \u0027slub/lockless\u0027 into for-linus\n\nConflicts:\n\tinclude/linux/slub_def.h\n"
    }
  ],
  "next": "a24c5a0ea902bcda348f086bd909cc2d6e305bf8"
}
