)]}'
{
  "log": [
    {
      "commit": "59bfbcf01967d4d3370a2b8294673dd709e732cc",
      "tree": "e868c63aadb6cb943e457ed2e16fcefc151243aa",
      "parents": [
        "415586c9e6d35ca116af714d7d0bea9c9f998ce5"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 13 14:59:49 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 13 15:21:49 2013 -0700"
      },
      "message": "idr: idr_alloc() shouldn\u0027t trigger lowmem warning when preloaded\n\nGFP_NOIO is often used for idr_alloc() inside preloaded section as the\nallocation mask doesn\u0027t really matter.  If the idr tree needs to be\nexpanded, idr_alloc() first tries to allocate using the specified\nallocation mask and if it fails falls back to the preloaded buffer.  This\norder prevent non-preloading idr_alloc() users from taking advantage of\npreloading ones by using preload buffer without filling it shifting the\nburden of allocation to the preload users.\n\nUnfortunately, this allowed/expected-to-fail kmem_cache allocation ends up\ngenerating spurious slab lowmem warning before succeeding the request from\nthe preload buffer.\n\nThis patch makes idr_layer_alloc() add __GFP_NOWARN to the first\nkmem_cache attempt and try kmem_cache again w/o __GFP_NOWARN after\nallocation from preload_buffer fails so that lowmem warning is generated\nif not suppressed by the original @gfp_mask.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReported-by: David Teigland \u003cteigland@redhat.com\u003e\nTested-by: David Teigland \u003cteigland@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c8615d3716fe327c2540cf514a34b227dc9b39e8",
      "tree": "2ad264bec1623c7b0cf43998b74654dd627a6e24",
      "parents": [
        "8e467e855ca5ed2921f290655f96ac40d5dc571c"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 13 14:59:42 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 13 15:21:47 2013 -0700"
      },
      "message": "idr: deprecate idr_pre_get() and idr_get_new[_above]()\n\nNow that all in-kernel users are converted to ues the new alloc\ninterface, mark the old interface deprecated.  We should be able to\nremove these in a few releases.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5857f70c8a62377c2304d8ad27e579881728fc5a",
      "tree": "81b82656af2594c4f204f36fa4071dfb2c0dc35c",
      "parents": [
        "a3633f6730239e7d39316aeb119c1bb9e1e83d66"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "rdunlap@infradead.org",
        "time": "Mon Mar 04 14:32:54 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Mar 12 20:42:09 2013 -0700"
      },
      "message": "idr: fix new kernel-doc warnings\n\nFix new kernel-doc warnings in idr:\n\n  Warning(include/linux/idr.h:113): No description found for parameter \u0027idr\u0027\n  Warning(include/linux/idr.h:113): Excess function parameter \u0027idp\u0027 description in \u0027idr_find\u0027\n  Warning(lib/idr.c:232): Excess function parameter \u0027id\u0027 description in \u0027sub_alloc\u0027\n  Warning(lib/idr.c:232): Excess function parameter \u0027id\u0027 description in \u0027sub_alloc\u0027\n\nSigned-off-by: Randy Dunlap \u003crdunlap@infradead.org\u003e\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2e1c9b2867656ff9a469d23e1dfe90cf77ec0c72",
      "tree": "b1f8c8a5fde730b2e3c71239e125e451df039fa5",
      "parents": [
        "7880639c3e4fde5953ff243ee52204ddc5af641b"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Mar 08 12:43:30 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 08 15:05:34 2013 -0800"
      },
      "message": "idr: remove WARN_ON_ONCE() on negative IDs\n\nidr_find(), idr_remove() and idr_replace() used to silently ignore the\nsign bit and perform lookup with the rest of the bits.  The weird behavior\nhas been changed such that negative IDs are treated as invalid.  As the\nbehavior change was subtle, WARN_ON_ONCE() was added in the hope of\ndetermining who\u0027s calling idr functions with negative IDs so that they can\nbe examined for problems.\n\nUp until now, all two reported cases are ID number coming directly from\nuserland and getting fed into idr_find() and the warnings seem to cause\nmore problems than being helpful.  Drop the WARN_ON_ONCE()s.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReported-by: \u003cmarkus@trippelsdorf.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7175c61cc6b8e701441e79ef048c11ae97293463",
      "tree": "515c24958e871c550b3b7f0c2356b4909ba83d61",
      "parents": [
        "0ffc2a9c8072969253a20821c2c733a2cbb4c7c7"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Feb 27 17:05:10 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 27 19:10:21 2013 -0800"
      },
      "message": "idr: explain WARN_ON_ONCE() on negative IDs out-of-range ID\n\nUntil recently, when an negative ID is specified, idr functions used to\nignore the sign bit and proceeded with the operation with the rest of\nbits, which is bizarre and error-prone.  The behavior recently got changed\nso that negative IDs are treated as invalid but we\u0027re triggering\nWARN_ON_ONCE() on negative IDs just in case somebody was depending on the\nsign bit being ignored, so that those can be detected and fixed easily.\n\nWe only need this for a while.  Explain why WARN_ON_ONCE()s are there and\nthat they can be removed later.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0ffc2a9c8072969253a20821c2c733a2cbb4c7c7",
      "tree": "ff6a9d270d4f0fa5c770837c6d9e5d5aac2637a7",
      "parents": [
        "54616283c2948812a44240858ced610e7cacbde1"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Feb 27 17:05:08 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 27 19:10:21 2013 -0800"
      },
      "message": "idr: implement lookup hint\n\nWhile idr lookup isn\u0027t a particularly heavy operation, it still is too\nsubstantial to use in hot paths without worrying about the performance\nimplications.  With recent changes, each idr_layer covers 256 slots\nwhich should be enough to cover most use cases with single idr_layer\nmaking lookup hint very attractive.\n\nThis patch adds idr-\u003ehint which points to the idr_layer which\nallocated an ID most recently and the fast path lookup becomes\n\n\tif (look up target\u0027s prefix matches that of the hinted layer)\n\t\treturn hint-\u003eary[ID\u0027s offset in the leaf layer];\n\nwhich can be inlined.\n\nidr-\u003ehint is set to the leaf node on idr_fill_slot() and cleared from\nfree_layer().\n\n[andriy.shevchenko@linux.intel.com: always do slow path when hint is uninitialized]\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Kirill A. Shutemov \u003ckirill.shutemov@linux.intel.com\u003e\nCc: Sasha Levin \u003csasha.levin@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "54616283c2948812a44240858ced610e7cacbde1",
      "tree": "268bbe9049d9370d5b644dfde51fc4a8942bae3b",
      "parents": [
        "050a6b47d98e2bcea909c1129111e721668aaa2c"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Feb 27 17:05:07 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 27 19:10:20 2013 -0800"
      },
      "message": "idr: add idr_layer-\u003eprefix\n\nAdd a field which carries the prefix of ID the idr_layer covers.  This\nwill be used to implement lookup hint.\n\nThis patch doesn\u0027t make use of the new field and doesn\u0027t introduce any\nbehavior difference.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1d9b2e1e663719d406e3a770979a19ba4233bba0",
      "tree": "359bf3e2dce77fda66d42296992e705f0b305ea1",
      "parents": [
        "e8c8d1bc063bc88cfa1356266027b5075d3a82d7"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Feb 27 17:05:05 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 27 19:10:20 2013 -0800"
      },
      "message": "idr: remove length restriction from idr_layer-\u003ebitmap\n\nCurrently, idr-\u003ebitmap is declared as an unsigned long which restricts\nthe number of bits an idr_layer can contain.  All bitops can handle\narbitrary positive integer bit number and there\u0027s no reason for this\nrestriction.\n\nDeclare idr_layer-\u003ebitmap using DECLARE_BITMAP() instead of a single\nunsigned long.\n\n* idr_layer-\u003ebitmap is now an array.  \u0027\u0026\u0027 dropped from params to\n  bitops.\n\n* Replaced \"\u003d\u003d IDR_FULL\" tests with bitmap_full() and removed\n  IDR_FULL.\n\n* Replaced find_next_bit() on ~bitmap with find_next_zero_bit().\n\n* Replaced \"bitmap \u003d 0\" with bitmap_clear().\n\nThis patch doesn\u0027t (or at least shouldn\u0027t) introduce any behavior\nchanges.\n\n[akpm@linux-foundation.org: checkpatch fixes]\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e8c8d1bc063bc88cfa1356266027b5075d3a82d7",
      "tree": "b657e3a3aa9eb8499690bb2fc0cbd908cdd2a334",
      "parents": [
        "326cf0f0f308933c10236280a322031f0097205d"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Feb 27 17:05:04 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 27 19:10:20 2013 -0800"
      },
      "message": "idr: remove MAX_IDR_MASK and move left MAX_IDR_* into idr.c\n\nMAX_IDR_MASK is another weirdness in the idr interface.  As idr covers\nwhole positive integer range, it\u0027s defined as 0x7fffffff or INT_MAX.\n\nIts usage in idr_find(), idr_replace() and idr_remove() is bizarre.\nThey basically mask off the sign bit and operate on the rest, so if\nthe caller, by accident, passes in a negative number, the sign bit\nwill be masked off and the remaining part will be used as if that was\nthe input, which is worse than crashing.\n\nThe constant is visible in idr.h and there are several users in the\nkernel.\n\n* drivers/i2c/i2c-core.c:i2c_add_numbered_adapter()\n\n  Basically used to test if adap-\u003enr is a negative number which isn\u0027t\n  -1 and returns -EINVAL if so.  idr_alloc() already has negative\n  @start checking (w/ WARN_ON_ONCE), so this can go away.\n\n* drivers/infiniband/core/cm.c:cm_alloc_id()\n  drivers/infiniband/hw/mlx4/cm.c:id_map_alloc()\n\n  Used to wrap cyclic @start.  Can be replaced with max(next, 0).\n  Note that this type of cyclic allocation using idr is buggy.  These\n  are prone to spurious -ENOSPC failure after the first wraparound.\n\n* fs/super.c:get_anon_bdev()\n\n  The ID allocated from ida is masked off before being tested whether\n  it\u0027s inside valid range.  ida allocated ID can never be a negative\n  number and the masking is unnecessary.\n\nUpdate idr_*() functions to fail with -EINVAL when negative @id is\nspecified and update other MAX_IDR_MASK users as described above.\n\nThis leaves MAX_IDR_MASK without any user, remove it and relocate\nother MAX_IDR_* constants to lib/idr.c.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Jean Delvare \u003ckhali@linux-fr.org\u003e\nCc: Roland Dreier \u003croland@kernel.org\u003e\nCc: Sean Hefty \u003csean.hefty@intel.com\u003e\nCc: Hal Rosenstock \u003chal.rosenstock@gmail.com\u003e\nCc: \"Marciniszyn, Mike\" \u003cmike.marciniszyn@intel.com\u003e\nCc: Jack Morgenstein \u003cjackm@dev.mellanox.co.il\u003e\nCc: Or Gerlitz \u003cogerlitz@mellanox.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nAcked-by: Wolfram Sang \u003cwolfram@the-dreams.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "326cf0f0f308933c10236280a322031f0097205d",
      "tree": "825944061a5ae023809fe9a8bb0f35d0a06ef579",
      "parents": [
        "d6870312659d8c6e80419ddb09d366bdd0f17ab6"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Feb 27 17:05:02 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 27 19:10:20 2013 -0800"
      },
      "message": "idr: fix top layer handling\n\nMost functions in idr fail to deal with the high bits when the idr\ntree grows to the maximum height.\n\n* idr_get_empty_slot() stops growing idr tree once the depth reaches\n  MAX_IDR_LEVEL - 1, which is one depth shallower than necessary to\n  cover the whole range.  The function doesn\u0027t even notice that it\n  didn\u0027t grow the tree enough and ends up allocating the wrong ID\n  given sufficiently high @starting_id.\n\n  For example, on 64 bit, if the starting id is 0x7fffff01,\n  idr_get_empty_slot() will grow the tree 5 layer deep, which only\n  covers the 30 bits and then proceed to allocate as if the bit 30\n  wasn\u0027t specified.  It ends up allocating 0x3fffff01 without the bit\n  30 but still returns 0x7fffff01.\n\n* __idr_remove_all() will not remove anything if the tree is fully\n  grown.\n\n* idr_find() can\u0027t find anything if the tree is fully grown.\n\n* idr_for_each() and idr_get_next() can\u0027t iterate anything if the tree\n  is fully grown.\n\nFix it by introducing idr_max() which returns the maximum possible ID\ngiven the depth of tree and replacing the id limit checks in all\naffected places.\n\nAs the idr_layer pointer array pa[] needs to be 1 larger than the\nmaximum depth, enlarge pa[] arrays by one.\n\nWhile this plugs the discovered issues, the whole code base is\nhorrible and in desparate need of rewrite.  It\u0027s fragile like hell,\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: \u003cstable@vger.kernel.org\u003e\n\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d5c7409f79e14db49d00785692334657592c07ff",
      "tree": "9646f4a2934cf4d221f173c17defa22b90585e28",
      "parents": [
        "3594eb2894f571c9b9a497159b1e4d84fdac5688"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Feb 27 17:03:55 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 27 19:10:14 2013 -0800"
      },
      "message": "idr: implement idr_preload[_end]() and idr_alloc()\n\nThe current idr interface is very cumbersome.\n\n* For all allocations, two function calls - idr_pre_get() and\n  idr_get_new*() - should be made.\n\n* idr_pre_get() doesn\u0027t guarantee that the following idr_get_new*()\n  will not fail from memory shortage.  If idr_get_new*() returns\n  -EAGAIN, the caller is expected to retry pre_get and allocation.\n\n* idr_get_new*() can\u0027t enforce upper limit.  Upper limit can only be\n  enforced by allocating and then freeing if above limit.\n\n* idr_layer buffer is unnecessarily per-idr.  Each idr ends up keeping\n  around MAX_IDR_FREE idr_layers.  The memory consumed per idr is\n  under two pages but it makes it difficult to make idr_layer larger.\n\nThis patch implements the following new set of allocation functions.\n\n* idr_preload[_end]() - Similar to radix preload but doesn\u0027t fail.\n  The first idr_alloc() inside preload section can be treated as if it\n  were called with @gfp_mask used for idr_preload().\n\n* idr_alloc() - Allocate an ID w/ lower and upper limits.  Takes\n  @gfp_flags and can be used w/o preloading.  When used inside\n  preloaded section, the allocation mask of preloading can be assumed.\n\nIf idr_alloc() can be called from a context which allows sufficiently\nrelaxed @gfp_mask, it can be used by itself.  If, for example,\nidr_alloc() is called inside spinlock protected region, preloading can\nbe used like the following.\n\n\tidr_preload(GFP_KERNEL);\n\tspin_lock(lock);\n\n\tid \u003d idr_alloc(idr, ptr, start, end, GFP_NOWAIT);\n\n\tspin_unlock(lock);\n\tidr_preload_end();\n\tif (id \u003c 0)\n\t\terror;\n\nwhich is much simpler and less error-prone than idr_pre_get and\nidr_get_new*() loop.\n\nThe new interface uses per-pcu idr_layer buffer and thus the number of\nidr\u0027s in the system doesn\u0027t affect the amount of memory used for\npreloading.\n\nidr_layer_alloc() is introduced to handle idr_layer allocations for\nboth old and new ID allocation paths.  This is a bit hairy now but the\nnew interface is expected to replace the old and the internal\nimplementation eventually will become simpler.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3594eb2894f571c9b9a497159b1e4d84fdac5688",
      "tree": "471f3da090b7b297b3c35e7901c91c3f5042ef52",
      "parents": [
        "12d1b4393e0d8df36b2646a5e512f0513fb532d2"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Feb 27 17:03:54 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 27 19:10:14 2013 -0800"
      },
      "message": "idr: refactor idr_get_new_above()\n\nMove slot filling to idr_fill_slot() from idr_get_new_above_int() and\nmake idr_get_new_above() directly call it.  idr_get_new_above_int() is\nno longer needed and removed.\n\nThis will be used to implement a new ID allocation interface.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "12d1b4393e0d8df36b2646a5e512f0513fb532d2",
      "tree": "a705b06b3d0ece29b0f34fedba87d18543ac1b80",
      "parents": [
        "49038ef4fbe2842bd4d8338f89ec5c9ba71b0ae1"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Feb 27 17:03:53 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 27 19:10:14 2013 -0800"
      },
      "message": "idr: remove _idr_rc_to_errno() hack\n\nidr uses -1, IDR_NEED_TO_GROW and IDR_NOMORE_SPACE to communicate\nexception conditions internally.  The return value is later translated\nto errno values using _idr_rc_to_errno().\n\nThis is confusing.  Drop the custom ones and consistently use -EAGAIN\nfor \"tree needs to grow\", -ENOMEM for \"need more memory\" and -ENOSPC for\n\"ran out of ID space\".\n\nDue to the weird memory preloading mechanism, [ra]_get_new*() return\n-EAGAIN on memory shortage, so we need to substitute -ENOMEM w/\n-EAGAIN on those interface functions.  They\u0027ll eventually be cleaned\nup and the translations will go away.\n\nThis patch doesn\u0027t introduce any functional changes.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "49038ef4fbe2842bd4d8338f89ec5c9ba71b0ae1",
      "tree": "efe83b3396bd93c1154edf1375a899811d62dde3",
      "parents": [
        "4106ecaf59b79efff3f9b466baf9e8c67e19ac5a"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Feb 27 17:03:52 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 27 19:10:14 2013 -0800"
      },
      "message": "idr: relocate idr_for_each_entry() and reorganize id[r|a]_get_new()\n\n* Move idr_for_each_entry() definition next to other idr related\n  definitions.\n\n* Make id[r|a]_get_new() inline wrappers of id[r|a]_get_new_above().\n\nThis changes the implementation of idr_get_new() but the new\nimplementation is trivial.  This patch doesn\u0027t introduce any\nfunctional change.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "fe6e24ec90b753392c3f9ec1fbca196c4e88e511",
      "tree": "6eb4f3e981bfa583e30bf7898342d88031130ffe",
      "parents": [
        "c897ff68beec97768c31f9de97de93f77ff2d87e"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Feb 27 17:03:50 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 27 19:10:14 2013 -0800"
      },
      "message": "idr: deprecate idr_remove_all()\n\nThere was only one legitimate use of idr_remove_all() and a lot more of\nincorrect uses (or lack of it).  Now that idr_destroy() implies\nidr_remove_all() and all the in-kernel users updated not to use it,\nthere\u0027s no reason to keep it around.  Mark it deprecated so that we can\nlater unexport it.\n\nidr_remove_all() is made an inline function calling __idr_remove_all()\nto avoid triggering deprecated warning on EXPORT_SYMBOL().\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9bb26bc1ffa32ec983860a5a66b6f291a875e39d",
      "tree": "e821dc2bc21d6a61ae086d4eb45890f9c9c37920",
      "parents": [
        "6cdae7416a1c45c2ce105a78187d9b7e8feb9e24"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Feb 27 17:03:35 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 27 19:10:13 2013 -0800"
      },
      "message": "idr: make idr_destroy() imply idr_remove_all()\n\nidr is silly in quite a few ways, one of which is how it\u0027s supposed to\nbe destroyed - idr_destroy() doesn\u0027t release IDs and doesn\u0027t even whine\nif the idr isn\u0027t empty.  If the caller forgets idr_remove_all(), it\nsimply leaks memory.\n\nEven ida gets this wrong and leaks memory on destruction.  There is\nabsoltely no reason not to call idr_remove_all() from idr_destroy().\nNobody is abusing idr_destroy() for shrinking free layer buffer and\ncontinues to use idr after idr_destroy(), so it\u0027s safe to do remove_all\nfrom destroy.\n\nIn the whole kernel, there is only one place where idr_remove_all() is\nlegitimiately used without following idr_destroy() while there are quite\na few places where the caller forgets either idr_remove_all() or\nidr_destroy() leaking memory.\n\nThis patch makes idr_destroy() call idr_destroy_all() and updates the\nfunction description accordingly.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6cdae7416a1c45c2ce105a78187d9b7e8feb9e24",
      "tree": "b2862caeb4fcf8b6dc07d445bb69c0266939d1d4",
      "parents": [
        "7b74e912785a11572da43292786ed07ada7e3e0c"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Feb 27 17:03:34 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 27 19:10:12 2013 -0800"
      },
      "message": "idr: fix a subtle bug in idr_get_next()\n\nThe iteration logic of idr_get_next() is borrowed mostly verbatim from\nidr_for_each().  It walks down the tree looking for the slot matching\nthe current ID.  If the matching slot is not found, the ID is\nincremented by the distance of single slot at the given level and\nrepeats.\n\nThe implementation assumes that during the whole iteration id is aligned\nto the layer boundaries of the level closest to the leaf, which is true\nfor all iterations starting from zero or an existing element and thus is\nfine for idr_for_each().\n\nHowever, idr_get_next() may be given any point and if the starting id\nhits in the middle of a non-existent layer, increment to the next layer\nwill end up skipping the same offset into it.  For example, an IDR with\nIDs filled between [64, 127] would look like the following.\n\n          [  0  64 ... ]\n       /----/   |\n       |        |\n      NULL    [ 64 ... 127 ]\n\nIf idr_get_next() is called with 63 as the starting point, it will try\nto follow down the pointer from 0.  As it is NULL, it will then try to\nproceed to the next slot in the same level by adding the slot distance\nat that level which is 64 - making the next try 127.  It goes around the\nloop and finds and returns 127 skipping [64, 126].\n\nNote that this bug also triggers in idr_for_each_entry() loop which\ndeletes during iteration as deletions can make layers go away leaving\nthe iteration with unaligned ID into missing layers.\n\nFix it by ensuring proceeding to the next slot doesn\u0027t carry over the\nunaligned offset - ie.  use round_up(id + 1, slot_distance) instead of\nid +\u003d slot_distance.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReported-by: David Teigland \u003cteigland@redhat.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: \u003cstable@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "125c4c706b680c7831f0966ff873c1ad0354ec25",
      "tree": "2b45c5fdd3f69173774fc9ae92c3568cb9796d37",
      "parents": [
        "b74ca3b3fd0fac08167ff96287cece56e8ca6f4d"
      ],
      "author": {
        "name": "Fengguang Wu",
        "email": "fengguang.wu@intel.com",
        "time": "Thu Oct 04 17:13:15 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Oct 06 03:04:56 2012 +0900"
      },
      "message": "idr: rename MAX_LEVEL to MAX_IDR_LEVEL\n\nTo avoid name conflicts:\n\n  drivers/video/riva/fbdev.c:281:9: sparse: preprocessor token MAX_LEVEL redefined\n\nWhile at it, also make the other names more consistent and add\nparentheses.\n\n[akpm@linux-foundation.org: repair fallout]\n[sfr@canb.auug.org.au: IB/mlx4: fix for MAX_ID_MASK to MAX_IDR_MASK name change]\nSigned-off-by: Fengguang Wu \u003cfengguang.wu@intel.com\u003e\nCc: Bernd Petrovitsch \u003cbernd@petrovitsch.priv.at\u003e\nCc: walter harms \u003cwharms@bfs.de\u003e\nCc: Glauber Costa \u003cglommer@parallels.com\u003e\nSigned-off-by: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nCc: Roland Dreier \u003croland@purestorage.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "11bcb32848ddb5ab28f09f142b625e2ba4d55c4c",
      "tree": "9a2c085e1fce41012bb0f2a340f6ceaaf616b7a0",
      "parents": [
        "ed2d265d1266736bd294332d7f649003943ae36e",
        "8bc3bcc93a2b4e47d5d410146f6546bca6171663"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 24 10:24:31 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 24 10:24:31 2012 -0700"
      },
      "message": "Merge tag \u0027module-for-3.4\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux\n\nPull cleanup of fs/ and lib/ users of module.h from Paul Gortmaker:\n \"Fix up files in fs/ and lib/ dirs to only use module.h if they really\n  need it.\n\n  These are trivial in scope vs the work done previously.  We now have\n  things where any few remaining cleanups can be farmed out to arch or\n  subsystem maintainers, and I have done so when possible.  What is\n  remaining here represents the bits that don\u0027t clearly lie within a\n  single arch/subsystem boundary, like the fs dir and the lib dir.\n\n  Some duplicate includes arising from overlapping fixes from\n  independent subsystem maintainer submissions are also quashed.\"\n\nFix up trivial conflicts due to clashes with other include file cleanups\n(including some due to the previous bug.h cleanup pull).\n\n* tag \u0027module-for-3.4\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux:\n  lib: reduce the use of module.h wherever possible\n  fs: reduce the use of module.h wherever possible\n  includecheck: delete any duplicate instances of module.h\n"
    },
    {
      "commit": "9f7de8275b46d9d11b1505adbfe6c2bb48df4741",
      "tree": "7495111b20585e6e4da20d1b46b7a3747903ce2a",
      "parents": [
        "0e79dedde951e981612ed4e6d74873d61d2a113b"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Wed Mar 21 16:34:20 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:55:01 2012 -0700"
      },
      "message": "idr: make idr_get_next() good for rcu_read_lock()\n\nMake one small adjustment to idr_get_next(): take the height from the top\nlayer (stable under RCU) instead of from the root (unprotected by RCU), as\nidr_find() does: so that it can be used with RCU locking.  Copied comment\non RCU locking from idr_find().\n\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8bc3bcc93a2b4e47d5d410146f6546bca6171663",
      "tree": "101f55a96f751749041c90c32ef1ba89f94dc4d1",
      "parents": [
        "630d9c47274aa89bfa77fe6556d7818bdcb12992"
      ],
      "author": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Wed Nov 16 21:29:17 2011 -0500"
      },
      "committer": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Wed Mar 07 15:04:04 2012 -0500"
      },
      "message": "lib: reduce the use of module.h wherever possible\n\nFor files only using THIS_MODULE and/or EXPORT_SYMBOL, map\nthem onto including export.h -- or if the file isn\u0027t even\nusing those, then just delete the include.  Fix up any implicit\ninclude dependencies that were being masked by module.h along\nthe way.\n\nSigned-off-by: Paul Gortmaker \u003cpaul.gortmaker@windriver.com\u003e\n"
    },
    {
      "commit": "46cbc1d3981ee753518fbf9198a14f71a9f6841e",
      "tree": "0a2fbbec4adf2839e29cb1425644096d7ed6ae00",
      "parents": [
        "aa6afca5bcaba8101f3ea09d5c3e4100b2b9f0e5"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Nov 02 13:38:46 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Nov 02 16:07:00 2011 -0700"
      },
      "message": "ida: make ida_simple_get/put() IRQ safe\n\nIt\u0027s often convenient to be able to release resource from IRQ context.\nMake ida_simple_*() use irqsave/restore spin ops so that they are IRQ\nsafe.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e3816c5407c800e4fb055d08f668286db6b7113f",
      "tree": "03b758aea75b8f1baca1f08c872f4908ab4fa5e5",
      "parents": [
        "3a8495c739c1c773181a246dbb7c12b5b67a8325"
      ],
      "author": {
        "name": "Wang Sheng-Hui",
        "email": "shhuiw@gmail.com",
        "time": "Mon Oct 31 17:12:36 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:56 2011 -0700"
      },
      "message": "lib/idr.c: fix comment for ida_get_new_above()\n\nSigned-off-by: Wang Sheng-Hui \u003cshhuiw@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": "e060c38434b2caa78efe7cedaff4191040b65a15",
      "tree": "407361230bf6733f63d8e788e4b5e6566ee04818",
      "parents": [
        "10e4ac572eeffe5317019bd7330b6058a400dfc2",
        "cc39c6a9bbdebfcf1a7dee64d83bf302bc38d941"
      ],
      "author": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Thu Sep 15 15:08:05 2011 +0200"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Thu Sep 15 15:08:18 2011 +0200"
      },
      "message": "Merge branch \u0027master\u0027 into for-next\n\nFast-forward merge with Linus to be able to merge patches\nbased on more recent version of the tree.\n"
    },
    {
      "commit": "f5c3dd719d17750779c6ac72f4dd0b06d7702ca2",
      "tree": "43585cf023ed86216c539db6d4f8b346ba2e5736",
      "parents": [
        "10bd2473b10b394eed7ed6c94248be47ab6ed369"
      ],
      "author": {
        "name": "Paul Bolle",
        "email": "pebolle@tiscali.nl",
        "time": "Wed Aug 03 16:18:39 2011 +0200"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Thu Aug 04 15:42:05 2011 +0200"
      },
      "message": "Fix kernel-doc comment typo \u0027@id\u0027\n\nSigned-off-by: Paul Bolle \u003cpebolle@tiscali.nl\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "88eca0207cf1574328c3ce8c3be537a9317261bb",
      "tree": "155b13f5df1e239fea2ad5512ef5b19865de4a9e",
      "parents": [
        "a7295898a1d2e501427f557111c2b4bdfc90b1ed"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Wed Aug 03 16:21:06 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Aug 03 14:25:20 2011 -1000"
      },
      "message": "ida: simplified functions for id allocation\n\nThe current hyper-optimized functions are overkill if you simply want to\nallocate an id for a device.  Create versions which use an internal\nlock.\n\nIn followup patches, numerous drivers are converted to use this\ninterface.\n\nThanks to Tejun for feedback.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Jonathan Cameron \u003cjic23@cam.ac.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "56083ab17e0075e538270823c374b59cc97e73b9",
      "tree": "5c29be7c976d1c96a8abd3280d5efb75b73e4c96",
      "parents": [
        "ee2f154a598e96df2ebb01648a7699373bc085c7"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Tue Oct 26 14:19:08 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 17:40:56 2010 -0700"
      },
      "message": "docbook: add idr/ida to kernel-api docbook\n\nAdd idr/ida to kernel-api docbook.\nFix typos and kernel-doc notation.\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Naohiro Aota \u003cnaota@elisp.net\u003e\nCc: Jiri Kosina \u003cjkosina@suse.cz\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "066a9be6c0124edc9527088231f03c6236be375d",
      "tree": "49350239a1505bb08ed67a19ad2a15466f7b7526",
      "parents": [
        "66f1991bc2357436498ac990302b6f5bf403d7ef"
      ],
      "author": {
        "name": "Naohiro Aota",
        "email": "naota@elisp.net",
        "time": "Tue Oct 26 14:23:03 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 16:52:18 2010 -0700"
      },
      "message": "idr: fix idr_pre_get() locking description\n\nDespite the idr_pre_get() kernel-doc, there are some cases where you can\ncall idr_pre_get() from within locked regions.  Add a description for such\ncases.\n\nSee also: http://lkml.org/lkml/2010/9/16/462\n\n[akpm@linux-foundation.org: cleanups, grammatical fixes]\nSigned-off-by: Naohiro Aota \u003cnaota@elisp.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1458ce166c1b333ecbaf8caa9f4f54eab3a522a7",
      "tree": "3375dc429c3c637a05f1c185d767bf911d4e92ee",
      "parents": [
        "ea24ea850bcd7dd5f0994de2cf99ace10c4484cc"
      ],
      "author": {
        "name": "Naohiro Aota",
        "email": "naota@elisp.net",
        "time": "Fri Aug 27 17:43:46 2010 +0900"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Tue Aug 31 09:43:59 2010 +0200"
      },
      "message": "idr: describe how nextidp works in idr_get_next().\n\nIt was unclear in original kernel-doc how nextidp worked in\nidr_get_next(). Let\u0027s describe it.\n\nSigned-off-by: Naohiro Aota \u003cnaota@elisp.net\u003e\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "ea24ea850bcd7dd5f0994de2cf99ace10c4484cc",
      "tree": "e7380a9077841a8a7ed7246cd85a3d55c1d2929a",
      "parents": [
        "10466f5ae36074bb620e4add1247fbf78ee564c0"
      ],
      "author": {
        "name": "Naohiro Aota",
        "email": "naota@elisp.net",
        "time": "Tue Aug 31 00:37:03 2010 +0900"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Tue Aug 31 09:32:02 2010 +0200"
      },
      "message": "idr: fix kernel-doc warnings.\n\nFix the following kernel-doc warnings.\n\n% perl scripts/kernel-doc lib/idr.c \u003e /dev/null\nWarning(lib/idr.c:300): No description found for parameter \u0027starting_id\u0027\nWarning(lib/idr.c:300): Excess function parameter \u0027start_id\u0027 description in \u0027idr_get_new_above\u0027\nWarning(lib/idr.c:485): No description found for parameter \u0027idp\u0027\nWarning(lib/idr.c:596): No description found for parameter \u0027nextidp\u0027\nWarning(lib/idr.c:596): Excess function parameter \u0027id\u0027 description in \u0027idr_get_next\u0027\nWarning(lib/idr.c:774): No description found for parameter \u0027starting_id\u0027\nWarning(lib/idr.c:774): Excess function parameter \u0027staring_id\u0027 description in \u0027ida_get_new_above\u0027\nWarning(lib/idr.c:918): No description found for parameter \u0027ida\u0027\n\nSigned-off-by: Naohiro Aota \u003cnaota@elisp.net\u003e\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "94bfa3b6692c7a3f6f119596724204ec975d3ef0",
      "tree": "4c59cc890ed6fa0f1922416e6cbb7c87ecc8c3dc",
      "parents": [
        "f3b577dec1f2ce32d2db6d2ca6badff7002512af"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jun 07 17:09:45 2010 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed Jun 23 06:50:45 2010 -0700"
      },
      "message": "idr: fix RCU lockdep splat in idr_get_next()\n\nConvert to rcu_dereference_raw() given that many callers may have many\ndifferent locking models.\n\nLocated-by: Miles Lane \u003cmiles.lane@gmail.com\u003e\nTested-by: Miles Lane \u003cmiles.lane@gmail.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "2dcb22b346be7b7b7e630a8970d69cf3f1111ec1",
      "tree": "971c295dc21e37d92d7cf62335edd046ab5e9a83",
      "parents": [
        "79a6cdeb7eb54e3d2d4bb9fc5f0231b057882a87"
      ],
      "author": {
        "name": "Imre Deak",
        "email": "imre.deak@nokia.com",
        "time": "Wed May 26 14:43:38 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 27 09:12:48 2010 -0700"
      },
      "message": "idr: fix backtrack logic in idr_remove_all\n\nCurrently idr_remove_all will fail with a use after free error if\nidr::layers is bigger than 2, which on 32 bit systems corresponds to items\nmore than 1024.  This is due to stepping back too many levels during\nbacktracking.  For simplicity let\u0027s assume that IDR_BITS\u003d1 -\u003e we have 2\nnodes at each level below the root node and each leaf node stores two IDs.\n (In reality for 32 bit systems IDR_BITS\u003d5, with 32 nodes at each sub-root\nlevel and 32 IDs in each leaf node).  The sequence of freeing the nodes at\nthe moment is as follows:\n\nlayer\n1 -\u003e                       a(7)\n2 -\u003e            b(3)                  c(5)\n3 -\u003e        d(1)   e(2)           f(4)    g(6)\n\nUntil step 4 things go fine, but then node c is freed, whereas node g\nshould be freed first.  Since node c contains the pointer to node g we\u0027ll\nhave a use after free error at step 6.\n\nHow many levels we step back after visiting the leaf nodes is currently\ndetermined by the msb of the id we are currently visiting:\n\nStep\n1.          node d with IDs 0,1 is freed, current ID is advanced to 2.\n            msb of the current ID bit 1. This means we need to step back\n            1 level to node b and take the next sibling, node e.\n2-3.        node e with IDs 2,3 is freed, current ID is 4, msb is bit 2.\n            This means we need to step back 2 levels to node a, freeing\n            node b on the way.\n4-5.        node f with IDs 4,5 is freed, current ID is 6, msb is still\n            bit 2. This means we again need to step back 2 levels to node\n            a and free c on the way.\n6.          We should visit node g, but its pointer is not available as\n            node c was freed.\n\nThe fix changes how we determine the number of levels to step back.\nInstead of deducting this merely from the msb of the current ID, we should\nreally check if advancing the ID causes an overflow to a bit position\ncorresponding to a given layer.  In the above example overflow from bit 0\nto bit 1 should mean stepping back 1 level.  Overflow from bit 1 to bit 2\nshould mean stepping back 2 levels and so on.\n\nThe fix was tested with IDs up to 1 \u003c\u003c 20, which corresponds to 4 layers\non 32 bit systems.\n\nSigned-off-by: Imre Deak \u003cimre.deak@nokia.com\u003e\nReviewed-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Eric Paris \u003ceparis@redhat.com\u003e\nCc: \"Paul E. McKenney\" \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: \u003cstable@kernel.org\u003e\t\t[2.6.34.1]\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "329f9052dbadf6f4afe2231668bd00c579a4aa10",
      "tree": "e080a5c70df40f3ae8cf28a95a3267757668ab97",
      "parents": [
        "395b228858778d3c44f7c413693a6acaa8bb62dc",
        "220bf991b0366cc50a94feede3d7341fa5710ee4"
      ],
      "author": {
        "name": "David Woodhouse",
        "email": "David.Woodhouse@intel.com",
        "time": "Fri Mar 26 14:55:59 2010 +0000"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "David.Woodhouse@intel.com",
        "time": "Fri Mar 26 14:55:59 2010 +0000"
      },
      "message": "Merge branch \u0027master\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6\n\nConflicts:\n\tdrivers/mtd/nand/sh_flctl.c\n\nMaxim\u0027s patch to initialise sysfs attributes depends on the patch which\nactually adds sysfs_attr_init().\n"
    },
    {
      "commit": "a7790532f5b7358c33a6b1834dc2b318de209f31",
      "tree": "0ceb9e24b3f54cb5c8453fb5a218e2a94a0f1cce",
      "parents": [
        "2764fb4244cc1bc08df3667924ca4a972e90ac70",
        "60b341b778cc2929df16c0a504c91621b3c6a4ad"
      ],
      "author": {
        "name": "David Woodhouse",
        "email": "David.Woodhouse@intel.com",
        "time": "Fri Feb 26 19:04:15 2010 +0000"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "David.Woodhouse@intel.com",
        "time": "Fri Feb 26 19:06:24 2010 +0000"
      },
      "message": "Merge branch \u0027master\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6\n\nThe SmartMedia FTL code depends on new kfifo bits from 2.6.33\n"
    },
    {
      "commit": "4d1ee80f3a7df7fe9cdec26e651e6201c45b10d4",
      "tree": "e2535ffd1732761d1655bba81758c7e8a6df6c28",
      "parents": [
        "cbfe93e9cedfcd59689bad9e67f57ef67545e5a0"
      ],
      "author": {
        "name": "Ben Hutchings",
        "email": "bhutchings@solarflare.com",
        "time": "Fri Jan 29 20:59:17 2010 +0000"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "David.Woodhouse@intel.com",
        "time": "Thu Feb 25 11:54:51 2010 +0000"
      },
      "message": "idr: export idr_get_next()\n\nidr_get_next() was accidentally not exported when added.  It is about\nto be used by mtdcore, which may be built as a module.\n\nSigned-off-by: Ben Hutchings \u003cbhutchings@solarflare.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\nSigned-off-by: David Woodhouse \u003cDavid.Woodhouse@intel.com\u003e\n"
    },
    {
      "commit": "96be753af91fc9d582450a84722f6a6721d218ad",
      "tree": "20c1a87a5eab53bfbbd5ffb6954de06ca0af11dd",
      "parents": [
        "2676a58c980b7ef076cc9bbff3fd8c9d2d5417ea"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Feb 22 17:04:55 2010 -0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Feb 25 10:34:51 2010 +0100"
      },
      "message": "idr: Apply lockdep-based diagnostics to rcu_dereference() uses\n\nBecause idr can be used with any of a number of locks or with\nany flavor of RCU, just disable the lockdep-based diagnostics.\nIf idr needs diagnostics, the check expression will need to be\npassed into the relevant idr primitives as an additional\nargument.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: laijs@cn.fujitsu.com\nCc: dipankar@in.ibm.com\nCc: mathieu.desnoyers@polymtl.ca\nCc: josh@joshtriplett.org\nCc: dvhltc@us.ibm.com\nCc: niv@us.ibm.com\nCc: peterz@infradead.org\nCc: rostedt@goodmis.org\nCc: Valdis.Kletnieks@vt.edu\nCc: dhowells@redhat.com\nLKML-Reference: \u003c1266887105-1528-11-git-send-email-paulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "d2e7276b6b5e4bc2148891a056d5862c5314342d",
      "tree": "0013ab5f52d700dae771dcedf3f0f333486be5b6",
      "parents": [
        "701188374b6f1ef9cf7e4dce4a2e69ef4c0012ac"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Feb 22 12:44:19 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Feb 22 19:50:34 2010 -0800"
      },
      "message": "idr: fix a critical misallocation bug, take#2\n\nThis is retry of reverted 859ddf09743a8cc680af33f7259ccd0fd36bfe9d\n(\"idr: fix a critical misallocation bug\") which contained two bugs.\n\n* pa[idp-\u003elayers] should be cleared even if it\u0027s not used by\n  sub_alloc() because it\u0027s used by mark idr_mark_full().\n\n* The original condition check also assigned pa[l] to p which the new\n  code didn\u0027t do thus leaving p pointing at the wrong layer.\n\nBoth problems have been fixed and the idr code has received good amount\ntesting using userland testing setup where simple bitmap allocator is\nrun parallel to verify the result of idr allocation.\n\nThe bug this patch fixes is caused by sub_alloc() optimization path\nbypassing out-of-room condition check and restarting allocation loop\nwith starting value higher than maximum allowed value.  For detailed\ndescription, please read commit message of 859ddf09.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nBased-on-patch-from: Eric Paris \u003ceparis@redhat.com\u003e\nReported-by: Eric Paris \u003ceparis@redhat.com\u003e\nTested-by: Stefan Lippers-Hollmann \u003cs.l-h@gmx.de\u003e\nTested-by: Serge Hallyn \u003cserue@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6f14a668f1a8b715a6e855f4e32705e54a6e86a1",
      "tree": "3583162191f16c1d622fe1f6872870e6ae3fbfe8",
      "parents": [
        "e9e70bc14ea5974e21f5baecf95a123844c412b9"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Feb 04 17:57:37 2010 +0900"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Feb 04 16:03:41 2010 -0800"
      },
      "message": "idr: revert misallocation bug fix\n\nCommit 859ddf09743a8cc680af33f7259ccd0fd36bfe9d tried to fix\nmisallocation bug but broke full bit marking by not clearing\npa[idp-\u003elayers] and also is causing X failures due to lookup failure\nin drm code.  The cause of the latter hasn\u0027t been found yet.  Revert\nthe fix for now.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "859ddf09743a8cc680af33f7259ccd0fd36bfe9d",
      "tree": "fa8c7a23acd3fc43d0bd969aaf696d7935fd3b12",
      "parents": [
        "1a45dcfe2525e9432cb4aba461d4994fc2befe42"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 02 13:43:58 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Feb 02 18:11:21 2010 -0800"
      },
      "message": "idr: fix a critical misallocation bug\n\nEric Paris located a bug in idr.  With IDR_BITS of 6, it grows to three\nlayers when id 4096 is first allocated.  When that happens, idr wraps\nincorrectly and searches the idr array ignoring the high bits.  The\nfollowing test code from Eric demonstrates the bug nicely.\n\n#include \u003clinux/idr.h\u003e\n#include \u003clinux/kernel.h\u003e\n#include \u003clinux/module.h\u003e\n\nstatic DEFINE_IDR(test_idr);\n\nint init_module(void)\n{\n\tint ret, forty95, forty96;\n\tvoid *addr;\n\n\t/* add 2 entries both with 4095 as the start address */\nagain1:\n\tif (!idr_pre_get(\u0026test_idr, GFP_KERNEL))\n\t\treturn -ENOMEM;\n\tret \u003d idr_get_new_above(\u0026test_idr, (void *)4095, 4095, \u0026forty95);\n\tif (ret) {\n\t\tif (ret \u003d\u003d -EAGAIN)\n\t\t\tgoto again1;\n\t\treturn ret;\n\t}\n\tif (forty95 !\u003d 4095)\n\t\tprintk(KERN_ERR \"hmmm, forty95\u003d%d\\n\", forty95);\n\nagain2:\n\tif (!idr_pre_get(\u0026test_idr, GFP_KERNEL))\n\t\treturn -ENOMEM;\n\tret \u003d idr_get_new_above(\u0026test_idr, (void *)4096, 4095, \u0026forty96);\n\tif (ret) {\n\t\tif (ret \u003d\u003d -EAGAIN)\n\t\t\tgoto again2;\n\t\treturn ret;\n\t}\n\tif (forty96 !\u003d 4096)\n\t\tprintk(KERN_ERR \"hmmm, forty96\u003d%d\\n\", forty96);\n\n\t/* try to find the 2 entries, noticing that 4096 broke */\n\taddr \u003d idr_find(\u0026test_idr, forty95);\n\tif ((int)addr !\u003d forty95)\n\t\tprintk(KERN_ERR \"hmmm, after find forty95\u003d%d addr\u003d%d\\n\", forty95, (int)addr);\n\taddr \u003d idr_find(\u0026test_idr, forty96);\n\tif ((int)addr !\u003d forty96)\n\t\tprintk(KERN_ERR \"hmmm, after find forty96\u003d%d addr\u003d%d\\n\", forty96, (int)addr);\n\t/* really weird, the entry which should be at 4096 is actually at 0!! */\n\taddr \u003d idr_find(\u0026test_idr, 0);\n\tif ((int)addr)\n\t\tprintk(KERN_ERR \"found an entry at id\u003d0 for addr\u003d%d\\n\", (int)addr);\n\n\tidr_remove(\u0026test_idr, forty95);\n\tidr_remove(\u0026test_idr, forty96);\n\n\treturn 0;\n}\n\nvoid cleanup_module(void)\n{\n}\n\nMODULE_AUTHOR(\"Eric Paris \u003ceparis@redhat.com\u003e\");\nMODULE_DESCRIPTION(\"Simple idr test\");\nMODULE_LICENSE(\"GPL\");\n\nThis happens because when sub_alloc() back tracks it doesn\u0027t always do it\nstep-by-step while the over-the-limit detection assumes step-by-step\nbacktracking.  The logic in sub_alloc() looks like the following.\n\n  restart:\n    clear pa[top level + 1] for end cond detection\n    l \u003d top level\n    while (true) {\n\tsearch for empty slot at this level\n\tif (not found) {\n\t    push id to the next possible value\n\t    l++\nA:\t    if (pa[l] is clear)\n\t        failed, return asking caller to grow the tree\n\t    if (going up 1 level gives more slots to search)\n\t        continue the while loop above with the incremented l\n\t    else\nC:\t        goto restart\n\t}\n\tadjust id accordingly to the found slot\n\tif (l \u003d\u003d 0)\n\t    return found id;\n\tcreate lower level if not there yet\n\trecord pa[l] and l--\n    }\n\nTest A is the fail exit condition but this assumes that failure is\npropagated upwared one level at a time but the B optimization path breaks\nthe assumption and restarts the whole thing with a start value which is\nabove the possible limit with the current layers.  sub_alloc() assumes the\nstart id value is inside the limit when called and test A is the only exit\ncondition check, so it ends up searching for empty slot while ignoring\nhigh set bit.\n\nSo, for 4095-\u003e4096 test, level0 search fails but pa[1] contains a valid\npointer.  However, going up 1 level wouldn\u0027t give any more empty slot so\nit takes C and when the whole thing restarts nobody notices the high bit\nset beyond the top level.\n\nThis patch fixes the bug by changing the fail exit condition check to full\nid limit check.\n\nBased-on-patch-from: Eric Paris \u003ceparis@redhat.com\u003e\nReported-by: Eric Paris \u003ceparis@redhat.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "94e2bd688820aed72b4f8092f88c2ccf64e003de",
      "tree": "988de1817ec5ebe40dc6f2901eb86987876c517f",
      "parents": [
        "65cb76baa1058d17d51ce948b697cdbd5dc97421"
      ],
      "author": {
        "name": "Thadeu Lima de Souza Cascardo",
        "email": "cascardo@holoscopio.com",
        "time": "Fri Oct 16 15:20:49 2009 +0200"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Fri Dec 04 15:39:48 2009 +0100"
      },
      "message": "tree-wide: fix some typos and punctuation in comments\n\nfix some typos and punctuation in comments\n\nSigned-off-by: Thadeu Lima de Souza Cascardo \u003ccascardo@holoscopio.com\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "38460b48d06440de46b34cb778bd6c4855030754",
      "tree": "8f3362a446b5b03879f715c3f7279e70842bcca9",
      "parents": [
        "313e924c0852943e67335fad9d2608701f0dfe8e"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Thu Apr 02 16:57:25 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:04:53 2009 -0700"
      },
      "message": "cgroup: CSS ID support\n\nPatch for Per-CSS(Cgroup Subsys State) ID and private hierarchy code.\n\nThis patch attaches unique ID to each css and provides following.\n\n - css_lookup(subsys, id)\n   returns pointer to struct cgroup_subysys_state of id.\n - css_get_next(subsys, id, rootid, depth, foundid)\n   returns the next css under \"root\" by scanning\n\nWhen cgroup_subsys-\u003euse_id is set, an id for css is maintained.\n\nThe cgroup framework only parepares\n\t- css_id of root css for subsys\n\t- id is automatically attached at creation of css.\n\t- id is *not* freed automatically. Because the cgroup framework\n\t  don\u0027t know lifetime of cgroup_subsys_state.\n\t  free_css_id() function is provided. This must be called by subsys.\n\nThere are several reasons to develop this.\n\t- Saving space .... For example, memcg\u0027s swap_cgroup is array of\n\t  pointers to cgroup. But it is not necessary to be very fast.\n\t  By replacing pointers(8bytes per ent) to ID (2byes per ent), we can\n\t  reduce much amount of memory usage.\n\n\t- Scanning without lock.\n\t  CSS_ID provides \"scan id under this ROOT\" function. By this, scanning\n\t  css under root can be written without locks.\n\t  ex)\n\t  do {\n\t\trcu_read_lock();\n\t\tnext \u003d cgroup_get_next(subsys, id, root, \u0026found);\n\t\t/* check sanity of next here */\n\t\tcss_tryget();\n\t\trcu_read_unlock();\n\t\tid \u003d found + 1\n\t } while(...)\n\nCharacteristics:\n\t- Each css has unique ID under subsys.\n\t- Lifetime of ID is controlled by subsys.\n\t- css ID contains \"ID\" and \"Depth in hierarchy\" and stack of hierarchy\n\t- Allowed ID is 1-65535, ID 0 is UNUSED ID.\n\nDesign Choices:\n\t- scan-by-ID v.s. scan-by-tree-walk.\n\t  As /proc\u0027s pid scan does, scan-by-ID is robust when scanning is done\n\t  by following kind of routine.\n\t  scan -\u003e rest a while(release a lock) -\u003e conitunue from interrupted\n\t  memcg\u0027s hierarchical reclaim does this.\n\n\t- When subsys-\u003euse_id is set, # of css in the system is limited to\n\t  65535.\n\n[bharata@linux.vnet.ibm.com: remove rcu_read_lock() from css_get_next()]\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Paul Menage \u003cmenage@google.com\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nSigned-off-by: Bharata B Rao \u003cbharata@linux.vnet.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1b23336ad98b3666c216617227c7767cd60a22be",
      "tree": "8743554370742f55d993bfd6b5a281f81bc4dd0b",
      "parents": [
        "260219cc48cfb22486e5d0d706c978228a080d63"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Mar 10 12:55:52 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Mar 10 15:55:11 2009 -0700"
      },
      "message": "idr: make idr_remove_all() do removal -before- free_layer()\n\nFix a problem in the IDR system, where an idr_remove_all() hands a data\nelement to call_rcu() (via free_layer()) before making that data element\ninaccessible to new readers.  This is very bad, and results in readers\nstill having a reference to this data element at the end of the grace\nperiod.\n\nTests on large machines that concurrently map and unmap user-space memory\nwithin the same multithreaded process result in crashes within about five\nminutes.  Applying this patch increases the kernel\u0027s longevity to the\nthree-to-eight-hour range.\n\nThere appear to be other similar problems in idr_get_empty_slot() and\nsub_remove(), but I fixed the easy one in idr_remove_all() first.  It is\ntherefore no surprise that failures still occur.\n\nLocated-by: Milton Miller II \u003cmiltonm@austin.ibm.com\u003e\nTested-by: Milton Miller II \u003cmiltonm@austin.ibm.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: Manfred Spraul \u003cmanfred@colorfullife.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5b019e99016f3a692ba45bf68fba73a402d7c01a",
      "tree": "a419c318c550dd2edaa03185477e162e0c7d8e77",
      "parents": [
        "5da7f3d71e243ef5c464967581414d29c72bab75"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Thu Jan 15 13:51:21 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 15 16:39:40 2009 -0800"
      },
      "message": "lib/idr.c: use kmem_cache_zalloc() for the idr_layer cache\n\nDavid points out that the idr_remove_all() function returns unused slabs\nto the kmem cache, but needs to zero them first or else they will be\nuninitialized upon next use.  This causes crashes which have been observed\nin the firewire subsystem.\n\nHe fixed this by zeroing the object before freeing it in idr_remove_all().\n\nBut we agree that simply removing the constructor and zeroing the object\nat allocation time is simpler than relying upon slab constructor machinery\nand might even be faster.\n\nThis problem was introduced by \"idr: make idr_remove rcu-safe\" (commit\ncf481c20c476ad2c0febdace9ce23f5a4db19582), which was first released in\n2.6.27.\n\nThere are no known codesites which trigger this bug in 2.6.27 or 2.6.28.\nThe post-2.6.28 firewire changes are the only known triggerer.\n\nThere might of course be not-yet-discovered triggerers in 2.6.27 and\n2.6.28, and there might be out-of-tree triggerers which are added to those\nkernel versions.  I\u0027ll let the -stable guys decide whether they want to\nbackport this fix.\n\nReported-by: David Moore \u003cdcm@acm.org\u003e\nCc: Stefan Richter \u003cstefanr@s5r6.in-berlin.de\u003e\nCc: Nadia Derbey \u003cNadia.Derbey@bull.net\u003e\nCc: Paul E. McKenney \u003cpaulmck@us.ibm.com\u003e\nCc: Manfred Spraul \u003cmanfred@colorfullife.com\u003e\nCc: Kristian Hgsberg \u003ckrh@redhat.com\u003e\nAcked-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b098161b4d0231f7dc5306111d576c0bfe0c8eba",
      "tree": "4b95f05b5f50bd219943f4bd6b200ccde806a38b",
      "parents": [
        "45ce80fb6b6f9594d1396d44dd7e7c02d596fef8"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Thu Jan 15 13:51:00 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 15 16:39:37 2009 -0800"
      },
      "message": "idr: fix wrong kernel-doc\n\nidr_get_new_above() and ida_get_new_above() return an id in the range of\n@staring_id ... 0x7fffffff, not 0 ... 0x7fffffff.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "711a49a07f84f914aac26a52143f6e7526571143",
      "tree": "3ca4f774f868c1884bc6dc416ea68aa7b8666ef7",
      "parents": [
        "c7f8d6f6b5d121e5f7408119661ca29fc4661c10"
      ],
      "author": {
        "name": "Manfred Spraul",
        "email": "manfred@colorfullife.com",
        "time": "Wed Dec 10 18:17:06 2008 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 10 13:34:33 2008 -0800"
      },
      "message": "lib/idr.c: Fix bug introduced by RCU fix\n\nThe last patch to lib/idr.c caused a bug if idr_get_new_above() was\ncalled on an empty idr.\n\nUsually, nodes stay on the same layer.  New layers are added to the top\nof the tree.\n\nThe exception is idr_get_new_above() on an empty tree: In this case, the\nnew root node is first added on layer 0, then moved upwards.  p-\u003elayer\nwas not updated.\n\nAs usual: You shall never rely on the source code comments, they will\nonly mislead you.\n\nSigned-off-by: Manfred Spraul \u003cmanfred@colorfullife.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6ff2d39b91aec3dcae951afa982059e3dd9b49dc",
      "tree": "8d480975d95adf85f3a87dd478e36e4ac0b0edd0",
      "parents": [
        "1d678f365dae28420fa7329a2a35390b3582678d"
      ],
      "author": {
        "name": "Manfred Spraul",
        "email": "manfred@colorfullife.com",
        "time": "Mon Dec 01 13:14:02 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Dec 01 19:55:25 2008 -0800"
      },
      "message": "lib/idr.c: fix rcu related race with idr_find\n\n2nd part of the fixes needed for\nhttp://bugzilla.kernel.org/show_bug.cgi?id\u003d11796.\n\nWhen the idr tree is either grown or shrunk, then the update to the number\nof layers and the top pointer were not atomic.  This race caused crashes.\n\nThe attached patch fixes that by replicating the layers counter in each\nlayer, thus idr_find doesn\u0027t need idp-\u003elayers anymore.\n\nSigned-off-by: Manfred Spraul \u003cmanfred@colorfullife.com\u003e\nCc: Clement Calmels \u003ccboulte@gmail.com\u003e\nCc: Nadia Derbey \u003cNadia.Derbey@bull.net\u003e\nCc: Pierre Peiffer \u003cpeifferp@gmail.com\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "51cc50685a4275c6a02653670af9f108a64e01cf",
      "tree": "819d47bd2b0c8a9d1835d863853804b0a0242b97",
      "parents": [
        "d91958815d214ea365b98cbff6215383897edcb6"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Fri Jul 25 19:45:34 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jul 26 12:00:07 2008 -0700"
      },
      "message": "SL*B: drop kmem cache argument from constructor\n\nKmem cache passed to constructor is only needed for constructors that are\nthemselves multiplexeres.  Nobody uses this \"feature\", nor does anybody uses\npassed kmem cache in non-trivial way, so pass only pointer to object.\n\nNon-trivial places are:\n\tarch/powerpc/mm/init_64.c\n\tarch/powerpc/mm/hugetlbpage.c\n\nThis is flag day, yes.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nAcked-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nAcked-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Jon Tollefson \u003ckniht@linux.vnet.ibm.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Matt Mackall \u003cmpm@selenic.com\u003e\n[akpm@linux-foundation.org: fix arch/powerpc/mm/hugetlbpage.c]\n[akpm@linux-foundation.org: fix mm/slab.c]\n[akpm@linux-foundation.org: fix ubifs]\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "cf481c20c476ad2c0febdace9ce23f5a4db19582",
      "tree": "4c46587ad6da3b40d9e7f2db93514f4d9045bc99",
      "parents": [
        "f9c46d6ea5ce138a886c3a0f10a46130afab75f5"
      ],
      "author": {
        "name": "Nadia Derbey",
        "email": "Nadia.Derbey@bull.net",
        "time": "Fri Jul 25 01:48:02 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 25 10:53:42 2008 -0700"
      },
      "message": "idr: make idr_remove rcu-safe\n\nIntroduce the free_layer() routine: it is the one that actually frees memory\nafter a grace period has elapsed.\n\nSigned-off-by: Nadia Derbey \u003cNadia.Derbey@bull.net\u003e\nReviewed-by: \"Paul E. McKenney\" \u003cpaulmck@us.ibm.com\u003e\nCc: Manfred Spraul \u003cmanfred@colorfullife.com\u003e\nCc: Jim Houston \u003cjim.houston@comcast.net\u003e\nCc: Pierre Peiffer \u003cpeifferp@gmail.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f9c46d6ea5ce138a886c3a0f10a46130afab75f5",
      "tree": "1eedc2428866fb0b3f9f864e52ffb6eaf00911a4",
      "parents": [
        "3219b3b7456d5cf15ba7b1fe7b1bcf15ce8840e2"
      ],
      "author": {
        "name": "Nadia Derbey",
        "email": "Nadia.Derbey@bull.net",
        "time": "Fri Jul 25 01:48:01 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 25 10:53:42 2008 -0700"
      },
      "message": "idr: make idr_find rcu-safe\n\nMake idr_find rcu-safe: it can now be called inside an rcu_read critical\nsection.\n\nSigned-off-by: Nadia Derbey \u003cNadia.Derbey@bull.net\u003e\nReviewed-by: \"Paul E. McKenney\" \u003cpaulmck@us.ibm.com\u003e\nCc: Manfred Spraul \u003cmanfred@colorfullife.com\u003e\nCc: Jim Houston \u003cjim.houston@comcast.net\u003e\nCc: Pierre Peiffer \u003cpeifferp@gmail.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3219b3b7456d5cf15ba7b1fe7b1bcf15ce8840e2",
      "tree": "a7743ab2924063ff1b5dca4d835e760c8d4c7edf",
      "parents": [
        "944ca05c7b4972f2ebf37262e0f4933d178ad6db"
      ],
      "author": {
        "name": "Nadia Derbey",
        "email": "Nadia.Derbey@bull.net",
        "time": "Fri Jul 25 01:48:00 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 25 10:53:42 2008 -0700"
      },
      "message": "idr: make idr_get_new* rcu-safe\n\nMake the idr_get_new* routines rcu-safe.\n\nSigned-off-by: Nadia Derbey \u003cNadia.Derbey@bull.net\u003e\nReviewed-by: \"Paul E. McKenney\" \u003cpaulmck@us.ibm.com\u003e\nCc: Manfred Spraul \u003cmanfred@colorfullife.com\u003e\nCc: Jim Houston \u003cjim.houston@comcast.net\u003e\nCc: Pierre Peiffer \u003cpeifferp@gmail.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "944ca05c7b4972f2ebf37262e0f4933d178ad6db",
      "tree": "5fb7558b8247bb56b7c1781808e7eaf08e8fff4e",
      "parents": [
        "f098ad655f4dd8e3da98ffbeda9cedcc4459c01a"
      ],
      "author": {
        "name": "Nadia Derbey",
        "email": "Nadia.Derbey@bull.net",
        "time": "Fri Jul 25 01:47:59 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 25 10:53:41 2008 -0700"
      },
      "message": "idr: error checking factorization\n\nDo some code factorization in the return code analysis.\n\nSigned-off-by: Nadia Derbey \u003cNadia.Derbey@bull.net\u003e\nCc: \"Paul E. McKenney\" \u003cpaulmck@us.ibm.com\u003e\nCc: Manfred Spraul \u003cmanfred@colorfullife.com\u003e\nCc: Jim Houston \u003cjim.houston@comcast.net\u003e\nCc: Pierre Peiffer \u003cpeifferp@gmail.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f098ad655f4dd8e3da98ffbeda9cedcc4459c01a",
      "tree": "c94831a25240a3257b77cdb93ec1469e3d4faf85",
      "parents": [
        "4ae537892ab9858f71c78701f4651ad1ca531a1b"
      ],
      "author": {
        "name": "Nadia Derbey",
        "email": "Nadia.Derbey@bull.net",
        "time": "Fri Jul 25 01:47:59 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 25 10:53:41 2008 -0700"
      },
      "message": "idr: fix a printk call\n\nFix the incomplete printk call.\n\nSigned-off-by: Nadia Derbey \u003cNadia.Derbey@bull.net\u003e\nReviewed-by: \"Paul E. McKenney\" \u003cpaulmck@us.ibm.com\u003e\nCc: Manfred Spraul \u003cmanfred@colorfullife.com\u003e\nCc: Jim Houston \u003cjim.houston@comcast.net\u003e\nCc: Pierre Peiffer \u003cpeifferp@gmail.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4ae537892ab9858f71c78701f4651ad1ca531a1b",
      "tree": "c40baaaff4edc958d0fc642104a17c5a98b049de",
      "parents": [
        "2027d1abc25ff770cc3bc936abd33570ce85d85a"
      ],
      "author": {
        "name": "Nadia Derbey",
        "email": "Nadia.Derbey@bull.net",
        "time": "Fri Jul 25 01:47:58 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 25 10:53:41 2008 -0700"
      },
      "message": "idr: rename some of the idr APIs internal routines\n\nThis is a trivial patch that renames:\n\n   . alloc_layer to get_from_free_list since it idr_pre_get that actually\n     allocates memory.\n   . free_layer to move_to_free_list since memory is not actually freed there.\n\nThis makes things more clear for the next patches.\n\nSigned-off-by: Nadia Derbey \u003cNadia.Derbey@bull.net\u003e\nReviewed-by: \"Paul E. McKenney\" \u003cpaulmck@us.ibm.com\u003e\nCc: Manfred Spraul \u003cmanfred@colorfullife.com\u003e\nCc: Jim Houston \u003cjim.houston@comcast.net\u003e\nCc: Pierre Peiffer \u003cpeifferp@gmail.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "af8e2a4cb9b3e14b919ae1cd4012825aefddbeb0",
      "tree": "8910da8632172a09437db0bb5860234daefd894f",
      "parents": [
        "7793bfcfccc91d036d61618d90baf2be3d76e710"
      ],
      "author": {
        "name": "Nadia Derbey",
        "email": "Nadia.Derbey@bull.net",
        "time": "Thu May 01 04:34:57 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 01 08:04:00 2008 -0700"
      },
      "message": "idr: fix idr_remove()\n\nThe return inside the loop makes us free only a single layer.\n\nSigned-off-by: Nadia Derbey \u003cNadia.Derbey@bull.net\u003e\nCc: \"Paul E. McKenney\" \u003cpaulmck@us.ibm.com\u003e\nCc: Manfred Spraul \u003cmanfred@colorfullife.com\u003e\nCc: Jim Houston \u003cjim.houston@comcast.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "199f0ca514f9c17668eec4f935c4ba24cd789f85",
      "tree": "54406e3eb5be58e3350d8f60a64ac78ec3990f97",
      "parents": [
        "801678c5a3b4c79236970bcca27c733f5559e0d1"
      ],
      "author": {
        "name": "Akinobu Mita",
        "email": "akinobu.mita@gmail.com",
        "time": "Tue Apr 29 01:03:13 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 29 08:06:25 2008 -0700"
      },
      "message": "idr: create idr_layer_cache at boot time\n\nAvoid a possible kmem_cache_create() failure by creating idr_layer_cache\nunconditionary at boot time rather than creating it on-demand when idr_init()\nis called the first time.\n\nThis change also enables us to eliminate the check every time idr_init() is\ncalled.\n\n[akpm@linux-foundation.org: rename init_id_cache() to idr_init_cache()]\n[akpm@linux-foundation.org: fix alpha build]\nSigned-off-by: Akinobu Mita \u003cakinobu.mita@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": "4ba9b9d0ba0a49d91fa6417c7510ee36f48cf957",
      "tree": "191b4f45f926e44b882b1e87a9a85dc12230b892",
      "parents": [
        "b811c202a0edadaac7242ab834fe7ba409978ae7"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Tue Oct 16 23:25:51 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Oct 17 08:42:45 2007 -0700"
      },
      "message": "Slab API: remove useless ctor parameter and reorder parameters\n\nSlab constructors currently have a flags parameter that is never used.  And\nthe order of the arguments is opposite to other slab functions.  The object\npointer is placed before the kmem_cache pointer.\n\nConvert\n\n        ctor(void *object, struct kmem_cache *s, unsigned long flags)\n\nto\n\n        ctor(struct kmem_cache *s, void *object)\n\nthroughout the kernel\n\n[akpm@linux-foundation.org: coupla fixes]\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5ba253313d014364a9b87b6fa975ce2fc9759aa6",
      "tree": "b6f7b222b980d7a28e8d73d6cf939454a77205b1",
      "parents": [
        "b4482a4b2e2ff5ed96d8d16d72e83e75064062c5"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@ftp.linux.org.uk",
        "time": "Sun Oct 14 19:35:50 2007 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sun Oct 14 12:41:52 2007 -0700"
      },
      "message": "more low-hanging fruits - kernel, fs, lib signedness\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6ace06dc68db13f7f82f9341fdef89502f0bb217",
      "tree": "a19c36e9387ac8e225c4de490c423923549b2e59",
      "parents": [
        "c9b3febc5b9c55a76b838c977b078195ec8bb95e"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Tue Jul 31 00:39:19 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Jul 31 15:39:42 2007 -0700"
      },
      "message": "idr_remove_all: kill unused variable\n\n\"error\" is always equal to 0.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "20c2df83d25c6a95affe6157a4c9cac4cf5ffaac",
      "tree": "415c4453d2b17a50abe7a3e515177e1fa337bd67",
      "parents": [
        "64fb98fc40738ae1a98bcea9ca3145b89fb71524"
      ],
      "author": {
        "name": "Paul Mundt",
        "email": "lethal@linux-sh.org",
        "time": "Fri Jul 20 10:11:58 2007 +0900"
      },
      "committer": {
        "name": "Paul Mundt",
        "email": "lethal@linux-sh.org",
        "time": "Fri Jul 20 10:11:58 2007 +0900"
      },
      "message": "mm: Remove slab destructors from kmem_cache_create().\n\nSlab destructors were no longer supported after Christoph\u0027s\nc59def9f222d44bb7e2f0a559f2906191a0862d7 change. They\u0027ve been\nBUGs for both slab and slub, and slob never supported them\neither.\n\nThis rips out support for the dtor pointer from kmem_cache_create()\ncompletely and fixes up every single callsite in the kernel (there were\nabout 224, not including the slab allocator definitions themselves,\nor the documentation references).\n\nSigned-off-by: Paul Mundt \u003clethal@linux-sh.org\u003e\n"
    },
    {
      "commit": "23936cc0b5d89619c34c2dab11d8cf3d6f7ca028",
      "tree": "506ec36cc37d3bc7dbf0ca68d1b271f9247fa458",
      "parents": [
        "96d7fa421e6424ad9ef6d1d039375dc2edb63fe8"
      ],
      "author": {
        "name": "Kristian Hoegsberg",
        "email": "krh@redhat.com",
        "time": "Sun Jul 15 23:37:24 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Jul 16 09:05:34 2007 -0700"
      },
      "message": "lib: add idr_remove_all\n\nRemove all ids from the given idr tree.  idr_destroy() only frees up\nunused, cached idp_layers, but this function will remove all id mappings\nand leave all idp_layers unused.\n\nA typical clean-up sequence for objects stored in an idr tree, will use\nidr_for_each() to free all objects, if necessay, then idr_remove_all() to\nremove all ids, and idr_destroy() to free up the cached idr_layers.\n\nSigned-off-by: Kristian Hoegsberg \u003ckrh@redhat.com\u003e\nCc: Tejun Heo \u003chtejun@gmail.com\u003e\nCc: Dave Airlie \u003cairlied@linux.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "96d7fa421e6424ad9ef6d1d039375dc2edb63fe8",
      "tree": "ba8a8200bda4576e1e4dcce2ff27a7a7a94723a2",
      "parents": [
        "de7d4f0e1172a72277d660fa0be59654ea02bed0"
      ],
      "author": {
        "name": "Kristian Hoegsberg",
        "email": "krh@redhat.com",
        "time": "Sun Jul 15 23:37:24 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Jul 16 09:05:34 2007 -0700"
      },
      "message": "lib: add idr_for_each()\n\nThis patch adds an iterator function for the idr data structure.  Compared\nto just iterating through the idr with an integer and idr_find, this\niterator is (almost, but not quite) linear in the number of elements, as\nopposed to the number of integers in the range covered by the idr.  This\nmakes a difference for sparse idrs, but more importantly, it\u0027s a nicer way\nto iterate through the elements.\n\nThe drm subsystem is moving to idr for tracking contexts and drawables, and\nwith this change, we can use the idr exclusively for tracking these\nresources.\n\n[akpm@linux-foundation.org: fix comment]\nSigned-off-by: Kristian Hoegsberg \u003ckrh@redhat.com\u003e\nCc: Tejun Heo \u003chtejun@gmail.com\u003e\nCc: Dave Airlie \u003cairlied@linux.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "72dba584b695d8bc8c1a50ed54ad4cba7c62314d",
      "tree": "b0938ea773953f869b22101bb021e5710d0a0fec",
      "parents": [
        "e33ac8bdb0c84fe7afd2c45537b763faf28c589e"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Jun 14 03:45:13 2007 +0900"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Jul 11 16:09:03 2007 -0700"
      },
      "message": "ida: implement idr based id allocator\n\nImplement idr based id allocator.  ida is used the same way idr is\nused but lacks id -\u003e ptr translation and thus consumes much less\nmemory.  struct ida_bitmap is attached as leaf nodes to idr tree which\nis managed by the idr code.  Each ida_bitmap is 128bytes long and\ncontains slightly less than a thousand slots.\n\nida is more aggressive with releasing extra resources acquired using\nida_pre_get().  After every successful id allocation, ida frees one\nreserved idr_layer if possible.  Reserved ida_bitmap is not freed\nautomatically but only one ida_bitmap is reserved and it\u0027s almost\nalways used right away.  Under most circumstances, ida won\u0027t hold on\nto memory for too long which isn\u0027t actively used.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "e33ac8bdb0c84fe7afd2c45537b763faf28c589e",
      "tree": "36b48600d7d0a5042042b51ed242bc57a7592025",
      "parents": [
        "7aae6dd80e265aa9402ed507caaff4a5dba55069"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Jun 14 03:45:12 2007 +0900"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Jul 11 16:09:03 2007 -0700"
      },
      "message": "idr: separate out idr_mark_full()\n\nSeparate out idr_mark_full() from sub_alloc() and make marking the\nallocated slot full the responsibility of idr_get_new_above_int().\n\nAllocation part of idr_get_new_above_int() is renamed to\nidr_get_empty_slot().  New idr_get_new_above_int() allocates a slot\nusing the function, install the user pointer and marks it full using\nidr_mark_full().\n\nThis change doesn\u0027t introduce any behavior change.  This will be\nused by ida.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "7aae6dd80e265aa9402ed507caaff4a5dba55069",
      "tree": "b6b2e4d4942fd199768f6df6b0694a886e8c4375",
      "parents": [
        "dc0afa8388972a9ed7c2203cc46d8df1a4713f65"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Jun 14 03:45:12 2007 +0900"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Jul 11 16:09:02 2007 -0700"
      },
      "message": "idr: fix obscure bug in allocation path\n\nIn sub_alloc(), when bitmap search fails, it goes up one level to\ncontinue search.  This is done by updating the id cursor and searching\nthe upper level again.  If the cursor was at the end of the upper\nlevel, we need to go further than that.\n\nThis wasn\u0027t implemented and when that happens the part of the cursor\nwhich indexes into the upper level wraps and sub_alloc() ends up\nsearching the wrong bitmap.  It allocates id which doesn\u0027t match the\nactual slot.\n\nThis patch fixes this by restarting from the top if the search needs\nto go higher than one level.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n\n"
    },
    {
      "commit": "72fd4a35a824331d7a0f4168d7576502d95d34b3",
      "tree": "be27880bc36b7f62e8044a88b8744a35c5317714",
      "parents": [
        "262086cf5b5343c2b81c97b1c606058e921859df"
      ],
      "author": {
        "name": "Robert P. J. Day",
        "email": "rpjday@mindspring.com",
        "time": "Sat Feb 10 01:45:59 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sun Feb 11 10:51:32 2007 -0800"
      },
      "message": "[PATCH] Numerous fixes to kernel-doc info in source files.\n\nA variety of (mostly) innocuous fixes to the embedded kernel-doc content in\nsource files, including:\n\n  * make multi-line initial descriptions single line\n  * denote some function names, constants and structs as such\n  * change erroneous opening \u0027/*\u0027 to \u0027/**\u0027 in a few places\n  * reword some text for clarity\n\nSigned-off-by: Robert P. J. Day \u003crpjday@mindspring.com\u003e\nCc: \"Randy.Dunlap\" \u003crdunlap@xenotime.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e18b890bb0881bbab6f4f1a6cd20d9c60d66b003",
      "tree": "4828be07e1c24781c264b42c5a75bcd968223c3f",
      "parents": [
        "441e143e95f5aa1e04026cb0aa71c801ba53982f"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed Dec 06 20:33:20 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:25 2006 -0800"
      },
      "message": "[PATCH] slab: remove kmem_cache_t\n\nReplace all uses of kmem_cache_t with struct kmem_cache.\n\nThe patch was generated using the following script:\n\n\t#!/bin/sh\n\t#\n\t# Replace one string by another in all the kernel sources.\n\t#\n\n\tset -e\n\n\tfor file in `find * -name \"*.c\" -o -name \"*.h\"|xargs grep -l $1`; do\n\t\tquilt add $file\n\t\tsed -e \"1,\\$s/$1/$2/g\" $file \u003e/tmp/$$\n\t\tmv /tmp/$$ $file\n\t\tquilt refresh\n\tdone\n\nThe script was run like this\n\n\tsh replace kmem_cache_t \"struct kmem_cache\"\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "c259cc281255bdb30ceba190bfd7f37e3ae3fc85",
      "tree": "395028450ca91c441eab243186f5015fe5d6e3d4",
      "parents": [
        "6fbe82a952790c634ea6035c223a01a81377daf1"
      ],
      "author": {
        "name": "Roland Dreier",
        "email": "rdreier@cisco.com",
        "time": "Fri Jul 14 00:24:23 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jul 14 21:53:54 2006 -0700"
      },
      "message": "[PATCH] Convert idr\u0027s internal locking to _irqsave variant\n\nCurrently, the code in lib/idr.c uses a bare spin_lock(\u0026idp-\u003elock) to do\ninternal locking.  This is a nasty trap for code that might call idr\nfunctions from different contexts; for example, it seems perfectly\nreasonable to call idr_get_new() from process context and idr_remove() from\ninterrupt context -- but with the current locking this would lead to a\npotential deadlock.\n\nThe simplest fix for this is to just convert the idr locking to use\nspin_lock_irqsave().\n\nIn particular, this fixes a very complicated locking issue detected by\nlockdep, involving the ib_ipoib driver\u0027s priv-\u003elock and dev-\u003e_xmit_lock,\nwhich get involved with the ib_sa module\u0027s query_idr.lock.\n\nCc: Arjan van de Ven \u003carjan@infradead.org\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Zach Brown \u003czach.brown@oracle.com\u003e,\nSigned-off-by: Roland Dreier \u003crolandd@cisco.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "5806f07cd2c32920d5105e0f9ff3117338f34eec",
      "tree": "65242ea629a19308656a3090fee6b513dfa0f723",
      "parents": [
        "c51c2752491e5e771de6c8861a85ba46752d7888"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Jun 26 00:27:19 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jun 26 09:58:34 2006 -0700"
      },
      "message": "[PATCH] lib: add idr_replace\n\nThis patch adds idr_replace() to replace an existing pointer in a single\noperation.\n\nDevice-mapper will use this to update the pointer it stored against a given\nid.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "1eec00565d849ceda67f425e089c3233e3ef2ca2",
      "tree": "83f5bb133755ddde28772e64b99ff0cfd701f0d7",
      "parents": [
        "a45219483e2894af3c07f959cbd4edb4575b4f8c"
      ],
      "author": {
        "name": "Sonny Rao",
        "email": "sonny@burdell.org",
        "time": "Sun Jun 25 05:49:34 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Jun 25 10:01:26 2006 -0700"
      },
      "message": "[PATCH] fix race in idr code\n\nI ran into a bug where the kernel died in the idr code:\n\ncpu 0x1d: Vector: 300 (Data Access) at [c000000b7096f710]\n    pc: c0000000001f8984: .idr_get_new_above_int+0x140/0x330\n    lr: c0000000001f89b4: .idr_get_new_above_int+0x170/0x330\n    sp: c000000b7096f990\n   msr: 800000000000b032\n   dar: 0\n dsisr: 40010000\n  current \u003d 0xc000000b70d43830\n  paca    \u003d 0xc000000000556900\n    pid   \u003d 2022, comm \u003d hwup\n1d:mon\u003e t\n[c000000b7096f990] c0000000000d2ad8 .expand_files+0x2e8/0x364 (unreliable)\n[c000000b7096faa0] c0000000001f8bf8 .idr_get_new_above+0x18/0x68\n[c000000b7096fb20] c00000000002a054 .init_new_context+0x5c/0xf0\n[c000000b7096fbc0] c000000000049dc8 .copy_process+0x91c/0x1404\n[c000000b7096fcd0] c00000000004a988 .do_fork+0xd8/0x224\n[c000000b7096fdc0] c00000000000ebdc .sys_clone+0x5c/0x74\n[c000000b7096fe30] c000000000008950 .ppc_clone+0x8/0xc\n"
    },
    {
      "commit": "e15ae2dd3e436552293e122a5163019e7a0fa450",
      "tree": "cc6b18dd364329faa07c39c77ac133b61a8befc7",
      "parents": [
        "850b9247926693454f71e819883f4dc06184e25f"
      ],
      "author": {
        "name": "Jesper Juhl",
        "email": "jesper.juhl@gmail.com",
        "time": "Sun Oct 30 15:02:14 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Oct 30 17:37:19 2005 -0800"
      },
      "message": "[PATCH] Whitespace and CodingStyle cleanup for lib/idr.c\n\nCleanup trailing whitespace, blank lines, CodingStyle issues etc, for\nlib/idr.c\n\nSigned-off-by: Jesper Juhl \u003cjesper.juhl@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "fd4f2df24bc23e6b8fc069765b425c7dacf52347",
      "tree": "f7e993817030747c5e1000d46685ebd2eef11085",
      "parents": [
        "6daa0e28627abf362138244a620a821a9027d816"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Oct 21 03:18:50 2005 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Oct 28 08:16:47 2005 -0700"
      },
      "message": "[PATCH] gfp_t: lib/*\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "8d3b35914aa54232b27e6a2b57d84092aadc5e86",
      "tree": "809be8fad6743a751964677e68c5c01af3198e4b",
      "parents": [
        "c0fef676bbd75e711711ed3ff5bebb7bfd1bdb00"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Sun Oct 23 12:57:18 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Oct 23 16:38:39 2005 -0700"
      },
      "message": "[PATCH] inotify/idr leak fix\n\nFix a bug which was reported and diagnosed by\nStefan Jones \u003cstefan.jones@churchillrandoms.co.uk\u003e\n\nIDR trees include a cache of idr_layer objects.  There\u0027s no way to destroy\nthis cache, so when we discard an overall idr tree we end up leaking some\nmemory.\n\nAdd and use idr_destroy() for this.  v9fs and infiniband also need to use\nidr_destroy() to avoid leaks.\n\nOr, we make the cache global, like radix_tree_preload().  Which is probably\nbetter.  Later.\n\nCc: Eric Van Hensbergen \u003cericvh@ericvh.myip.org\u003e\nCc: Roland Dreier \u003crolandd@cisco.com\u003e\nCc: Robert Love \u003crml@novell.com\u003e\nCc: John McCutchan \u003cttb@tentacle.dhs.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "7c657f2f25d50c602df9291bc6242b98fc090759",
      "tree": "5e1ae11c320ea00488b33224cc982d0be2d986d6",
      "parents": [
        "755528c860b05fcecda1c88a2bdaffcb50760a7f"
      ],
      "author": {
        "name": "John McCutchan",
        "email": "ttb@tentacle.dhs.org",
        "time": "Fri Aug 26 14:02:04 2005 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Aug 26 11:32:57 2005 -0700"
      },
      "message": "[PATCH] Document idr_get_new_above() semantics, update inotify\n\nThere is an off by one problem with idr_get_new_above.\n\nThe comment and function name suggest that it will return an id \u003e\nstarting_id, but it actually returned an id \u003e\u003d starting_id, and kernel\ncallers other than inotify treated it as such.\n\nThe patch below fixes the comment, and fixes inotifys usage.  The\nfunction name still doesn\u0027t match the behaviour, but it never did.\n\nSigned-off-by: John McCutchan \u003cttb@tentacle.dhs.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "589777eab7360894b7ca1c4ba9d252e03b51225b",
      "tree": "d32b8dadc4dc52e81d2b9ffbd03d100b168b41fa",
      "parents": [
        "3a845099b20e81fb678521f034bbdcd69208da4e"
      ],
      "author": {
        "name": "Zaur Kambarov",
        "email": "kambarov@berkeley.edu",
        "time": "Tue Jun 21 17:14:31 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Tue Jun 21 18:46:12 2005 -0700"
      },
      "message": "[PATCH] coverity: idr_get_new_above_int() overrun fix\n\nThis patch fixes overrun of array pa:\n92   \t\tstruct idr_layer *pa[MAX_LEVEL];\n\nin\n\n98   \t\tl \u003d idp-\u003elayers;\n99   \t\tpa[l--] \u003d NULL;\n\nby passing idp-\u003elayers, set in\n202  \t\tidp-\u003elayers \u003d layers;\nto function  sub_alloc in\n203  \t\tv \u003d sub_alloc(idp, ptr, \u0026id);\n\nSigned-off-by: Zaur Kambarov \u003czkambarov@coverity.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "1da177e4c3f41524e886b7f1b8a0c1fc7321cac2",
      "tree": "0bba044c4ce775e45a88a51686b5d9f90697ea9d",
      "parents": [],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "message": "Linux-2.6.12-rc2\n\nInitial git repository build. I\u0027m not bothering with the full history,\neven though we have it. We can create a separate \"historical\" git\narchive of that later if we want to, and in the meantime it\u0027s about\n3.2GB when imported into git - space that would just make the early\ngit days unnecessarily complicated, when we don\u0027t have a lot of good\ninfrastructure for it.\n\nLet it rip!\n"
    }
  ]
}
