)]}'
{
  "log": [
    {
      "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": "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"
    },
    {
      "commit": "a24c5a0ea902bcda348f086bd909cc2d6e305bf8",
      "tree": "82ac0b5bdc810b6f427261b8b254ac2b05023f56",
      "parents": [
        "8a5ec0ba42c4919e2d8f4c3138cc8b987fdb0b79"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux.com",
        "time": "Tue Mar 15 12:45:21 2011 -0500"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Sun Mar 20 18:11:07 2011 +0200"
      },
      "message": "slub: Dont define useless label in the !CONFIG_CMPXCHG_LOCAL case\n\nThe redo label needs #ifdeffery. Fixes the following problem introduced by\ncommit 8a5ec0ba42c4 (\"Lockless (and preemptless) fastpaths for slub\"):\n\n  mm/slub.c: In function \u0027slab_free\u0027:\n  mm/slub.c:2124: warning: label \u0027redo\u0027 defined but not used\n\nReported-by: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nSigned-off-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "c9149556756d56c68451a4a8735c37e7062fd3d7",
      "tree": "a2dae56b22adaa9a23c8f92f30c3b3ad3b610850",
      "parents": [
        "d71f606f687ef9d0cdddfd3619ca7cb9a0b3fb63",
        "5bfe53a77e8a3ffce4a10003c75f464a138e272d"
      ],
      "author": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Fri Mar 11 18:10:45 2011 +0200"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Fri Mar 11 18:10:45 2011 +0200"
      },
      "message": "Merge branch \u0027slab/rcu\u0027 into slab/next\n\nConflicts:\n\tmm/slub.c\n"
    },
    {
      "commit": "da9a638c6f8fc0633fa94a334f1c053f5e307177",
      "tree": "786966087ccd4fd2c97757ce7b722f728c17ca2b",
      "parents": [
        "ab9a0f196f2f4f080df54402493ea3dc31b5243e"
      ],
      "author": {
        "name": "Lai Jiangshan",
        "email": "laijs@cn.fujitsu.com",
        "time": "Thu Mar 10 15:22:00 2011 +0800"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Fri Mar 11 18:06:34 2011 +0200"
      },
      "message": "slub,rcu: don\u0027t assume the size of struct rcu_head\n\nThe size of struct rcu_head may be changed. When it becomes larger,\nit will pollute the page array.\n\nWe reserve some some bytes for struct rcu_head when a slab\nis allocated in this situation.\n\nChanged from V1:\n\tuse VM_BUG_ON instead BUG_ON\n\nAcked-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "ab9a0f196f2f4f080df54402493ea3dc31b5243e",
      "tree": "849ce2a8bf2c2574b8ea9a368873aebfb25186b0",
      "parents": [
        "a5abba989deceb731047425812d268daf7536575"
      ],
      "author": {
        "name": "Lai Jiangshan",
        "email": "laijs@cn.fujitsu.com",
        "time": "Thu Mar 10 15:21:48 2011 +0800"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Fri Mar 11 18:06:34 2011 +0200"
      },
      "message": "slub: automatically reserve bytes at the end of slab\n\nThere is no \"struct\" for slub\u0027s slab, it shares with struct page.\nBut struct page is very small, it is insufficient when we need\nto add some metadata for slab.\n\nSo we add a field \"reserved\" to struct kmem_cache, when a slab\nis allocated, kmem_cache-\u003ereserved bytes are automatically reserved\nat the end of the slab for slab\u0027s metadata.\n\nChanged from v1:\n\tExport the reserved field via sysfs\n\nAcked-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "8a5ec0ba42c4919e2d8f4c3138cc8b987fdb0b79",
      "tree": "d20d4eeb63351e3bd76b7957fa434f2b9f85ec14",
      "parents": [
        "d3f661d69a486db0e0e6343b452f45d91b4b3656"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux.com",
        "time": "Fri Feb 25 11:38:54 2011 -0600"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Fri Mar 11 17:42:49 2011 +0200"
      },
      "message": "Lockless (and preemptless) fastpaths for slub\n\nUse the this_cpu_cmpxchg_double functionality to implement a lockless\nallocation algorithm on arches that support fast this_cpu_ops.\n\nEach of the per cpu pointers is paired with a transaction id that ensures\nthat updates of the per cpu information can only occur in sequence on\na certain cpu.\n\nA transaction id is a \"long\" integer that is comprised of an event number\nand the cpu number. The event number is incremented for every change to the\nper cpu state. This means that the cmpxchg instruction can verify for an\nupdate that nothing interfered and that we are updating the percpu structure\nfor the processor where we picked up the information and that we are also\ncurrently on that processor when we update the information.\n\nThis results in a significant decrease of the overhead in the fastpaths. It\nalso makes it easy to adopt the fast path for realtime kernels since this\nis lockless and does not require the use of the current per cpu area\nover the critical section. It is only important that the per cpu area is\ncurrent at the beginning of the critical section and at the end.\n\nSo there is no need even to disable preemption.\n\nTest results show that the fastpath cycle count is reduced by up to ~ 40%\n(alloc/free test goes from ~140 cycles down to ~80). The slowpath for kfree\nadds a few cycles.\n\nSadly this does nothing for the slowpath which is where the main issues with\nperformance in slub are but the best case performance rises significantly.\n(For that see the more complex slub patches that require cmpxchg_double)\n\nKmalloc: alloc/free test\n\nBefore:\n\n10000 times kmalloc(8)/kfree -\u003e 134 cycles\n10000 times kmalloc(16)/kfree -\u003e 152 cycles\n10000 times kmalloc(32)/kfree -\u003e 144 cycles\n10000 times kmalloc(64)/kfree -\u003e 142 cycles\n10000 times kmalloc(128)/kfree -\u003e 142 cycles\n10000 times kmalloc(256)/kfree -\u003e 132 cycles\n10000 times kmalloc(512)/kfree -\u003e 132 cycles\n10000 times kmalloc(1024)/kfree -\u003e 135 cycles\n10000 times kmalloc(2048)/kfree -\u003e 135 cycles\n10000 times kmalloc(4096)/kfree -\u003e 135 cycles\n10000 times kmalloc(8192)/kfree -\u003e 144 cycles\n10000 times kmalloc(16384)/kfree -\u003e 754 cycles\n\nAfter:\n\n10000 times kmalloc(8)/kfree -\u003e 78 cycles\n10000 times kmalloc(16)/kfree -\u003e 78 cycles\n10000 times kmalloc(32)/kfree -\u003e 82 cycles\n10000 times kmalloc(64)/kfree -\u003e 88 cycles\n10000 times kmalloc(128)/kfree -\u003e 79 cycles\n10000 times kmalloc(256)/kfree -\u003e 79 cycles\n10000 times kmalloc(512)/kfree -\u003e 85 cycles\n10000 times kmalloc(1024)/kfree -\u003e 82 cycles\n10000 times kmalloc(2048)/kfree -\u003e 82 cycles\n10000 times kmalloc(4096)/kfree -\u003e 85 cycles\n10000 times kmalloc(8192)/kfree -\u003e 82 cycles\n10000 times kmalloc(16384)/kfree -\u003e 706 cycles\n\nKmalloc: Repeatedly allocate then free test\n\nBefore:\n\n10000 times kmalloc(8) -\u003e 211 cycles kfree -\u003e 113 cycles\n10000 times kmalloc(16) -\u003e 174 cycles kfree -\u003e 115 cycles\n10000 times kmalloc(32) -\u003e 235 cycles kfree -\u003e 129 cycles\n10000 times kmalloc(64) -\u003e 222 cycles kfree -\u003e 120 cycles\n10000 times kmalloc(128) -\u003e 343 cycles kfree -\u003e 139 cycles\n10000 times kmalloc(256) -\u003e 827 cycles kfree -\u003e 147 cycles\n10000 times kmalloc(512) -\u003e 1048 cycles kfree -\u003e 272 cycles\n10000 times kmalloc(1024) -\u003e 2043 cycles kfree -\u003e 528 cycles\n10000 times kmalloc(2048) -\u003e 4002 cycles kfree -\u003e 571 cycles\n10000 times kmalloc(4096) -\u003e 7740 cycles kfree -\u003e 628 cycles\n10000 times kmalloc(8192) -\u003e 8062 cycles kfree -\u003e 850 cycles\n10000 times kmalloc(16384) -\u003e 8895 cycles kfree -\u003e 1249 cycles\n\nAfter:\n\n10000 times kmalloc(8) -\u003e 190 cycles kfree -\u003e 129 cycles\n10000 times kmalloc(16) -\u003e 76 cycles kfree -\u003e 123 cycles\n10000 times kmalloc(32) -\u003e 126 cycles kfree -\u003e 124 cycles\n10000 times kmalloc(64) -\u003e 181 cycles kfree -\u003e 128 cycles\n10000 times kmalloc(128) -\u003e 310 cycles kfree -\u003e 140 cycles\n10000 times kmalloc(256) -\u003e 809 cycles kfree -\u003e 165 cycles\n10000 times kmalloc(512) -\u003e 1005 cycles kfree -\u003e 269 cycles\n10000 times kmalloc(1024) -\u003e 1999 cycles kfree -\u003e 527 cycles\n10000 times kmalloc(2048) -\u003e 3967 cycles kfree -\u003e 570 cycles\n10000 times kmalloc(4096) -\u003e 7658 cycles kfree -\u003e 637 cycles\n10000 times kmalloc(8192) -\u003e 8111 cycles kfree -\u003e 859 cycles\n10000 times kmalloc(16384) -\u003e 8791 cycles kfree -\u003e 1173 cycles\n\nSigned-off-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "d3f661d69a486db0e0e6343b452f45d91b4b3656",
      "tree": "4b4c882c8690b52b922214f5864d9a678c0c2a06",
      "parents": [
        "1a757fe5d4234293d6a3acccd7196f1386443956"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux.com",
        "time": "Fri Feb 25 11:38:52 2011 -0600"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Fri Mar 11 17:42:49 2011 +0200"
      },
      "message": "slub: Get rid of slab_free_hook_irq()\n\nThe following patch will make the fastpaths lockless and will no longer\nrequire interrupts to be disabled. Calling the free hook with irq disabled\nwill no longer be possible.\n\nMove the slab_free_hook_irq() logic into slab_free_hook. Only disable\ninterrupts if the features are selected that require callbacks with\ninterrupts off and reenable after calls have been made.\n\nSigned-off-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "d71f606f687ef9d0cdddfd3619ca7cb9a0b3fb63",
      "tree": "524dc52d81134124fd8907d74474c09d518a5b3d",
      "parents": [
        "b3d41885d9cd0d9db31c8f49e362bae02c96fa3f"
      ],
      "author": {
        "name": "Mariusz Kozlowski",
        "email": "mk@lab.zgora.pl",
        "time": "Sat Feb 26 20:10:26 2011 +0100"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Sun Feb 27 12:05:16 2011 +0200"
      },
      "message": "slub: fix ksize() build error\n\nmm/slub.c: In function \u0027ksize\u0027:\nmm/slub.c:2728: error: implicit declaration of function \u0027slab_ksize\u0027\n\nslab_ksize() needs to go out of CONFIG_SLUB_DEBUG section.\n\nAcked-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nAcked-by: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Mariusz Kozlowski \u003cmk@lab.zgora.pl\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "b3d41885d9cd0d9db31c8f49e362bae02c96fa3f",
      "tree": "ab8f134456c9ae06ee0532a8ff0b7296e4d51c16",
      "parents": [
        "63310467a3d1ed6a0460ec1f4268126cd1ceec2e"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Mon Feb 14 18:35:22 2011 +0100"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Wed Feb 23 11:59:30 2011 +0200"
      },
      "message": "slub: fix kmemcheck calls to match ksize() hints\n\nRecent use of ksize() in network stack (commit ca44ac38 : net: don\u0027t\nreallocate skb-\u003ehead unless the current one hasn\u0027t the needed extra size\nor is shared) triggers kmemcheck warnings, because ksize() can return\nmore space than kmemcheck is aware of.\n\nPekka Enberg noticed SLAB+kmemcheck is doing the right thing, while SLUB\n+kmemcheck doesnt.\n\nBugzilla reference #27212\n\nReported-by: Christian Casteyde \u003ccasteyde.christian@free.fr\u003e\nSuggested-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nAcked-by: David S. Miller \u003cdavem@davemloft.net\u003e\nAcked-by: David Rientjes \u003crientjes@google.com\u003e\nAcked-by: Christoph Lameter \u003ccl@linux.com\u003e\nCC: Changli Gao \u003cxiaosuo@gmail.com\u003e\nCC: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "63310467a3d1ed6a0460ec1f4268126cd1ceec2e",
      "tree": "f5bf7e48fe119bffe1111b50767280c4af310505",
      "parents": [
        "1bae4ce27c9c90344f23c65ea6966c50ffeae2f5"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux.com",
        "time": "Thu Jan 20 11:12:26 2011 -0600"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Sun Jan 23 21:00:05 2011 +0200"
      },
      "message": "mm: Remove support for kmem_cache_name()\n\nThe last user was ext4 and Eric Sandeen removed the call in a recent patch. See\nthe following URL for the discussion:\n\nhttp://marc.info/?l\u003dlinux-ext4\u0026m\u003d129546975702198\u0026w\u003d2\n\nSigned-off-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "597fb188cbee2d371246e1669bbc6051bb666aa9",
      "tree": "fd9cb605050ca15274cf391dc6bd4073d04808df",
      "parents": [
        "38567333a6dabd0f2b4150e9fb6dd8e3ba2985e5",
        "04d94879c8a4973b5499dc26b9d38acee8928791"
      ],
      "author": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Sat Jan 15 13:28:17 2011 +0200"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Sat Jan 15 13:28:17 2011 +0200"
      },
      "message": "Merge branch \u0027slub/hotplug\u0027 into slab/urgent\n"
    },
    {
      "commit": "62c70bce8ac236514c610020bb1ae5b8bde965cb",
      "tree": "24f13ae48325034f9a8c4385669adcef545b4836",
      "parents": [
        "c32b0d4b3f19c2f5d29568f8b7b72b61693f1277"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Thu Jan 13 15:45:52 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:33 2011 -0800"
      },
      "message": "mm: convert sprintf_symbol to %pS\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nAcked-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\nCc: Jiri Kosina \u003ctrivial@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "04d94879c8a4973b5499dc26b9d38acee8928791",
      "tree": "f6220743a65a2ac24b783884593460cb0467ecc7",
      "parents": [
        "925268a06dc2b1ff7bfcc37419a6827a0e739639"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux.com",
        "time": "Mon Jan 10 10:15:15 2011 -0600"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Tue Jan 11 17:09:53 2011 +0200"
      },
      "message": "slub: Avoid use of slub_lock in show_slab_objects()\n\nThe purpose of the locking is to prevent removal and additions\nof nodes when statistics are gathered for a slab cache. So we\nneed to avoid racing with memory hotplug functionality.\n\nIt is enough to take the memory hotplug locks there instead\nof the slub_lock.\n\nonline_pages() currently does not acquire the memory_hotplug\nlock. Another patch will be submitted by the memory hotplug\nauthors to take the memory hotplug lock and describe the\nuses of the memory hotplug lock to protect against\nadding and removal of nodes from non hotplug data structures.\n\nCc: \u003cstable@kernel.org\u003e # 2.6.37\nReported-and-tested-by: Bart Van Assche \u003cbvanassche@acm.org\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": "a1e8fad5900fa94adb500c6e0dfd60a307f7a3c9",
      "tree": "c619277e587a99c90e76a1e7b63746af4d959d72",
      "parents": [
        "e3166331a3288dd7184548896a1c7ab682f0dbe8",
        "a45b0616e7ee9db4c1b2b9a4a79a974325fa9bf3"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jan 10 08:38:01 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jan 10 08:38:01 2011 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/slab-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/slab-2.6:\n  slub: Fix a crash during slabinfo -v\n  tracing/slab: Move kmalloc tracepoint out of inline code\n  slub: Fix slub_lock down/up imbalance\n  slub: Fix build breakage in Documentation/vm\n  slub tracing: move trace calls out of always inlined functions to reduce kernel code size\n  slub: move slabinfo.c to tools/slub/slabinfo.c\n"
    },
    {
      "commit": "ccd35fb9f4da856b105ea0f1e0cab3702e8ae6ba",
      "tree": "acb71aa4ae7d1f1ed17bdd79033a6bad5e27186d",
      "parents": [
        "786a5e15b613a9cee4fc9139fc3113a5ab0fde79"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:17 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:16 2011 +1100"
      },
      "message": "kernel: kmem_ptr_validate considered harmful\n\nThis is a nasty and error prone API. It is no longer used, remove it.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "37d57443d5d810c6ef49e93586b046e7d4774818",
      "tree": "6ec5560ce1a496639ec957735288ba703133a83a",
      "parents": [
        "e8a7e48bb248a1196484d3f8afa53bded2b24e71"
      ],
      "author": {
        "name": "Tero Roponen",
        "email": "tero.roponen@gmail.com",
        "time": "Wed Dec 01 20:04:20 2010 +0200"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Sat Dec 04 09:53:49 2010 +0200"
      },
      "message": "slub: Fix a crash during slabinfo -v\n\nCommit f7cb1933621bce66a77f690776a16fe3ebbc4d58 (\"SLUB: Pass active\nand inactive redzone flags instead of boolean to debug functions\")\nmissed two instances of check_object(). This caused a lot of warnings\nduring \u0027slabinfo -v\u0027 finally leading to a crash:\n\n  BUG ext4_xattr: Freepointer corrupt\n  ...\n  BUG buffer_head: Freepointer corrupt\n  ...\n  BUG ext4_alloc_context: Freepointer corrupt\n  ...\n  ...\n  BUG: unable to handle kernel NULL pointer dereference at 0000000000000008\n  IP: [\u003cffffffff810a291f\u003e] file_sb_list_del+0x1c/0x35\n  PGD 79d78067 PUD 79e67067 PMD 0\n  Oops: 0002 [#1] SMP\n  last sysfs file: /sys/kernel/slab/:t-0000192/validate\n\nThis patch fixes the problem by converting the two missed instances.\n\nAcked-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Tero Roponen \u003ctero.roponen@gmail.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "8165984acf825917437debae519209073c32a5a7",
      "tree": "b4322432ad62529a7eee6b9621473a9e1b58be3c",
      "parents": [
        "85beb5869a4f6abb52a7cf8e01de6fa57e9ee47d"
      ],
      "author": {
        "name": "Tero Roponen",
        "email": "tero.roponen@gmail.com",
        "time": "Wed Dec 01 20:04:20 2010 +0200"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Sat Dec 04 09:40:16 2010 +0200"
      },
      "message": "slub: Fix a crash during slabinfo -v\n\nCommit f7cb1933621bce66a77f690776a16fe3ebbc4d58 (\"SLUB: Pass active\nand inactive redzone flags instead of boolean to debug functions\")\nmissed two instances of check_object(). This caused a lot of warnings\nduring \u0027slabinfo -v\u0027 finally leading to a crash:\n\n  BUG ext4_xattr: Freepointer corrupt\n  ...\n  BUG buffer_head: Freepointer corrupt\n  ...\n  BUG ext4_alloc_context: Freepointer corrupt\n  ...\n  ...\n  BUG: unable to handle kernel NULL pointer dereference at 0000000000000008\n  IP: [\u003cffffffff810a291f\u003e] file_sb_list_del+0x1c/0x35\n  PGD 79d78067 PUD 79e67067 PMD 0\n  Oops: 0002 [#1] SMP\n  last sysfs file: /sys/kernel/slab/:t-0000192/validate\n\nThis patch fixes the problem by converting the two missed instances.\n\nAcked-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Tero Roponen \u003ctero.roponen@gmail.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "68cee4f118c21a1c67e5764a91d766661db5b360",
      "tree": "17c487ce969cc66a4be5048ed12cb5ec070c2fc2",
      "parents": [
        "c8ddb2713c624f432fa5fe3c7ecffcdda46ea0d4"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@parallels.com",
        "time": "Thu Oct 28 13:50:37 2010 +0400"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Sun Nov 14 16:53:11 2010 +0200"
      },
      "message": "slub: Fix slub_lock down/up imbalance\n\nThere are two places, that do not release the slub_lock.\n\nRespective bugs were introduced by sysfs changes ab4d5ed5 (slub: Enable\nsysfs support for !CONFIG_SLUB_DEBUG) and 2bce6485 ( slub: Allow removal\nof slab caches during boot).\n\nAcked-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "98072e4d977aabe6a39abb95951cd8bf2c2202d5",
      "tree": "a4bbecec358e8ef295ac6df3e626a16218f2d98d",
      "parents": [
        "716ce5d4a6f81653507c21b152eb7629d150ce7a"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@parallels.com",
        "time": "Thu Oct 28 13:50:37 2010 +0400"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Sat Nov 06 09:04:33 2010 +0200"
      },
      "message": "slub: Fix slub_lock down/up imbalance\n\nThere are two places, that do not release the slub_lock.\n\nRespective bugs were introduced by sysfs changes ab4d5ed5 (slub: Enable\nsysfs support for !CONFIG_SLUB_DEBUG) and 2bce6485 ( slub: Allow removal\nof slab caches during boot).\n\nAcked-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "4a92379bdfb48680a5e6775dd53a586df7b6b0b1",
      "tree": "5ca6d2ace37b081a2b00d22014fcd27c6ad74c46",
      "parents": [
        "0d24db337e6d81c0c620ab65cc6947bd6553f742"
      ],
      "author": {
        "name": "Richard Kennedy",
        "email": "richard@rsk.demon.co.uk",
        "time": "Thu Oct 21 10:29:19 2010 +0100"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Sat Nov 06 09:04:33 2010 +0200"
      },
      "message": "slub tracing: move trace calls out of always inlined functions to reduce kernel code size\n\nHaving the trace calls defined in the always inlined kmalloc functions\nin include/linux/slub_def.h causes a lot of code duplication as the\ntrace functions get instantiated for each kamalloc call site. This can\nsimply be removed by pushing the trace calls down into the functions in\nslub.c.\n\nOn my x86_64 built this patch shrinks the code size of the kernel by\napprox 36K and also shrinks the code size of many modules -- too many to\nlist here ;)\n\nsize vmlinux (2.6.36) reports\n       text        data     bss     dec     hex filename\n    5410611\t 743172\t 828928\t6982711\t 6a8c37\tvmlinux\n    5373738\t 744244\t 828928\t6946910\t 6a005e\tvmlinux + patch\n\nThe resulting kernel has had some testing \u0026 kmalloc trace still seems to\nwork.\n\nThis patch\n- moves trace_kmalloc out of the inlined kmalloc() and pushes it down\ninto kmem_cache_alloc_trace() so this it only get instantiated once.\n\n- rename kmem_cache_alloc_notrace()  to kmem_cache_alloc_trace() to\nindicate that now is does have tracing. (maybe this would better being\ncalled something like kmalloc_kmem_cache ?)\n\n- adds a new function kmalloc_order() to handle allocation and tracing\nof large allocations of page order.\n\n- removes tracing from the inlined kmalloc_large() replacing them with a\ncall to kmalloc_order();\n\n- move tracing out of inlined kmalloc_node() and pushing it down into\nkmem_cache_alloc_node_trace\n\n- rename kmem_cache_alloc_node_notrace() to\nkmem_cache_alloc_node_trace()\n\n- removes the include of trace/events/kmem.h from slub_def.h.\n\nv2\n- keep kmalloc_order_trace inline when !CONFIG_TRACE\n\nSigned-off-by: Richard Kennedy \u003crichard@rsk.demon.co.uk\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "92a5bbc11ff2442a54b2f1d313088c245828ef4e",
      "tree": "282d34001447c8bdac1efe35bb04286788b6cdc9",
      "parents": [
        "a5a84755c5900416dce0166ac825866aad8048ef"
      ],
      "author": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Wed Oct 06 16:58:16 2010 +0300"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Wed Oct 06 21:16:42 2010 +0300"
      },
      "message": "SLUB: Fix memory hotplug with !NUMA\n\nThis patch fixes the following build breakage when memory hotplug is enabled on\nUMA configurations:\n\n  /home/test/linux-2.6/mm/slub.c: In function \u0027kmem_cache_init\u0027:\n  /home/test/linux-2.6/mm/slub.c:3031:2: error: \u0027slab_memory_callback\u0027\n  undeclared (first use in this function)\n  /home/test/linux-2.6/mm/slub.c:3031:2: note: each undeclared\n  identifier is reported only once for each function it appears in\n  make[2]: *** [mm/slub.o] Error 1\n  make[1]: *** [mm] Error 2\n  make: *** [sub-make] Error 2\n\nReported-by: Zimny Lech \u003cnapohybelskurwysynom2010@gmail.com\u003e\nAcked-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "a5a84755c5900416dce0166ac825866aad8048ef",
      "tree": "d2d76f4aa663695790aa05dbac3800d7f2884c5f",
      "parents": [
        "ab4d5ed5eeda4f57c50d14131ce1b1da75d0c938"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux.com",
        "time": "Tue Oct 05 13:57:27 2010 -0500"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Wed Oct 06 16:54:37 2010 +0300"
      },
      "message": "slub: Move functions to reduce #ifdefs\n\nThere is a lot of #ifdef/#endifs that can be avoided if functions would be in different\nplaces. Move them around and reduce #ifdef.\n\nSigned-off-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "ab4d5ed5eeda4f57c50d14131ce1b1da75d0c938",
      "tree": "e0c574c802138d9b6514dae4f2c46fcc6365b951",
      "parents": [
        "15b7c5142049e7efc3071280e1370dc3b8add6f5"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux.com",
        "time": "Tue Oct 05 13:57:26 2010 -0500"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Wed Oct 06 16:54:36 2010 +0300"
      },
      "message": "slub: Enable sysfs support for !CONFIG_SLUB_DEBUG\n\nCurrently disabling CONFIG_SLUB_DEBUG also disabled SYSFS support meaning\nthat the slabs cannot be tuned without DEBUG.\n\nMake SYSFS support independent of CONFIG_SLUB_DEBUG\n\nSigned-off-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "15b7c5142049e7efc3071280e1370dc3b8add6f5",
      "tree": "c294e0aa90b52088e63c8c67d0963a973d304690",
      "parents": [
        "5d1f57e4d3d547b113ebd62f569be13bf485e53b"
      ],
      "author": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Sat Oct 02 11:32:32 2010 +0300"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Wed Oct 06 16:52:26 2010 +0300"
      },
      "message": "SLUB: Optimize slab_free() debug check\n\nThis patch optimizes slab_free() debug check to use \"c-\u003enode !\u003d NUMA_NO_NODE\"\ninstead of \"c-\u003enode \u003e\u003d 0\" because the former generates smaller code on x86-64:\n\n  Before:\n\n    4736:       48 39 70 08             cmp    %rsi,0x8(%rax)\n    473a:       75 26                   jne    4762 \u003ckfree+0xa2\u003e\n    473c:       44 8b 48 10             mov    0x10(%rax),%r9d\n    4740:       45 85 c9                test   %r9d,%r9d\n    4743:       78 1d                   js     4762 \u003ckfree+0xa2\u003e\n\n  After:\n\n    4736:       48 39 70 08             cmp    %rsi,0x8(%rax)\n    473a:       75 23                   jne    475f \u003ckfree+0x9f\u003e\n    473c:       83 78 10 ff             cmpl   $0xffffffffffffffff,0x10(%rax)\n    4740:       74 1d                   je     475f \u003ckfree+0x9f\u003e\n\nThis patch also cleans up __slab_alloc() to use NUMA_NO_NODE instead of \"-1\"\nfor enabling debugging for a per-CPU cache.\n\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": "5d1f57e4d3d547b113ebd62f569be13bf485e53b",
      "tree": "b97e925dc448129a8b30abb35597bde154042eef",
      "parents": [
        "3478973dedee5e957c45dc93c11d12dc3f733ee0"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Wed Sep 29 21:02:15 2010 +0900"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Sat Oct 02 10:47:53 2010 +0300"
      },
      "message": "slub: Move NUMA-related functions under CONFIG_NUMA\n\nMake kmalloc_cache_alloc_node_notrace(), kmalloc_large_node()\nand __kmalloc_node_track_caller() to be compiled only when\nCONFIG_NUMA is selected.\n\nAcked-by: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "3478973dedee5e957c45dc93c11d12dc3f733ee0",
      "tree": "a90878879ef689df232b9ad9288b8b5052b78651",
      "parents": [
        "a5dd5c117cbf620378d693963ffc42239297fac4"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Wed Sep 29 21:02:14 2010 +0900"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Sat Oct 02 10:47:53 2010 +0300"
      },
      "message": "slub: Add lock release annotation\n\nThe unfreeze_slab() releases page\u0027s PG_locked bit but was missing\nproper annotation. The deactivate_slab() needs to be marked also\nsince it calls unfreeze_slab() without grabbing the lock.\n\nAcked-by: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "a5dd5c117cbf620378d693963ffc42239297fac4",
      "tree": "12dc4b1bc7da97acebb04afabd07b20cc6642a3b",
      "parents": [
        "62e346a83026a28526fc9799337bcc6154819f25"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Wed Sep 29 21:02:13 2010 +0900"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Sat Oct 02 10:47:52 2010 +0300"
      },
      "message": "slub: Fix signedness warnings\n\nThe bit-ops routines require its arg to be a pointer to unsigned long.\nThis leads sparse to complain about different signedness as follows:\n\n mm/slub.c:2425:49: warning: incorrect type in argument 2 (different signedness)\n mm/slub.c:2425:49:    expected unsigned long volatile *addr\n mm/slub.c:2425:49:    got long *map\n\nAcked-by: Christoph Lameter \u003ccl@linux.com\u003e\nAcked-by: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "62e346a83026a28526fc9799337bcc6154819f25",
      "tree": "04514b189c3005bca093149769a117117ec0dff0",
      "parents": [
        "f7cb1933621bce66a77f690776a16fe3ebbc4d58"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux.com",
        "time": "Tue Sep 28 08:10:28 2010 -0500"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Sat Oct 02 10:44:10 2010 +0300"
      },
      "message": "slub: extract common code to remove objects from partial list without locking\n\nThere are a couple of places where repeat the same statements when removing\na page from the partial list. Consolidate that into __remove_partial().\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": "f7cb1933621bce66a77f690776a16fe3ebbc4d58",
      "tree": "7d78e7bc0f985abdf8e9fe281b0c0b4b0bcc7ced",
      "parents": [
        "7340cc84141d5236c5dd003359ee921513cd9b84"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux.com",
        "time": "Wed Sep 29 07:15:01 2010 -0500"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Sat Oct 02 10:44:10 2010 +0300"
      },
      "message": "SLUB: Pass active and inactive redzone flags instead of boolean to debug functions\n\nPass the actual values used for inactive and active redzoning to the\nfunctions that check the objects. Avoids a lot of the ? : things to\nlookup the values in the functions.\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": "7340cc84141d5236c5dd003359ee921513cd9b84",
      "tree": "fec0ddb018a948773df32cf109c15f4bd596c97d",
      "parents": [
        "ed59ecbf8904a40cf0a1ee5d6f100d76d2f44e5f"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux.com",
        "time": "Tue Sep 28 08:10:26 2010 -0500"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Sat Oct 02 10:44:10 2010 +0300"
      },
      "message": "slub: reduce differences between SMP and NUMA\n\nReduce the #ifdefs and simplify bootstrap by making SMP and NUMA as much alike\nas possible. This means that there will be an additional indirection to get to\nthe kmem_cache_node field under SMP.\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": "ed59ecbf8904a40cf0a1ee5d6f100d76d2f44e5f",
      "tree": "6f7eb1efc1cec284ce3762702ef2545bbeaafa10",
      "parents": [
        "ed6c1115c835d822ec5d6356ae3043de54088f43"
      ],
      "author": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Sat Sep 18 20:45:06 2010 +0300"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Sat Oct 02 10:28:55 2010 +0300"
      },
      "message": "Revert \"Slub: UP bandaid\"\n\nThis reverts commit 5249d039500f05a5ab379286b1d23ab9b04d3f2c. It\u0027s not needed\nafter commit bbddff0545878a8649c091a9dd7c43ce91516734 (\"percpu: use percpu\nallocator on UP too\").\n"
    },
    {
      "commit": "84c1cf62465e2fb0a692620dcfeb52323ab03d48",
      "tree": "704f4c7f7f0403aadd62be42d2e9d87abf2926fc",
      "parents": [
        "db210e70e5f191710a3b1d09f653b44885d397ea"
      ],
      "author": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Tue Sep 14 23:21:12 2010 +0300"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Sat Oct 02 10:24:29 2010 +0300"
      },
      "message": "SLUB: Fix merged slab cache names\n\nAs explained by Linus \"I\u0027m Proud to be an American\" Torvalds:\n\n  Looking at the merging code, I actually think it\u0027s totally\n  buggy. If you have something like this:\n\n   - load module A: create slab cache A\n\n   - load module B: create slab cache B that can merge with A\n\n   - unload module A\n\n   - \"cat /proc/slabinfo\": BOOM. Oops.\n\n  exactly because the name is not handled correctly, and you\u0027ll have\n  module B holding open a slab cache that has a name pointer that points\n  to module A that no longer exists.\n\nThis patch fixes the problem by using kstrdup() to allocate dynamic memory for\n-\u003ename of \"struct kmem_cache\" as suggested by Christoph Lameter.\n\nAcked-by: Christoph Lameter \u003ccl@linux.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nReported-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n\nConflicts:\n\n\tmm/slub.c\n"
    }
  ],
  "next": "db210e70e5f191710a3b1d09f653b44885d397ea"
}
