)]}'
{
  "log": [
    {
      "commit": "d43c36dc6b357fa1806800f18aa30123c747a6d1",
      "tree": "339ce510073ecbe9b3592008f7dece7b277035ef",
      "parents": [
        "69585dd69e663a40729492c7b52eb82477a2027a"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Wed Oct 07 17:09:06 2009 +0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Oct 11 11:20:58 2009 -0700"
      },
      "message": "headers: remove sched.h from interrupt.h\n\nAfter m68k\u0027s task_thread_info() doesn\u0027t refer to current,\nit\u0027s possible to remove sched.h from interrupt.h and not break m68k!\nMany thanks to Heiko Carstens for allowing this.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\n"
    },
    {
      "commit": "337fff8b5ed0573ea106491c6de47bd7fe623500",
      "tree": "7fd379d4a3d23e055f19be2d447de2ea64ecd069",
      "parents": [
        "1be1cb7b47f0744141ed61cdb25648819ae1a56f"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Mar 16 10:04:53 2009 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Mar 17 12:28:30 2009 +0100"
      },
      "message": "debugobjects: delay free of internal objects\n\nImpact: avoid recursive kfree calls, less slab activity on heavy load\n\ndebugobjects checks on kfree whether tracked objects are freed. When a\ntracked object is freed debugobjects frees the internal reference\nobject as well. The debug object slab cache is marked to not recurse\ninto debugobjects when a slab objects is freed, but the recursive call\ncan be problematic versus locking in the memory allocator.\n\nDefer the freeing of debug slab objects via schedule_work. The reasons\nnot to use RCU are:\n\n1) rcu makes the data structure larger\n2) there is no real need for rcu as nothing references the obj after\n   we freed it\n3) under heavy load it is easier to reuse the to be freed objects instead\n   of allocating new objects from the slab. This lowered the slab activity\n   significantly in a heavy load networking test where lots of timers are\n   created/destroyed. The workqueue based delayed free allows us just to\n   put the to be freed objects back into the object pool and reuse them\n   right away.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nLKML-Reference: \u003c200903162049.58058.nickpiggin@yahoo.com.au\u003e\n"
    },
    {
      "commit": "1be1cb7b47f0744141ed61cdb25648819ae1a56f",
      "tree": "2d13d83492881e333f633f5513aec79b4816ff78",
      "parents": [
        "3e8ebb5c433f016dff5824587436642d87fc2e6c"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Mar 16 18:53:18 2009 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Mar 17 12:28:30 2009 +0100"
      },
      "message": "debugobjects: replace static objects when slab cache becomes available\n\nImpact: refactor/consolidate object management, prepare for delayed free\n\ndebugobjects allocates static reference objects to track objects which\nare initialized or activated before the slab cache becomes\navailable. These static reference objects have to be handled\nseperately in free_object(). The handling of these objects is in the\nway of implementing a delayed free functionality. The delayed free is\nrequired to avoid callbacks into the mm code from\ndebug_check_no_obj_freed().\n\nReplace the static object references with dynamic ones after the slab\ncache has been initialized. The static objects are now marked initdata.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nLKML-Reference: \u003c200903162049.58058.nickpiggin@yahoo.com.au\u003e\n\n"
    },
    {
      "commit": "3e8ebb5c433f016dff5824587436642d87fc2e6c",
      "tree": "cc6c7cef8faadc1e61f66cf1241863afca722ebb",
      "parents": [
        "778ef1e6cbb049c9bcbf405936ee6f2b6e451892"
      ],
      "author": {
        "name": "Kyle McMartin",
        "email": "kyle@redhat.com",
        "time": "Sun Mar 01 20:41:41 2009 -0500"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Mar 02 12:04:01 2009 +0100"
      },
      "message": "debug_objects: add boot-parameter toggle to turn object debugging off again\n\nWhile trying to debug why my Atom netbook is falling over booting\nrawhide debug-enabled kernels, I stumbled across the fact that we\u0027ve\nbeen enabling object debugging by default. However, once you default it\nto on, you\u0027ve got no way to turn it back off again at runtime.\n\nAdd a boolean toggle to turn it off. I would just make it an int\nmodule_param, however people may already expect the boolean enable\nbehaviour, so just add an analogue for disabling.\n\nSigned-off-by: Kyle McMartin \u003ckyle@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "3ae7020543db0b769538e64d1ce8d51fceff60ca",
      "tree": "ceb0b336afd954bbaff7c58002501b1486b74e03",
      "parents": [
        "ed313489badef16d700f5a3be50e8fd8f8294bc8"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Nov 26 10:02:00 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Nov 26 10:07:06 2008 +0100"
      },
      "message": "debugobjects: add boot parameter default value\n\nImpact: add .config driven boot parameter default value\n\nRight now debugobjects can only be activated if the debug_objects\nboot parameter is passed in via the boot command line.\n\nMake this more convenient (and randomizable) by also providing\na .config method. Enable it by default. (DEBUG_OBJECTS itself\nis default-off)\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "673d62cc5ea6fca046650f17f77985b112c62322",
      "tree": "7cde0d756ffa71ad732cc079d28254b256c14e68",
      "parents": [
        "bef69ea0dcce574a425feb0a5aa4c63dd108b9a6"
      ],
      "author": {
        "name": "Vegard Nossum",
        "email": "vegard.nossum@gmail.com",
        "time": "Sun Aug 31 23:39:21 2008 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Sep 01 09:47:16 2008 +0200"
      },
      "message": "debugobjects: fix lockdep warning\n\nDaniel J. Blueman reported:\n\u003e \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\u003e [ INFO: possible circular locking dependency detected ]\n\u003e 2.6.27-rc4-224c #1\n\u003e -------------------------------------------------------\n\u003e hald/4680 is trying to acquire lock:\n\u003e  (\u0026n-\u003elist_lock){++..}, at: [\u003cffffffff802bfa26\u003e] add_partial+0x26/0x80\n\u003e\n\u003e but task is already holding lock:\n\u003e  (\u0026obj_hash[i].lock){++..}, at: [\u003cffffffff8041cfdc\u003e]\n\u003e debug_object_free+0x5c/0x120\n\nWe fix it by moving the actual freeing to outside the lock (the lock\nnow only protects the list).\n\nThe pool lock is also promoted to irq-safe (suggested by Dan). It\u0027s\nnecessary because free_pool is now called outside the irq disabled\nregion. So we need to protect against an interrupt handler which calls\ndebug_object_init().\n\n[tglx@linutronix.de: added hlist_move_list helper to avoid looping\n\t\t     through the list twice]\n\nReported-by: Daniel J Blueman \u003cdaniel.blueman@gmail.com\u003e\nSigned-off-by: Vegard Nossum \u003cvegard.nossum@gmail.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "5cd2b459d326a424671dcd95f038649f7bf7cb96",
      "tree": "824514753e173bb69d3fde5fab18f8ddf909751d",
      "parents": [
        "f810a5cf28a818db96333cd23646f0227ec015b4"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Fri Jul 25 19:45:39 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jul 26 12:00:07 2008 -0700"
      },
      "message": "Use WARN() in lib/\n\nUse WARN() instead of a printk+WARN_ON() pair; this way the message becomes\npart of the warning section for better reporting/collection.  In addition, one\nof the if() clauses collapes into the WARN() entirely now.\n\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8b05c7e6e159d2f33c9275281b8b909a89eb7c5d",
      "tree": "646edb14c42d6404e36f1602d47c639c72a8300a",
      "parents": [
        "68ad8df42e12037c3894c9706ab428bf5cd6426b"
      ],
      "author": {
        "name": "FUJITA Tomonori",
        "email": "fujita.tomonori@lab.ntt.co.jp",
        "time": "Wed Jul 23 21:26:53 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 24 10:47:14 2008 -0700"
      },
      "message": "add a helper function to test if an object is on the stack\n\nlib/debugobjects.c has a function to test if an object is on the stack.\nThe block layer and ide needs it (they need to avoid DMA from/to stack\nbuffers).  This patch moves the function to include/linux/sched.h so that\neveryone can use it.\n\nlib/debugobjects.c uses current-\u003estack but this patch uses a\ntask_stack_page() accessor, which is a preferable way to access the stack.\n\nSigned-off-by: FUJITA Tomonori \u003cfujita.tomonori@lab.ntt.co.jp\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: 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": "50db04dd9c74178e68a981a7127c37252ffb3242",
      "tree": "ac961b1ccc6f5073537be2b4b731bc79ec5448c4",
      "parents": [
        "952f4a0a9b27e6dbd5d32e330b3f609ebfa0b061"
      ],
      "author": {
        "name": "Vegard Nossum",
        "email": "vegard.nossum@gmail.com",
        "time": "Sun Jun 15 00:47:36 2008 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Jun 18 11:09:54 2008 +0200"
      },
      "message": "debugobjects: fix lockdep warning\n\nDaniel J Blueman reported:\n| \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n| [ INFO: possible circular locking dependency detected ]\n| 2.6.26-rc5-201c #1\n| -------------------------------------------------------\n| nscd/3669 is trying to acquire lock:\n|  (\u0026n-\u003elist_lock){.+..}, at: [\u003cffffffff802bab03\u003e] deactivate_slab+0x173/0x1e0\n|\n| but task is already holding lock:\n|  (\u0026obj_hash[i].lock){++..}, at: [\u003cffffffff803fa56f\u003e]\n| __debug_object_init+0x2f/0x350\n|\n| which lock already depends on the new lock.\n\nThere are two locks involved here; the first is a SLUB-local lock, and\nthe second is a debugobjects-local lock. They are basically taken in two\ndifferent orders:\n\n1. SLUB { debugobjects { ... } }\n2. debugobjects { SLUB { ... } }\n\nThis patch changes pattern #2 by trying to fill the memory pool (e.g.\nthe call into SLUB/kmalloc()) outside the debugobjects lock, so now the\ntwo patterns look like this:\n\n1. SLUB { debugobjects { ... } }\n2. SLUB { } debugobjects { ... }\n\n[ daniel.blueman@gmail.com: pool_lock needs to be taken irq safe in fill_pool ]\n\nReported-by: Daniel J Blueman \u003cdaniel.blueman@gmail.com\u003e\nSigned-off-by: Vegard Nossum \u003cvegard.nossum@gmail.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n\n"
    },
    {
      "commit": "3ac7fe5a4aab409bd5674d0b070bce97f9d20872",
      "tree": "5e12e8864bb8737695e4eb9c63970602d5f69e73",
      "parents": [
        "30327acf7846c5eb97c8e31c78317a2918d3e515"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Apr 30 00:55:01 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 30 08:29:53 2008 -0700"
      },
      "message": "infrastructure to debug (dynamic) objects\n\nWe can see an ever repeating problem pattern with objects of any kind in the\nkernel:\n\n1) freeing of active objects\n2) reinitialization of active objects\n\nBoth problems can be hard to debug because the crash happens at a point where\nwe have no chance to decode the root cause anymore.  One problem spot are\nkernel timers, where the detection of the problem often happens in interrupt\ncontext and usually causes the machine to panic.\n\nWhile working on a timer related bug report I had to hack specialized code\ninto the timer subsystem to get a reasonable hint for the root cause.  This\ndebug hack was fine for temporary use, but far from a mergeable solution due\nto the intrusiveness into the timer code.\n\nThe code further lacked the ability to detect and report the root cause\ninstantly and keep the system operational.\n\nKeeping the system operational is important to get hold of the debug\ninformation without special debugging aids like serial consoles and special\nknowledge of the bug reporter.\n\nThe problems described above are not restricted to timers, but timers tend to\nexpose it usually in a full system crash.  Other objects are less explosive,\nbut the symptoms caused by such mistakes can be even harder to debug.\n\nInstead of creating specialized debugging code for the timer subsystem a\ngeneric infrastructure is created which allows developers to verify their code\nand provides an easy to enable debug facility for users in case of trouble.\n\nThe debugobjects core code keeps track of operations on static and dynamic\nobjects by inserting them into a hashed list and sanity checking them on\nobject operations and provides additional checks whenever kernel memory is\nfreed.\n\nThe tracked object operations are:\n- initializing an object\n- adding an object to a subsystem list\n- deleting an object from a subsystem list\n\nEach operation is sanity checked before the operation is executed and the\nsubsystem specific code can provide a fixup function which allows to prevent\nthe damage of the operation.  When the sanity check triggers a warning message\nand a stack trace is printed.\n\nThe list of operations can be extended if the need arises.  For now it\u0027s\nlimited to the requirements of the first user (timers).\n\nThe core code enqueues the objects into hash buckets.  The hash index is\ngenerated from the address of the object to simplify the lookup for the check\non kfree/vfree.  Each bucket has it\u0027s own spinlock to avoid contention on a\nglobal lock.\n\nThe debug code can be compiled in without being active.  The runtime overhead\nis minimal and could be optimized by asm alternatives.  A kernel command line\noption enables the debugging code.\n\nThanks to Ingo Molnar for review, suggestions and cleanup patches.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Greg KH \u003cgreg@kroah.com\u003e\nCc: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nCc: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    }
  ]
}
