)]}'
{
  "log": [
    {
      "commit": "512626a04e72aca60effe111fa0333ed0b195d21",
      "tree": "c22e23b0dcc2dd2ff5a9a96a007de6799e9223de",
      "parents": [
        "8a1ca8cedd108c8e76a6ab34079d0bbb4f244799",
        "3aa27bbe7a6536d1ec859d3a97caf3319b5081b7"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 11 14:15:57 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 11 14:15:57 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://linux-arm.org/linux-2.6\n\n* \u0027for-linus\u0027 of git://linux-arm.org/linux-2.6:\n  kmemleak: Add the corresponding MAINTAINERS entry\n  kmemleak: Simple testing module for kmemleak\n  kmemleak: Enable the building of the memory leak detector\n  kmemleak: Remove some of the kmemleak false positives\n  kmemleak: Add modules support\n  kmemleak: Add kmemleak_alloc callback from alloc_large_system_hash\n  kmemleak: Add the vmalloc memory allocation/freeing hooks\n  kmemleak: Add the slub memory allocation/freeing hooks\n  kmemleak: Add the slob memory allocation/freeing hooks\n  kmemleak: Add the slab memory allocation/freeing hooks\n  kmemleak: Add documentation on the memory leak detector\n  kmemleak: Add the base support\n\nManual conflict resolution (with the slab/earlyboot changes) in:\n\tdrivers/char/vt.c\n\tinit/main.c\n\tmm/slab.c\n"
    },
    {
      "commit": "3296ca27f50ecbd71db1d808c7a72d311027f919",
      "tree": "833eaa58b2013bda86d4bd95faf6efad7a2d5ca4",
      "parents": [
        "e893123c7378192c094747dadec326b7c000c190",
        "73fbad283cfbbcf02939bdbda31fc4a30e729cca"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 11 10:01:41 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 11 10:01:41 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6: (44 commits)\n  nommu: Provide mmap_min_addr definition.\n  TOMOYO: Add description of lists and structures.\n  TOMOYO: Remove unused field.\n  integrity: ima audit dentry_open failure\n  TOMOYO: Remove unused parameter.\n  security: use mmap_min_addr indepedently of security models\n  TOMOYO: Simplify policy reader.\n  TOMOYO: Remove redundant markers.\n  SELinux: define audit permissions for audit tree netlink messages\n  TOMOYO: Remove unused mutex.\n  tomoyo: avoid get+put of task_struct\n  smack: Remove redundant initialization.\n  integrity: nfsd imbalance bug fix\n  rootplug: Remove redundant initialization.\n  smack: do not beyond ARRAY_SIZE of data\n  integrity: move ima_counts_get\n  integrity: path_check update\n  IMA: Add __init notation to ima functions\n  IMA: Minimal IMA policy and boot param for TCB IMA policy\n  selinux: remove obsolete read buffer limit from sel_read_bool\n  ...\n"
    },
    {
      "commit": "4f2294b6dc88d99295230d97fef2c9863cec44c3",
      "tree": "186c4b99261215b40e1e112e59259bb7f409cbaa",
      "parents": [
        "dbb1f81ca67a56c6cfce4c94d07c76378fd4af9e"
      ],
      "author": {
        "name": "Catalin Marinas",
        "email": "catalin.marinas@arm.com",
        "time": "Thu Jun 11 13:23:20 2009 +0100"
      },
      "committer": {
        "name": "Catalin Marinas",
        "email": "catalin.marinas@arm.com",
        "time": "Thu Jun 11 17:03:31 2009 +0100"
      },
      "message": "kmemleak: Add modules support\n\nThis patch handles the kmemleak operations needed for modules loading so\nthat memory allocations from inside a module are properly tracked.\n\nSigned-off-by: Catalin Marinas \u003ccatalin.marinas@arm.com\u003e\n"
    },
    {
      "commit": "d254117099d711f215e62427f55dfb8ebd5ad011",
      "tree": "0848ff8dd74314fec14a86497f8d288c86ba7c65",
      "parents": [
        "07ff7a0b187f3951788f64ae1f30e8109bc8e9eb",
        "8c9ed899b44c19e81859fbb0e9d659fe2f8630fc"
      ],
      "author": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Fri May 08 17:56:47 2009 +1000"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Fri May 08 17:56:47 2009 +1000"
      },
      "message": "Merge branch \u0027master\u0027 into next\n"
    },
    {
      "commit": "93eb677d74a4f7d3edfb678c94f6c0544d9fbad2",
      "tree": "8bbc46895be623a78316230362e94969dbb02135",
      "parents": [
        "f3948f8857ef5de239f28a61dddb1554a0ae4c2c"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Wed Apr 15 13:24:06 2009 -0400"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Apr 17 16:59:15 2009 +0200"
      },
      "message": "ftrace: use module notifier for function tracer\n\nThe hooks in the module code for the function tracer must be called\nbefore any of that module code runs. The function tracer hooks\nmodify the module (replacing calls to mcount to nops). If the code\nis executed while the change occurs, then the CPU can take a GPF.\n\nTo handle the above with a bit of paranoia, I originally implemented\nthe hooks as calls directly from the module code.\n\nAfter examining the notifier calls, it looks as though the start up\nnotify is called before any of the module\u0027s code is executed. This makes\nthe use of the notify safe with ftrace.\n\nOnly the startup notify is required to be \"safe\". The shutdown simply\nremoves the entries from the ftrace function list, and does not modify\nany code.\n\nThis change has another benefit. It removes a issue with a reverse dependency\nin the mutexes of ftrace_lock and module_mutex.\n\n[ Impact: fix lock dependency bug, cleanup ]\n\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "19e4529ee7345079eeacc8e40cf69a304a64dc23",
      "tree": "5f08c1803c10178373468e1fd3e24a91092cb7a1",
      "parents": [
        "ecfcc53fef3c357574bb6143dce6631e6d56295c"
      ],
      "author": {
        "name": "Stephen Rothwell",
        "email": "sfr@canb.auug.org.au",
        "time": "Tue Apr 14 17:27:18 2009 +1000"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Wed Apr 15 08:17:31 2009 +1000"
      },
      "message": "modules: Fix up build when CONFIG_MODULE_UNLOAD\u003dn.\n\nCommit 3d43321b7015387cfebbe26436d0e9d299162ea1 (\"modules: sysctl to\nblock module loading\") introduces a modules_disabled variable that is\nonly defined if CONFIG_MODULE_UNLOAD is enabled, despite being used in\nother places. This moves it up and fixes up the build.\n\n  CC      kernel/module.o\nkernel/module.c: In function \u0027sys_init_module\u0027:\nkernel/module.c:2401: error: \u0027modules_disabled\u0027 undeclared (first use in this function)\nkernel/module.c:2401: error: (Each undeclared identifier is reported only once\nkernel/module.c:2401: error: for each function it appears in.)\nmake[1]: *** [kernel/module.o] Error 1\nmake: *** [kernel/module.o] Error 2\n\nSigned-off-by: Paul Mundt \u003clethal@linux-sh.org\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "6d723736e472f7a0cd5b62c84152fceead241328",
      "tree": "8df2f6c47ebdfdeb8979758c877a5abbd9c06aef",
      "parents": [
        "17c873ec280a03894bc718af817f7f24fa787ae1"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Fri Apr 10 14:53:50 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue Apr 14 12:58:03 2009 -0400"
      },
      "message": "tracing/events: add support for modules to TRACE_EVENT\n\nImpact: allow modules to add TRACE_EVENTS on load\n\nThis patch adds the final hooks to allow modules to use the TRACE_EVENT\nmacro. A notifier and a data structure are used to link the TRACE_EVENTs\ndefined in the module to connect them with the ftrace event tracing system.\n\nIt also adds the necessary automated clean ups to the trace events when a\nmodule is removed.\n\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "d6de2c80e9d758d2e36c21699117db6178c0f517",
      "tree": "8f581ff1b8bce93fdeac949e0549c791d1ce52f9",
      "parents": [
        "7933a3cfba017330ebb25f9820cb25ec9cdd67cc"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 10 12:17:41 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Apr 11 12:44:49 2009 -0700"
      },
      "message": "async: Fix module loading async-work regression\n\nSeveral drivers use asynchronous work to do device discovery, and we\nsynchronize with them in the compiled-in case before we actually try to\nmount root filesystems etc.\n\nHowever, when compiled as modules, that synchronization is missing - the\nmodule loading completes, but the driver hasn\u0027t actually finished\nprobing for devices, and that means that any user mode that expects to\nuse the devices after the \u0027insmod\u0027 is now potentially broken.\n\nWe already saw one case of a similar issue in the ACPI battery code,\nwhere the kernel itself expected the module to be all done, and unmapped\nthe init memory - but the async device discovery was still running.\nThat got hacked around by just removing the \"__init\" (see commit\n5d38258ec026921a7b266f4047ebeaa75db358e5 \"ACPI battery: fix async boot\noops\"), but the real fix is to just make the module loading wait for all\nasync work to be completed.\n\nIt will slow down module loading, but since common devices should be\nbuilt in anyway, and since the bug is really annoying and hard to handle\nfrom user space (and caused several S3 resume regressions), the simple\nfix to wait is the right one.\n\nThis fixes at least\n\n\thttp://bugzilla.kernel.org/show_bug.cgi?id\u003d13063\n\nbut probably a few other bugzilla entries too (12936, for example), and\nis confirmed to fix Rafael\u0027s storage driver breakage after resume bug\nreport (no bugzilla entry).\n\nWe should also be able to now revert that ACPI battery fix.\n\nReported-and-tested-by: Rafael J. Wysocki \u003crjw@suse.com\u003e\nTested-by: Heinz Diehl \u003chtd@fancy-poultry.org\u003e\nAcked-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2e45e77787c9d0720b046eb69856edf43b17e33e",
      "tree": "56c2bd470e3eec849bb8bb0a2263a6ef0b4b7694",
      "parents": [
        "d508afb437daee7cf07da085b635c44a4ebf9b38"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Apr 07 17:12:43 2009 +0930"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Apr 07 17:12:43 2009 +0930"
      },
      "message": "Revert \"module: remove the SHF_ALLOC flag on the __versions section.\"\n\nThis reverts commit 9cb610d8e35fe3ec95a2fe2030b02f85aeea83c1.\n\nThis was an impressively stupid patch.  Firstly, we reset the SHF_ALLOC\nflag lower down in the same function, so the patch was useless.  Even\nbetter, find_sec() ignores sections with SHF_ALLOC not set, so\nit breaks CONFIG_MODVERSIONS\u003dy with CONFIG_MODULE_FORCE_LOAD\u003dn, which\nrefuses to load the module since it can\u0027t find the __versions section.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "714f83d5d9f7c785f622259dad1f4fad12d64664",
      "tree": "20563541ae438e11d686b4d629074eb002a481b7",
      "parents": [
        "8901e7ffc2fa78ede7ce9826dbad68a3a25dc2dc",
        "645dae969c3b8651c5bc7c54a1835ec03820f85f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Apr 05 11:04:19 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Apr 05 11:04:19 2009 -0700"
      },
      "message": "Merge branch \u0027tracing-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027tracing-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (413 commits)\n  tracing, net: fix net tree and tracing tree merge interaction\n  tracing, powerpc: fix powerpc tree and tracing tree interaction\n  ring-buffer: do not remove reader page from list on ring buffer free\n  function-graph: allow unregistering twice\n  trace: make argument \u0027mem\u0027 of trace_seq_putmem() const\n  tracing: add missing \u0027extern\u0027 keywords to trace_output.h\n  tracing: provide trace_seq_reserve()\n  blktrace: print out BLK_TN_MESSAGE properly\n  blktrace: extract duplidate code\n  blktrace: fix memory leak when freeing struct blk_io_trace\n  blktrace: fix blk_probes_ref chaos\n  blktrace: make classic output more classic\n  blktrace: fix off-by-one bug\n  blktrace: fix the original blktrace\n  blktrace: fix a race when creating blk_tree_root in debugfs\n  blktrace: fix timestamp in binary output\n  tracing, Text Edit Lock: cleanup\n  tracing: filter fix for TRACE_EVENT_FORMAT events\n  ftrace: Using FTRACE_WARN_ON() to check \"freed record\" in ftrace_release()\n  x86: kretprobe-booster interrupt emulation code fix\n  ...\n\nFix up trivial conflicts in\n arch/parisc/include/asm/ftrace.h\n include/linux/memory.h\n kernel/extable.c\n kernel/module.c\n"
    },
    {
      "commit": "3d43321b7015387cfebbe26436d0e9d299162ea1",
      "tree": "bae6bd123c8f573e844a7af11c96eb5f6a73e0ee",
      "parents": [
        "8a6f83afd0c5355db6d11394a798e94950306239"
      ],
      "author": {
        "name": "Kees Cook",
        "email": "kees@ubuntu.com",
        "time": "Thu Apr 02 15:49:29 2009 -0700"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Fri Apr 03 11:47:11 2009 +1100"
      },
      "message": "modules: sysctl to block module loading\n\nImplement a sysctl file that disables module-loading system-wide since\nthere is no longer a viable way to remove CAP_SYS_MODULE after the system\nbounding capability set was removed in 2.6.25.\n\nValue can only be set to \"1\", and is tested only if standard capability\nchecks allow CAP_SYS_MODULE.  Given existing /dev/mem protections, this\nshould allow administrators a one-way method to block module loading\nafter initial boot-time module loading has finished.\n\nSigned-off-by: Kees Cook \u003ckees.cook@canonical.com\u003e\nAcked-by: Serge Hallyn \u003cserue@us.ibm.com\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "8302294f43250dc337108c51882a6007f2b1e2e0",
      "tree": "85acd4440799c46a372df9cad170fa0c21e59096",
      "parents": [
        "4fe70410d9a219dabb47328effccae7e7f2a6e26",
        "2e572895bf3203e881356a4039ab0fa428ed2639"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Apr 01 21:54:19 2009 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Apr 02 00:49:02 2009 +0200"
      },
      "message": "Merge branch \u0027tracing/core-v2\u0027 into tracing-for-linus\n\nConflicts:\n\tinclude/linux/slub_def.h\n\tlib/Kconfig.debug\n\tmm/slob.c\n\tmm/slub.c\n"
    },
    {
      "commit": "49502677e11079c2e3e01867c922a894ce06a8be",
      "tree": "c3e512207a4d5c4cc0678b8154c2643ca39201e0",
      "parents": [
        "66f92cf9d415e96a5bdd6c64de8dd8418595d2fc"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Mar 31 13:05:36 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Mar 31 13:05:37 2009 +1030"
      },
      "message": "module: use strstarts()\n\nImpact: minor cleanup.\n\nI\u0027m not going to neaten anyone else\u0027s code, but I\u0027m happy to clean up\nmy own.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "e91defa26c527ceeaff6266c55cdc7e17c9081a2",
      "tree": "03554f76949e5b1bcd4e640a10846d9540b97640",
      "parents": [
        "acae05156551fd7528fbb616271e672789388e3c"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Mar 31 13:05:35 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Mar 31 13:05:35 2009 +1030"
      },
      "message": "module: don\u0027t use stop_machine on module load\n\nKay Sievers \u003ckay.sievers@vrfy.org\u003e discovered that boot times are slowed\nby about half a second because all the stop_machine_create() calls,\nand he only probes about 40 modules (I have 125 loaded on this laptop).\n\nWe only do stop_machine_create() so we can unlink the module if\nsomething goes wrong, but it\u0027s overkill (and buggy anyway: if\nstop_machine_create() fails we still call stop_machine_destroy()).\n\nSince we are only protecting against kallsyms (esp. oops) walking the\nlist, synchronize_sched() is sufficient (synchronize_rcu() is probably\nsufficient, but we\u0027re not in a hurry).\n\nKay says of this patch:\n\t... no module takes more than 40 millisecs to link now, most of\n\tthem are between 3 and 8 millisecs.\n\n\tThat looks very different to the numbers without this patch\n\tand the otherwise same setup, where we get heavy noise in the\n\ttraces and many delays of up to 200 millisecs until linking,\n\tmost of them taking 30+ millisecs.\n\nTested-by: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "8c8ef42aee8fcfb4128bb94c50d55c9f80ade525",
      "tree": "58141fdd1afc0887dcc3cb91ab4c7609df0963e7",
      "parents": [
        "9cb610d8e35fe3ec95a2fe2030b02f85aeea83c1"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Mar 31 13:05:34 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Mar 31 13:05:34 2009 +1030"
      },
      "message": "module: include other structures in module version check\n\nWith CONFIG_MODVERSIONS, we version \u0027struct module\u0027 using a dummy\nexport, but other things matter too:\n\n1) \u0027struct modversion_info\u0027 determines the layout of the __versions section,\n2) \u0027struct kernel_param\u0027 determines the layout of the __params section,\n3) \u0027struct kernel_symbol\u0027 determines __ksymtab*.\n4) \u0027struct marker\u0027 determines __markers.\n5) \u0027struct tracepoint\u0027 determines __tracepoints.\n\nSo we rename \u0027struct_module\u0027 to \u0027module_layout\u0027 and include these in\nthe signature.  Now it\u0027s general we can add others later on without\nconfusion.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "9cb610d8e35fe3ec95a2fe2030b02f85aeea83c1",
      "tree": "282863f8b6560e5373f40e9d6b7f2fa2dcc8e86d",
      "parents": [
        "c6e665c8f0c18ab3686117905765b5139efd6ebd"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Mar 31 13:05:33 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Mar 31 13:05:34 2009 +1030"
      },
      "message": "module: remove the SHF_ALLOC flag on the __versions section.\n\nImpact: reduce kernel memory usage\n\nThis patch just takes off the SHF_ALLOC flag on __versions so we don\u0027t\nkeep them around after module load.\n\nThis saves about 7% of module memory if CONFIG_MODVERSIONS\u003dy.\n\nCc: Shawn Bohrer \u003cshawn.bohrer@gmail.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "c6e665c8f0c18ab3686117905765b5139efd6ebd",
      "tree": "0e478ff0a38a52b2c3ff00024f081c94260fdd61",
      "parents": [
        "c6b37801911d7f4663c99cad8aa230bc934cea82"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Mar 31 13:05:33 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Mar 31 13:05:33 2009 +1030"
      },
      "message": "module: clarify the force-loading taint message.\n\nImpact: Message cleanup\n\nTwo of three callers of try_to_force_load() are not because of a\nmissing version, so change the messages:\n\nOld:\n\t\u003cmodname\u003e: no version for \"magic\" found: kernel tainted.\nNew:\n\t\u003cmodname\u003e: bad vermagic: kernel tainted.\n\nOld:\n\t\u003cmodname\u003e: no version for \"nocrc\" found: kernel tainted.\nNew:\n\t\u003cmodname\u003e: no versions for exported symbols: kernel tainted.\n\nOld:\n\t\u003cmodname\u003e: no version for \"\u003csymname\u003e\" found: kernel tainted.\nNew:\n\t\u003cmodname\u003e: \u003csymname\u003e: kernel tainted.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "c6b37801911d7f4663c99cad8aa230bc934cea82",
      "tree": "a39a317c5f9fa2d5ba9813bbe29e3139c52e194e",
      "parents": [
        "75a66614db21007bcc8c37f9c5d5b922981387b9"
      ],
      "author": {
        "name": "Tim Abbott",
        "email": "tabbott@mit.edu",
        "time": "Fri Dec 05 19:03:59 2008 -0500"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Mar 31 13:05:33 2009 +1030"
      },
      "message": "module: Export symbols needed for Ksplice\n\nImpact: Expose some module.c symbols\n\nKsplice uses several functions from module.c in order to resolve\nsymbols and implement dependency handling.  Calling these functions\nrequires holding module_mutex, so it is exported.\n\n(This is just the module part of a bigger add-exports patch from Tim).\n\nCc: Anders Kaseorg \u003candersk@mit.edu\u003e\nCc: Jeff Arnold \u003cjbarnold@mit.edu\u003e\nSigned-off-by: Tim Abbott \u003ctabbott@mit.edu\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "75a66614db21007bcc8c37f9c5d5b922981387b9",
      "tree": "d02c905a3aee02ec25ce38700f47d0fa57d2cbf7",
      "parents": [
        "a6e6abd575fcbe6572ebc7a70ad616406d206fa8"
      ],
      "author": {
        "name": "Anders Kaseorg",
        "email": "andersk@mit.edu",
        "time": "Fri Dec 05 19:03:58 2008 -0500"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Mar 31 13:05:32 2009 +1030"
      },
      "message": "Ksplice: Add functions for walking kallsyms symbols\n\nImpact: New API\n\nkallsyms_lookup_name only returns the first match that it finds.  Ksplice\nneeds information about all symbols with a given name in order to correctly\nresolve local symbols.\n\nkallsyms_on_each_symbol provides a generic mechanism for iterating over the\nkallsyms table.\n\nCc: Jeff Arnold \u003cjbarnold@mit.edu\u003e\nCc: Tim Abbott \u003ctabbott@mit.edu\u003e\nSigned-off-by: Anders Kaseorg \u003candersk@mit.edu\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "a6e6abd575fcbe6572ebc7a70ad616406d206fa8",
      "tree": "3909d2be063116936179bb4da85d5cb4aed32ce6",
      "parents": [
        "e610499e2656e61975affd0af56b26eb73964c84"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Mar 31 13:05:31 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Mar 31 13:05:32 2009 +1030"
      },
      "message": "module: remove module_text_address()\n\nImpact: Replace and remove risky (non-EXPORTed) API\n\nmodule_text_address() returns a pointer to the module, which given locking\nimprovements in module.c, is useless except to test for NULL:\n\n1) If the module can\u0027t go away, use __module_text_address.\n2) Otherwise, just use is_module_text_address().\n\nCc: linux-mtd@lists.infradead.org\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "e610499e2656e61975affd0af56b26eb73964c84",
      "tree": "e870def77ba17f717a8cf2766f0b4ac8c2ae89f3",
      "parents": [
        "414fd31b2553aaf160ca9b9afe45aa0372b01b92"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Mar 31 13:05:31 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Mar 31 13:05:31 2009 +1030"
      },
      "message": "module: __module_address\n\nImpact: New API, cleanup\n\nksplice wants to know the bounds of a module, not just the module text.\n\nIt makes sense to have __module_address.  We then implement\nis_module_address and __module_text_address in terms of this (and\nchange is_module_text_address() to bool while we\u0027re at it).\n\nAlso, add proper kerneldoc for them all.\n\nCc: Anders Kaseorg \u003candersk@mit.edu\u003e\nCc: Jeff Arnold \u003cjbarnold@mit.edu\u003e\nCc: Tim Abbott \u003ctabbott@mit.edu\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "414fd31b2553aaf160ca9b9afe45aa0372b01b92",
      "tree": "9af0fdc90a26aa1b086fdb923452fa92752546f7",
      "parents": [
        "b10153fe31dde3805f8320b61ef147cebe379aee"
      ],
      "author": {
        "name": "Tim Abbott",
        "email": "tabbott@mit.edu",
        "time": "Fri Dec 05 19:03:56 2008 -0500"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Mar 31 13:05:31 2009 +1030"
      },
      "message": "module: Make find_symbol return a struct kernel_symbol\n\nImpact: Cleanup, internal API change\n\nKsplice needs access to the kernel_symbol structure in order to support\nmodifications to the exported symbol table.\n\nCc: Anders Kaseorg \u003candersk@mit.edu\u003e\nCc: Jeff Arnold \u003cjbarnold@mit.edu\u003e\nSigned-off-by: Tim Abbott \u003ctabbott@mit.edu\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e (bugfix and style)\n"
    },
    {
      "commit": "b10153fe31dde3805f8320b61ef147cebe379aee",
      "tree": "34328cc10414d77bc63f39d25447460c5ce14a05",
      "parents": [
        "e180a6b7759a99a28cbcce3547c4c80822cb6c2a"
      ],
      "author": {
        "name": "Américo Wang",
        "email": "xiyou.wangcong@gmail.com",
        "time": "Wed Mar 25 00:07:19 2009 +0800"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Mar 31 13:05:30 2009 +1030"
      },
      "message": "kernel/module.c: fix an unused goto label\n\nImpact: cleanup\n\nLabel \u0027free_init\u0027 is only used when defined(CONFIG_MODULE_UNLOAD) \u0026\u0026\ndefined(CONFIG_SMP), so move it inside to shut up gcc.\n\nSigned-off-by: WANG Cong \u003cxiyou.wangcong@gmail.com\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "e180a6b7759a99a28cbcce3547c4c80822cb6c2a",
      "tree": "d52b950935f3192d13bdd4ad9377b39bab21325e",
      "parents": [
        "15f7176eb1cccec0a332541285ee752b935c1c85"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Mar 31 13:05:29 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Mar 31 13:05:30 2009 +1030"
      },
      "message": "param: fix charp parameters set via sysfs\n\nImpact: fix crash on reading from /sys/module/.../ieee80211_default_rc_algo\n\nThe module_param type \"charp\" simply sets a char * pointer in the\nmodule to the parameter in the commandline string: this is why we keep\nthe (mangled) module command line around.  But when set via sysfs (as\nabout 11 charp parameters can be) this memory is freed on the way\nout of the write().  Future reads hit random mem.\n\nSo we kstrdup instead: we have to check we\u0027re not in early commandline\nparsing, and we have to note when we\u0027ve used it so we can reliably\nkfree the parameter when it\u0027s next overwritten, and also on module\nunload.\n\n(Thanks to Randy Dunlap for CONFIG_SYSFS\u003dn fixes)\n\nReported-by: Sitsofe Wheeler \u003csitsofe@yahoo.com\u003e\nDiagnosed-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nTested-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nTested-by: Christof Schmitt \u003cchristof.schmitt@de.ibm.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "6e15cf04860074ad032e88c306bea656bbdd0f22",
      "tree": "c346383bb7563e8d66b2f4a502f875b259c34870",
      "parents": [
        "be0ea69674ed95e1e98cb3687a241badc756d228",
        "60db56422043aaa455ac7f858ce23c273220f9d9"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Mar 26 21:39:17 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Mar 27 17:28:43 2009 +0100"
      },
      "message": "Merge branch \u0027core/percpu\u0027 into percpu-cpumask-x86-for-linus-2\n\nConflicts:\n\tarch/parisc/kernel/irq.c\n\tarch/x86/include/asm/fixmap_64.h\n\tarch/x86/include/asm/setup.h\n\tkernel/irq/handle.c\n\nSemantic merge:\n        arch/x86/include/asm/fixmap.h\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "e9d376f0fa66bd630fe27403669c6ae6c22a868f",
      "tree": "6eadef32eb421647ae98d88341b9aceb259aaf22",
      "parents": [
        "095160aee954688a9bad225952c4bee546541e19"
      ],
      "author": {
        "name": "Jason Baron",
        "email": "jbaron@redhat.com",
        "time": "Thu Feb 05 11:51:38 2009 -0500"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Tue Mar 24 16:38:26 2009 -0700"
      },
      "message": "dynamic debug: combine dprintk and dynamic printk\n\nThis patch combines Greg Bank\u0027s dprintk() work with the existing dynamic\nprintk patchset, we are now calling it \u0027dynamic debug\u0027.\n\nThe new feature of this patchset is a richer /debugfs control file interface,\n(an example output from my system is at the bottom), which allows fined grained\ncontrol over the the debug output. The output can be controlled by function,\nfile, module, format string, and line number.\n\nfor example, enabled all debug messages in module \u0027nf_conntrack\u0027:\n\necho -n \u0027module nf_conntrack +p\u0027 \u003e /mnt/debugfs/dynamic_debug/control\n\nto disable them:\n\necho -n \u0027module nf_conntrack -p\u0027 \u003e /mnt/debugfs/dynamic_debug/control\n\nA further explanation can be found in the documentation patch.\n\nSigned-off-by: Greg Banks \u003cgnb@sgi.com\u003e\nSigned-off-by: Jason Baron \u003cjbaron@redhat.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "22de89b371a18086162eacd9f8c960299334ab01",
      "tree": "518227dde7ba892413163b32341c5d319da13949",
      "parents": [
        "3bf832ce1fe6988148d392599f34ca0c6a34427d",
        "f02b8624fedca39886b0eef770dca70c2f0749b3",
        "a635cf0497342978d417cae19d4a4823932977ff",
        "65c24491b4fef017c64e39ec64384fde5e05e0a0"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Mar 20 10:14:53 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Mar 20 10:14:53 2009 +0100"
      },
      "message": "Merge branches \u0027tracing/ftrace\u0027, \u0027tracing/kprobes\u0027, \u0027tracing/tasks\u0027 and \u0027linus\u0027 into tracing/core\n"
    },
    {
      "commit": "6e2b75740bed35df98b8113300579e13ed2ce848",
      "tree": "225f75f803450c728d546c755f7398b102f8cf3d",
      "parents": [
        "ee568b25ee9e160b32d1aef73d8b2ee9c05d34db"
      ],
      "author": {
        "name": "Masami Hiramatsu",
        "email": "mhiramat@redhat.com",
        "time": "Mon Mar 16 18:13:36 2009 -0400"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Wed Mar 18 09:31:21 2009 +1030"
      },
      "message": "module: fix refptr allocation and release order\n\nImpact: fix ref-after-free crash on failed module load\n\nFix refptr bug: Change refptr allocation and release order not to access a module\ndata structure pointed by \u0027mod\u0027 after freeing mod-\u003emodule_core.\nThis bug will cause kernel panic(e.g. failed to find undefined symbols).\n\nThis bug was reported on systemtap bugzilla.\nhttp://sources.redhat.com/bugzilla/show_bug.cgi?id\u003d9927\n\nSigned-off-by: Masami Hiramatsu \u003cmhiramat@redhat.com\u003e\nCc: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "8293dd6f86e759068ce918aa10ca9c5d6d711cd0",
      "tree": "de366d69078bf2b98c6765fa4ec1cc652f3d3173",
      "parents": [
        "631595fbf4aeac260e664a8a002897e4db6a50dd",
        "467c88fee51e2ae862e9485245687da0730e29aa"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Mar 10 10:16:17 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Mar 10 10:17:48 2009 +0100"
      },
      "message": "Merge branch \u0027x86/core\u0027 into tracing/ftrace\n\nSemantic merge:\n\n  kernel/trace/trace_functions_graph.c\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "f0ef03985130287c6c84ebe69416cf790e6cc00e",
      "tree": "3ecb04cc4d82e5fc3ae5f1747e6da172ae8cbcb7",
      "parents": [
        "16097439703bcd38e9fe5608c12add6dacb825ea",
        "31bbed527e7039203920c51c9fb48c27aed0820c"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Mar 06 16:44:14 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Mar 06 16:45:01 2009 +0100"
      },
      "message": "Merge branch \u0027x86/core\u0027 into tracing/textedit\n\nConflicts:\n\tarch/x86/Kconfig\n\tblock/blktrace.c\n\tkernel/irq/handle.c\n\nSemantic conflict:\n\tkernel/trace/blktrace.c\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "edcb463997ed7b2ffa3bac76e3e75957318f2e01",
      "tree": "d1eefb78736404993b0de4a049392f9af578e29e",
      "parents": [
        "3e24aa58907c62bc79d1094e941a374568f62522"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Mar 06 14:33:59 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Mar 06 14:33:59 2009 +0900"
      },
      "message": "percpu, module: implement reserved allocation and use it for module percpu variables\n\nImpact: add reserved allocation functionality and use it for module\n\tpercpu variables\n\nThis patch implements reserved allocation from the first chunk.  When\nsetting up the first chunk, arch can ask to set aside certain number\nof bytes right after the core static area which is available only\nthrough a separate reserved allocator.  This will be used primarily\nfor module static percpu variables on architectures with limited\nrelocation range to ensure that the module perpcu symbols are inside\nthe relocatable range.\n\nIf reserved area is requested, the first chunk becomes reserved and\nisn\u0027t available for regular allocation.  If the first chunk also\nincludes piggy-back dynamic allocation area, a separate chunk mapping\nthe same region is created to serve dynamic allocation.  The first one\nis called static first chunk and the second dynamic first chunk.\nAlthough they share the page map, their different area map\ninitializations guarantee they serve disjoint areas according to their\npurposes.\n\nIf arch doesn\u0027t setup reserved area, reserved allocation is handled\nlike any other allocation.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "fbf59bc9d74d1fb30b8e0630743aff2806eafcea",
      "tree": "3f0a7b7cf809a25e27b7a5ba0b16321fdb901801",
      "parents": [
        "8fc48985006da4ceba24508db64ec77fc0dfe3bb"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Feb 20 16:29:08 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Feb 20 16:29:08 2009 +0900"
      },
      "message": "percpu: implement new dynamic percpu allocator\n\nImpact: new scalable dynamic percpu allocator which allows dynamic\n        percpu areas to be accessed the same way as static ones\n\nImplement scalable dynamic percpu allocator which can be used for both\nstatic and dynamic percpu areas.  This will allow static and dynamic\nareas to share faster direct access methods.  This feature is optional\nand enabled only when CONFIG_HAVE_DYNAMIC_PER_CPU_AREA is defined by\narch.  Please read comment on top of mm/percpu.c for details.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6b588c18f8dacfa6d7957c33c5ff832096e752d3",
      "tree": "c59c2f1719ce9d4bc23e85b4f205772a61944530",
      "parents": [
        "734269521e320ad14ed39ae9b64d482b9028dcd2"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Feb 20 16:29:07 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Feb 20 16:29:07 2009 +0900"
      },
      "message": "module: reorder module pcpu related functions\n\nImpact: cleanup\n\nMove percpu_modinit() upwards.  This is to ease further changes.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "3861a17bcc0af815f684c6178bc9ec2d790c350e",
      "tree": "e5ab19215ea802a0c57279cd6dd89f68347b53b4",
      "parents": [
        "1292211058aaf872eeb2a0e2677d237916b4501f"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Sun Feb 08 00:04:02 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Feb 09 10:51:38 2009 +0100"
      },
      "message": "tracing/function-graph-tracer: drop the kernel_text_address check\n\nWhen the function graph tracer picks a return address, it ensures this address\nis really a kernel text one by calling __kernel_text_address()\n\nActually this path has never been taken.Its role was more likely to debug the tracer\non the beginning of its development but this function is wasteful since it is called\nfor every traced function.\n\nThe fault check is already sufficient.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "720eba31f47aeade8ec130ca7f4353223c49170f",
      "tree": "4aef103b59a0fb7b9406fd3e4bb09bdf7e3ad2f7",
      "parents": [
        "27421e211a39784694b597dbf35848b88363c248"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Tue Feb 03 13:31:36 2009 +1030"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Feb 02 19:17:55 2009 -0800"
      },
      "message": "modules: Use a better scheme for refcounting\n\nCurrent refcounting for modules (done if CONFIG_MODULE_UNLOAD\u003dy) is\nusing a lot of memory.\n\nEach \u0027struct module\u0027 contains an [NR_CPUS] array of full cache lines.\n\nThis patch uses existing infrastructure (percpu_modalloc() \u0026\npercpu_modfree()) to allocate percpu space for the refcount storage.\n\nInstead of wasting NR_CPUS*128 bytes (on i386), we now use\nnr_cpu_ids*sizeof(local_t) bytes.\n\nOn a typical distro, where NR_CPUS\u003d8, shiping 2000 modules, we reduce\nsize of module files by about 2 Mbytes. (1Kb per module)\n\nInstead of having all refcounters in the same memory node - with TLB misses\nbecause of vmalloc() - this new implementation permits to have better\nNUMA properties, since each  CPU will use storage on its preferred node,\nthanks to percpu storage.\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "17da2bd90abf428523de0fb98f7075e00e3ed42e",
      "tree": "4f2daf3cb792b7da62e6ae771b58902cc5ea24ab",
      "parents": [
        "754fe8d297bfae7b77f7ce866e2fb0c5fb186506"
      ],
      "author": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Wed Jan 14 14:14:10 2009 +0100"
      },
      "committer": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Wed Jan 14 14:15:21 2009 +0100"
      },
      "message": "[CVE-2009-0029] System call wrappers part 08\n\nSigned-off-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\n"
    },
    {
      "commit": "22a9d645677feefd402befd02edd59b122289ef1",
      "tree": "9f1215cc8f7f0e1c36b03882b2926cc26ccfa5ff",
      "parents": [
        "ede6f5aea054d3fb67c78857f7abdee602302043"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Wed Jan 07 08:45:46 2009 -0800"
      },
      "committer": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Wed Jan 07 08:45:46 2009 -0800"
      },
      "message": "async: Asynchronous function calls to speed up kernel boot\n\nRight now, most of the kernel boot is strictly synchronous, such that\nvarious hardware delays are done sequentially.\n\nIn order to make the kernel boot faster, this patch introduces\ninfrastructure to allow doing some of the initialization steps\nasynchronously, which will hide significant portions of the hardware delays\nin practice.\n\nIn order to not change device order and other similar observables, this\npatch does NOT do full parallel initialization.\n\nRather, it operates more in the way an out of order CPU does; the work may\nbe done out of order and asynchronous, but the observable effects\n(instruction retiring for the CPU) are still done in the original sequence.\n\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\n"
    },
    {
      "commit": "0deddf436a37c18ceb26c6e3b632fb9b5f58a0c1",
      "tree": "ff6e3066d76d57b22fd82eed8f8e9d2ce07cf4f0",
      "parents": [
        "49ad2fd76c97133fb396edc24ded7fe26093a578"
      ],
      "author": {
        "name": "Masami Hiramatsu",
        "email": "mhiramat@redhat.com",
        "time": "Tue Jan 06 14:41:54 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:21 2009 -0800"
      },
      "message": "module: add MODULE_STATE_LIVE notify\n\nAdd a module notifier call which notifies that the state of a module\nchanges from MODULE_STATE_COMING to MODULE_STATE_LIVE.\n\nSigned-off-by: Masami Hiramatsu \u003cmhiramat@redhat.com\u003e\nCc: Ananth N Mavinakayanahalli \u003cananth@in.ibm.com\u003e\nCc: Anil S Keshavamurthy \u003canil.s.keshavamurthy@intel.com\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": "a06f6211ef9b1785922f9d0e8766d63ac4e66de1",
      "tree": "4ceac7a7eda00cad3b3f02876e75c1c7af41ce23",
      "parents": [
        "12da3b888b2035bb0f106122f1cc1b6d357fad53"
      ],
      "author": {
        "name": "Masami Hiramatsu",
        "email": "mhiramat@redhat.com",
        "time": "Tue Jan 06 14:41:49 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:20 2009 -0800"
      },
      "message": "module: add within_module_core() and within_module_init()\n\nThis series of patches allows kprobes to probe module\u0027s __init and __exit\nfunctions.  This means, you can probe driver initialization and\nterminating.\n\nCurrently, kprobes can\u0027t probe __init function because these functions are\nfreed after module initialization.  And it also can\u0027t probe module __exit\nfunctions because kprobe increments reference count of target module and\nuser can\u0027t unload it.  this means __exit functions never be called unless\nremoving probes from the module.\n\nTo solve both cases, this series of patches introduces GONE flag and sets\nit when the target code is freed(for this purpose, kprobes hooks\nMODULE_STATE_* events).  This also removes refcount incrementing for\nallowing user to unload target module.  Users can check which probes are\nGONE by debugfs interface.  For taking timing of freeing module\u0027s .init\ntext, these also include a patch which adds module\u0027s notifier of\nMODULE_STATE_LIVE event.\n\nThis patch:\n\nAdd within_module_core() and within_module_init() for checking whether an\naddress is in the module .init.text section or .text section, and replace\nwithin() local inline functions in kernel/module.c with them.\n\nkprobes uses these functions to check where the kprobe is inserted.\n\nSigned-off-by: Masami Hiramatsu \u003cmhiramat@redhat.com\u003e\nCc: Ananth N Mavinakayanahalli \u003cananth@in.ibm.com\u003e\nCc: Anil S Keshavamurthy \u003canil.s.keshavamurthy@intel.com\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": "f1883f86dea84fe47a71a39fc1afccc005915ed8",
      "tree": "357c50d2eb44e9e62c39c0c1025bae7b2b6eba67",
      "parents": [
        "eaccbfa564e48c87626594511f42dc8c0ad2daae"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Tue Jan 06 14:40:45 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:11 2009 -0800"
      },
      "message": "Remove remaining unwinder code\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: Gabor Gombas \u003cgombasg@sztaki.hu\u003e\nCc: Jan Beulich \u003cjbeulich@novell.com\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\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": "9e01892c4234070bbcf3a9f582514c8b91464375",
      "tree": "3df2573e7f5bd469932efd50d2001af9736f53bf",
      "parents": [
        "9ea09af3bd3090e8349ca2899ca2011bd94cda85"
      ],
      "author": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Mon Dec 22 12:36:31 2008 +0100"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Jan 05 08:40:15 2009 +1030"
      },
      "message": "module: convert to stop_machine_create/destroy.\n\nThe module code relies on a non-failing stop_machine call. So we create\nthe kstop threads in advance and with that make sure the call won\u0027t fail.\n\nSigned-off-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "088af9a6e05d51e7c3dc85d45d8b7a52c3ee08d7",
      "tree": "86e2dd6be7fbc17cb01a42fc11f5eef794a824df",
      "parents": [
        "d1e99d7ae4e6bbd1ebb5e81ecd3af2b8793efee0"
      ],
      "author": {
        "name": "Helge Deller",
        "email": "deller@gmx.de",
        "time": "Wed Dec 31 12:31:18 2008 +0100"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Jan 05 08:40:13 2009 +1030"
      },
      "message": "module: fix module loading failure of large kernel modules for parisc\n\nWhen creating the final layout of a kernel module in memory, allow the\nmodule loader to reserve some additional memory in front of a given section.\nThis is currently only needed for the parisc port which needs to put the\nstub entries there to fulfill the 17/22bit PCREL relocations with large\nkernel modules like xfs.\n\nSigned-off-by: Helge Deller \u003cdeller@gmx.de\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e (renamed fn)\n"
    },
    {
      "commit": "d1e99d7ae4e6bbd1ebb5e81ecd3af2b8793efee0",
      "tree": "15254031f4f91656f55876f52d037b7c3525c4db",
      "parents": [
        "ca4787b779dd698a2a33a328aa5fa90a3e954077"
      ],
      "author": {
        "name": "Jianjun Kong",
        "email": "jianjun@zeuux.org",
        "time": "Mon Dec 08 14:26:29 2008 +0800"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Jan 05 08:40:11 2009 +1030"
      },
      "message": "module: fix warning of unused function when !CONFIG_PROC_FS\n\nFix this warning:\nkernel/module.c:824: warning: ‘print_unload_info’ defined but not used\nprint_unload_info() just was used when CONFIG_PROC_FS was defined.\nThis patch mark print_unload_info() inline to solve the problem.\n\nSigned-off-by: Jianjun Kong \u003cjianjun@zeuux.org\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCC: Ingo Molnar \u003cmingo@elte.hu\u003e\nCC: Américo Wang \u003cxiyou.wangcong@gmail.com\u003e\n"
    },
    {
      "commit": "ca4787b779dd698a2a33a328aa5fa90a3e954077",
      "tree": "678eddc5cfd0b366b1ef5662cf6ccdd7b7b2f135",
      "parents": [
        "a327ca2c2674c5a9a0073421df19bfc362698136"
      ],
      "author": {
        "name": "Tim Abbott",
        "email": "tabbott@MIT.EDU",
        "time": "Mon Jan 05 08:40:10 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Jan 05 08:40:11 2009 +1030"
      },
      "message": "kernel/module.c: compare symbol values when marking symbols as exported in /proc/kallsyms.\n\nWhen there are two symbols in a module with the same name, one of which is\nexported, both will be marked as exported in /proc/kallsyms.  There aren\u0027t\nany instances of this in the current kernel, but it is easy to construct a\nsimple module with two compilation units that exhibits the problem.\n\n$ objdump -j .text -t testmod.ko | grep foo\n00000000 l     F .text\t00000032 foo\n00000080 g     F .text\t00000001 foo\n$ sudo insmod testmod.ko\n$ grep \"T foo\" /proc/kallsyms\nc28e8000 T foo\t[testmod]\nc28e8080 T foo\t[testmod]\n\nFix this by comparing the symbol values once we\u0027ve found the exported\nsymbol table entry matching the symbol name.  Tested using Ksplice:\n\n$ ksplice-create --patch\u003dthis_commit.patch --id\u003dbar .\n$ sudo ksplice-apply ksplice-bar.tar.gz\nDone!\n$ grep \"T foo\" /proc/kallsyms\nc28e8080 T foo\t[testmod]\n\nSigned-off-by: Tim Abbott \u003ctabbott@mit.edu\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "8b96f0119818964e4944fd1c423bf6770027d3ac",
      "tree": "02b5ec86d2fe45d6935d63913b997989f9339bf4",
      "parents": [
        "decbec3838d10ecd7aabdb4c0e05aac0e5f5dc0c"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Sat Dec 06 03:40:00 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Dec 08 15:11:44 2008 +0100"
      },
      "message": "tracing/function-graph-tracer: introduce __notrace_funcgraph to filter special functions\n\nImpact: trace more functions\n\nWhen the function graph tracer is configured, three more files are not\ntraced to prevent only four functions to be traced. And this impacts the\nnormal function tracer too.\n\narch/x86/kernel/process_64/32.c:\n\nI had crashes when I let this file traced. After some debugging, I saw\nthat the \"current\" task point was changed inside__swtich_to(), ie:\n\"write_pda(pcurrent, next_p);\" inside process_64.c Since the tracer store\nthe original return address of the function inside current, we had\ncrashes. Only __switch_to() has to be excluded from tracing.\n\nkernel/module.c and kernel/extable.c:\n\nBecause of a function used internally by the function graph tracer:\n__kernel_text_address()\n\nTo let the other functions inside these files to be traced, this patch\nintroduces the __notrace_funcgraph function prefix which is __notrace if\nfunction graph tracer is configured and nothing if not.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "3f8e402f34ecc7d1d00b54703d3baa401b8bdd78",
      "tree": "b1f515a1c5426809c076dd854f9385efb750683b",
      "parents": [
        "072b40a15616fe6bea68466e6bffcfcbf5c8f26f",
        "e7d3737ea1b102030f44e96c97754101e41515f0",
        "227a837567e339c74d9d4243d03a29bd943a018c",
        "5821e1b74f0d08952cb5da4bfd2d9a388d8df58e"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Nov 17 09:36:22 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Nov 17 09:36:22 2008 +0100"
      },
      "message": "Merge branches \u0027tracing/branch-tracer\u0027, \u0027tracing/ftrace\u0027, \u0027tracing/function-return-tracer\u0027, \u0027tracing/tracepoints\u0027 and \u0027tracing/urgent\u0027 into tracing/core\n"
    },
    {
      "commit": "32f85742778dfc2c74975cf0b9f5bdb13470cb32",
      "tree": "bec188e2772c3ebbf70b149d78bd36eb24d927c0",
      "parents": [
        "5f382671def7cb9c0f4b75d586dc5f60dca5e1c3"
      ],
      "author": {
        "name": "Mathieu Desnoyers",
        "email": "mathieu.desnoyers@polymtl.ca",
        "time": "Fri Nov 14 17:47:46 2008 -0500"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Nov 16 09:01:35 2008 +0100"
      },
      "message": "tracepoints: use modules notifiers\n\nImpact: cleanup\n\nUse module notifiers for tracepoint updates rather than adding a hook in\nmodule.c.\n\nSigned-off-by: Mathieu Desnoyers \u003cmathieu.desnoyers@polymtl.ca\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "a419246ac7c2d9282dfd843103702895bb3f3fd7",
      "tree": "279750cd8eff8ec307d6c67b0ca4474b9b755b15",
      "parents": [
        "021aeb057fc48af03fe5f37d3dda366c0d97aaf3"
      ],
      "author": {
        "name": "Mathieu Desnoyers",
        "email": "mathieu.desnoyers@polymtl.ca",
        "time": "Fri Nov 14 17:47:38 2008 -0500"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Nov 16 09:01:28 2008 +0100"
      },
      "message": "markers: use module notifier\n\nImpact: cleanup\n\nUse module notifiers instead of adding a hook in module.c.\n\nSigned-off-by: Mathieu Desnoyers \u003cmathieu.desnoyers@polymtl.ca\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "31e889098a80ceb3e9e3c555d522b2686a6663c6",
      "tree": "2acb73507de4191d4a9aa5ccf08fa24e7044c89e",
      "parents": [
        "d51ad7ac48f991c4a8834485727efa99a691cb87"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Fri Nov 14 16:21:19 2008 -0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Nov 16 07:36:02 2008 +0100"
      },
      "message": "ftrace: pass module struct to arch dynamic ftrace functions\n\nImpact: allow archs more flexibility on dynamic ftrace implementations\n\nDynamic ftrace has largly been developed on x86. Since x86 does not\nhave the same limitations as other architectures, the ftrace interaction\nbetween the generic code and the architecture specific code was not\nflexible enough to handle some of the issues that other architectures\nhave.\n\nMost notably, module trampolines. Due to the limited branch distance\nthat archs make in calling kernel core code from modules, the module\nload code must create a trampoline to jump to what will make the\nlarger jump into core kernel code.\n\nThe problem arises when this happens to a call to mcount. Ftrace checks\nall code before modifying it and makes sure the current code is what\nit expects. Right now, there is not enough information to handle modifying\nmodule trampolines.\n\nThis patch changes the API between generic dynamic ftrace code and\nthe arch dependent code. There is now two functions for modifying code:\n\n  ftrace_make_nop(mod, rec, addr) - convert the code at rec-\u003eip into\n       a nop, where the original text is calling addr. (mod is the\n       module struct if called by module init)\n\n  ftrace_make_caller(rec, addr) - convert the code rec-\u003eip that should\n       be a nop into a caller to addr.\n\nThe record \"rec\" now has a new field called \"arch\" where the architecture\ncan add any special attributes to each call site record.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "88ed86fee6651033de9b7038dac7869a9f19775a",
      "tree": "38b638d2e7cba110ec271275738f221feb7e0a37",
      "parents": [
        "3856d30ded1fe43c6657927ebad402d25cd128f4",
        "59c7572e82d69483a66eaa67b46548baeb69ecf4"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 23 12:04:37 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 23 12:04:37 2008 -0700"
      },
      "message": "Merge branch \u0027proc\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/adobriyan/proc\n\n* \u0027proc\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/adobriyan/proc: (35 commits)\n  proc: remove fs/proc/proc_misc.c\n  proc: move /proc/vmcore creation to fs/proc/vmcore.c\n  proc: move pagecount stuff to fs/proc/page.c\n  proc: move all /proc/kcore stuff to fs/proc/kcore.c\n  proc: move /proc/schedstat boilerplate to kernel/sched_stats.h\n  proc: move /proc/modules boilerplate to kernel/module.c\n  proc: move /proc/diskstats boilerplate to block/genhd.c\n  proc: move /proc/zoneinfo boilerplate to mm/vmstat.c\n  proc: move /proc/vmstat boilerplate to mm/vmstat.c\n  proc: move /proc/pagetypeinfo boilerplate to mm/vmstat.c\n  proc: move /proc/buddyinfo boilerplate to mm/vmstat.c\n  proc: move /proc/vmallocinfo to mm/vmalloc.c\n  proc: move /proc/slabinfo boilerplate to mm/slub.c, mm/slab.c\n  proc: move /proc/slab_allocators boilerplate to mm/slab.c\n  proc: move /proc/interrupts boilerplate code to fs/proc/interrupts.c\n  proc: move /proc/stat to fs/proc/stat.c\n  proc: move rest of /proc/partitions code to block/genhd.c\n  proc: move /proc/cpuinfo code to fs/proc/cpuinfo.c\n  proc: move /proc/devices code to fs/proc/devices.c\n  proc: move rest of /proc/locks to fs/locks.c\n  ...\n"
    },
    {
      "commit": "3b5d5c6b0ccba733a313f8752ebc3f8015628ba3",
      "tree": "7277d87d64b8be615013457ab0cdb178d41a9efe",
      "parents": [
        "31d85ab28e71b0c938e0ef48af45747e80d99b53"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon Oct 06 13:19:27 2008 +0400"
      },
      "committer": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Thu Oct 23 18:03:13 2008 +0400"
      },
      "message": "proc: move /proc/modules boilerplate to kernel/module.c\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\n"
    },
    {
      "commit": "d72b37513cdfbd3f53f3d485a8c403cc96d2c95f",
      "tree": "bdc0ad7aa94bc52290b42e325ac59c9140faf090",
      "parents": [
        "5e458cc0f4770eea45d3c07110f01b3a94c72aa5"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "andi@firstfloor.org",
        "time": "Sat Aug 30 10:09:00 2008 +0200"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Wed Oct 22 10:00:22 2008 +1100"
      },
      "message": "Remove stop_machine during module load v2\n\nRemove stop_machine during module load v2\n\nmodule loading currently does a stop_machine on each module load to insert\nthe module into the global module lists.  Especially on larger systems this\ncan be quite expensive.\n\nIt does that to handle concurrent lock lessmodule list readers\nlike kallsyms.\n\nI don\u0027t think stop_machine() is actually needed to insert something\ninto a list though. There are no concurrent writers because the\nmodule mutex is taken. And the RCU list functions know how to insert\na node into a list with the right memory ordering so that concurrent\nreaders don\u0027t go off into the wood.\n\nSo remove the stop_machine for the module list insert and just\ndo a list_add_rcu() instead.\n\nModule removal will still do a stop_machine of course, it needs\nthat for other reasons.\n\nv2: Revised readers based on Paul\u0027s comments. All readers that only\n    rely on disabled preemption need to be changed to list_for_each_rcu().\n    Done that. The others are ok because they have the modules mutex.\n    Also added a possible missing preempt disable for print_modules().\n\n[cc Paul McKenney for review. It\u0027s not RCU, but quite similar.]\n\nAcked-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "5e458cc0f4770eea45d3c07110f01b3a94c72aa5",
      "tree": "97966d9ac8f9621073fad39a88ed37765c959a9d",
      "parents": [
        "2515ddc6db8eb49a79f0fe5e67ff09ac7c81eab4"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Wed Oct 22 10:00:13 2008 -0500"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Wed Oct 22 10:00:15 2008 +1100"
      },
      "message": "module: simplify load_module.\n\nLinus\u0027 recent catch of stack overflow in load_module lead me to look\nat the code.  A couple of helpers to get a section address and get\nobjects from a section can help clean things up a little.\n\n(And in case you\u0027re wondering, the stack size also dropped from 328 to\n284 bytes).\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "92b29b86fe2e183d44eb467e5e74a5f718ef2e43",
      "tree": "1bac8a1aa11d47322b66d10ec3a370016d843d06",
      "parents": [
        "b9d7ccf56be1ac77b71a284a1c0e6337f9a7aff0",
        "98d9c66ab07471006fd7910cb16453581c41a3e7"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 13:35:07 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 13:35:07 2008 -0700"
      },
      "message": "Merge branch \u0027tracing-v28-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027tracing-v28-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (131 commits)\n  tracing/fastboot: improve help text\n  tracing/stacktrace: improve help text\n  tracing/fastboot: fix initcalls disposition in bootgraph.pl\n  tracing/fastboot: fix bootgraph.pl initcall name regexp\n  tracing/fastboot: fix issues and improve output of bootgraph.pl\n  tracepoints: synchronize unregister static inline\n  tracepoints: tracepoint_synchronize_unregister()\n  ftrace: make ftrace_test_p6nop disassembler-friendly\n  markers: fix synchronize marker unregister static inline\n  tracing/fastboot: add better resolution to initcall debug/tracing\n  trace: add build-time check to avoid overrunning hex buffer\n  ftrace: fix hex output mode of ftrace\n  tracing/fastboot: fix initcalls disposition in bootgraph.pl\n  tracing/fastboot: fix printk format typo in boot tracer\n  ftrace: return an error when setting a nonexistent tracer\n  ftrace: make some tracers reentrant\n  ring-buffer: make reentrant\n  ring-buffer: move page indexes into page headers\n  tracing/fastboot: only trace non-module initcalls\n  ftrace: move pc counter in irqtrace\n  ...\n\nManually fix conflicts:\n - init/main.c: initcall tracing\n - kernel/module.c: verbose level vs tracepoints\n - scripts/bootgraph.pl: fallout from cherry-picking commits.\n"
    },
    {
      "commit": "26e9a397774a0e94efbb8a0bf4a952c28d808cab",
      "tree": "fee2211b32a30c71bd22543acb791feeebd91b35",
      "parents": [
        "bdbf0ac7e187b2b757216e653e64f8b808b9077e",
        "99e06e372378c5833a0c60274b645dfb2e4a4b08"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 17 09:50:12 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 17 09:50:12 2008 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging-2.6\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging-2.6: (25 commits)\n  staging: at76_usb wireless driver\n  Staging: workaround build system bug\n  Staging: Lindent sxg.c\n  Staging: SLICOSS: Call pci_release_regions at driver exit\n  Staging: SLICOSS: Fix remaining type names\n  Staging: SLICOSS: Fix warnings due to static usage\n  Staging: SLICOSS: lots of checkpatch fixes\n  Staging: go7007 v4l fixes\n  Staging: Fix gcc warnings in sxg\n  Staging: add echo cancelation module\n  Staging: add wlan-ng prism2 usb driver\n  Staging: add w35und wifi driver\n  Staging: USB/IP: add host driver\n  Staging: USB/IP: add client driver\n  Staging: USB/IP: add common functions needed\n  Staging: add the go7007 video driver\n  Staging: add me4000 pci data collection driver\n  Staging: add me4000 firmware files\n  Staging: add sxg network driver\n  Staging: add Alacritech slicoss network driver\n  ...\n\nFixed up conflicts due to taint flags changes and MAINTAINERS cleanup in\nMAINTAINERS, include/linux/kernel.h and kernel/panic.c.\n"
    },
    {
      "commit": "c813b4e16ead3c3df98ac84419d4df2adf33fe01",
      "tree": "2ca4a5b6966d833b6149e3dda7a4e85d1255779c",
      "parents": [
        "c8d8a2321f9c4ee18fbcc399fdc2a77e580a03b9",
        "02683ffdf655b4ae15245376ba6fea6d9e5829a6"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 16 12:40:26 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 16 12:40:26 2008 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6: (46 commits)\n  UIO: Fix mapping of logical and virtual memory\n  UIO: add automata sercos3 pci card support\n  UIO: Change driver name of uio_pdrv\n  UIO: Add alignment warnings for uio-mem\n  Driver core: add bus_sort_breadthfirst() function\n  NET: convert the phy_device file to use bus_find_device_by_name\n  kobject: Cleanup kobject_rename and !CONFIG_SYSFS\n  kobject: Fix kobject_rename and !CONFIG_SYSFS\n  sysfs: Make dir and name args to sysfs_notify() const\n  platform: add new device registration helper\n  sysfs: use ilookup5() instead of ilookup5_nowait()\n  PNP: create device attributes via default device attributes\n  Driver core: make bus_find_device_by_name() more robust\n  usb: turn dev_warn+WARN_ON combos into dev_WARN\n  debug: use dev_WARN() rather than WARN_ON() in device_pm_add()\n  debug: Introduce a dev_WARN() function\n  sysfs: fix deadlock\n  device model: Do a quickcheck for driver binding before doing an expensive check\n  Driver core: Fix cleanup in device_create_vargs().\n  Driver core: Clarify device cleanup.\n  ...\n"
    },
    {
      "commit": "25ddbb18aae33ad255eb9f35aacebe3af01e1e9c",
      "tree": "8df1f840a226ed640c2096710b7d0f1f4d1b88aa",
      "parents": [
        "889d51a10712b6fd6175196626de2116858394f4"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "andi@firstfloor.org",
        "time": "Wed Oct 15 22:01:41 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 16 11:21:31 2008 -0700"
      },
      "message": "Make the taint flags reliable\n\nIt\u0027s somewhat unlikely that it happens, but right now a race window\nbetween interrupts or machine checks or oopses could corrupt the tainted\nbitmap because it is modified in a non atomic fashion.\n\nConvert the taint variable to an unsigned long and use only atomic bit\noperations on it.\n\nUnfortunately this means the intvec sysctl functions cannot be used on it\nanymore.\n\nIt turned out the taint sysctl handler could actually be simplified a bit\n(since it only increases capabilities) so this patch actually removes\ncode.\n\n[akpm@linux-foundation.org: remove unneeded include]\nSigned-off-by: Andi Kleen \u003cak@linux.intel.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": "346e15beb5343c2eb8216d820f2ed8f150822b08",
      "tree": "6433cf2980bbfbed4a9482c5edb156fc8371e071",
      "parents": [
        "33376c1c043c05077b4ac79c33804266f6c45e49"
      ],
      "author": {
        "name": "Jason Baron",
        "email": "jbaron@redhat.com",
        "time": "Tue Aug 12 16:46:19 2008 -0400"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Thu Oct 16 09:24:47 2008 -0700"
      },
      "message": "driver core: basic infrastructure for per-module dynamic debug messages\n\nBase infrastructure to enable per-module debug messages.\n\nI\u0027ve introduced CONFIG_DYNAMIC_PRINTK_DEBUG, which when enabled centralizes\ncontrol of debugging statements on a per-module basis in one /proc file,\ncurrently, \u003cdebugfs\u003e/dynamic_printk/modules. When, CONFIG_DYNAMIC_PRINTK_DEBUG,\nis not set, debugging statements can still be enabled as before, often by\ndefining \u0027DEBUG\u0027 for the proper compilation unit. Thus, this patch set has no\naffect when CONFIG_DYNAMIC_PRINTK_DEBUG is not set.\n\nThe infrastructure currently ties into all pr_debug() and dev_dbg() calls. That\nis, if CONFIG_DYNAMIC_PRINTK_DEBUG is set, all pr_debug() and dev_dbg() calls\ncan be dynamically enabled/disabled on a per-module basis.\n\nFuture plans include extending this functionality to subsystems, that define \ntheir own debug levels and flags.\n\nUsage:\n\nDynamic debugging is controlled by the debugfs file, \n\u003cdebugfs\u003e/dynamic_printk/modules. This file contains a list of the modules that\ncan be enabled. The format of the file is as follows:\n\n\t\u003cmodule_name\u003e \u003cenabled\u003d0/1\u003e\n\t\t.\n\t\t.\n\t\t.\n\n\t\u003cmodule_name\u003e : Name of the module in which the debug call resides\n\t\u003cenabled\u003d0/1\u003e : whether the messages are enabled or not\n\nFor example:\n\n\tsnd_hda_intel enabled\u003d0\n\tfixup enabled\u003d1\n\tdriver enabled\u003d0\n\nEnable a module:\n\n\t$echo \"set enabled\u003d1 \u003cmodule_name\u003e\" \u003e dynamic_printk/modules\n\nDisable a module:\n\n\t$echo \"set enabled\u003d0 \u003cmodule_name\u003e\" \u003e dynamic_printk/modules\n\nEnable all modules:\n\n\t$echo \"set enabled\u003d1 all\" \u003e dynamic_printk/modules\n\nDisable all modules:\n\n\t$echo \"set enabled\u003d0 all\" \u003e dynamic_printk/modules\n\nFinally, passing \"dynamic_printk\" at the command line enables\ndebugging for all modules. This mode can be turned off via the above\ndisable command.\n\n[gkh: minor cleanups and tweaks to make the build work quietly]\n\nSigned-off-by: Jason Baron \u003cjbaron@redhat.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n\n"
    },
    {
      "commit": "e94320939f44e0cbaccc3f259a5778abced4949c",
      "tree": "a613345601872596f498496ad5ba94a29a659ff4",
      "parents": [
        "04ab591808565f968d4406f6435090ad671ebdab"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Tue Sep 23 23:51:11 2008 +0400"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Thu Oct 16 09:24:41 2008 -0700"
      },
      "message": "modules: fix module \"notes\" kobject leak\n\nFix \"notes\" kobject leak\n\nIt happens every rmmod if KALLSYMS\u003dy and SYSFS\u003dy.\n\n\t# modprobe foo\n\nkobject: \u0027foo\u0027 (ffffffffa00743d0): kobject_add_internal: parent: \u0027module\u0027, set: \u0027module\u0027\nkobject: \u0027holders\u0027 (ffff88017e7c5770): kobject_add_internal: parent: \u0027foo\u0027, set: \u0027\u003cNULL\u003e\u0027\nkobject: \u0027foo\u0027 (ffffffffa00743d0): kobject_uevent_env\nkobject: \u0027foo\u0027 (ffffffffa00743d0): fill_kobj_path: path \u003d \u0027/module/foo\u0027\nkobject: \u0027notes\u0027 (ffff88017fa9b668): kobject_add_internal: parent: \u0027foo\u0027, set: \u0027\u003cNULL\u003e\u0027\n\t  ^^^^^\n\n\t# rmmod foo\n\nkobject: \u0027holders\u0027 (ffff88017e7c5770): kobject_cleanup\nkobject: \u0027holders\u0027 (ffff88017e7c5770): auto cleanup kobject_del\nkobject: \u0027holders\u0027 (ffff88017e7c5770): calling ktype release\nkobject: (ffff88017e7c5770): dynamic_kobj_release\nkobject: \u0027holders\u0027: free name\nkobject: \u0027foo\u0027 (ffffffffa00743d0): kobject_cleanup\nkobject: \u0027foo\u0027 (ffffffffa00743d0): does not have a release() function, it is broken and must be fixed.\nkobject: \u0027foo\u0027 (ffffffffa00743d0): auto cleanup \u0027remove\u0027 event\nkobject: \u0027foo\u0027 (ffffffffa00743d0): kobject_uevent_env\nkobject: \u0027foo\u0027 (ffffffffa00743d0): fill_kobj_path: path \u003d \u0027/module/foo\u0027\nkobject: \u0027foo\u0027 (ffffffffa00743d0): auto cleanup kobject_del\nkobject: \u0027foo\u0027: free name\n\n\t[whooops]\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: stable \u003cstable@kernel.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "fed1939c64d2288938fdc1c367d49082da65e195",
      "tree": "a4592352d28efcfe82379c71d061b9127e49a115",
      "parents": [
        "28614889bcb2558a47d02d52394b7fd9795a9547"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu Aug 14 22:47:19 2008 -0400"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Oct 14 10:35:12 2008 +0200"
      },
      "message": "ftrace: remove old pointers to mcount\n\nWhen a mcount pointer is recorded into a table, it is used to add or\nremove calls to mcount (replacing them with nops). If the code is removed\nvia removing a module, the pointers still exist.  At modifying the code\na check is always made to make sure the code being replaced is the code\nexpected. In-other-words, the code being replaced is compared to what\nit is expected to be before being replaced.\n\nThere is a very small chance that the code being replaced just happens\nto look like code that calls mcount (very small since the call to mcount\nis relative). To remove this chance, this patch adds ftrace_release to\nallow module unloading to remove the pointers to mcount within the module.\n\nAnother change for init calls is made to not trace calls marked with\n__init. The tracing can not be started until after init is done anyway.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "90d595fe5ca4b685465c068907e6e554760abea8",
      "tree": "03f98454af8c6756177aa053ae7440373007f67d",
      "parents": [
        "68bf21aa15c85d2e9b623dcda2b1ed8893275fa1"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu Aug 14 15:45:09 2008 -0400"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Oct 14 10:34:47 2008 +0200"
      },
      "message": "ftrace: enable mcount recording for modules\n\nThis patch enables the loading of the __mcount_section of modules and\nchanging all the callers of mcount into nops.\n\nThe modification is done before the init_module function is called, so\nagain, we do not need to use kstop_machine to make these changes.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "97e1c18e8d17bd87e1e383b2e9d9fc740332c8e2",
      "tree": "5c6bfce8bacf04c2993a0029788a1370a483afa6",
      "parents": [
        "e7f2f9918c0e97aa98ba147ca387e2c7238f0711"
      ],
      "author": {
        "name": "Mathieu Desnoyers",
        "email": "mathieu.desnoyers@polymtl.ca",
        "time": "Fri Jul 18 12:16:16 2008 -0400"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Oct 14 10:28:28 2008 +0200"
      },
      "message": "tracing: Kernel Tracepoints\n\nImplementation of kernel tracepoints. Inspired from the Linux Kernel\nMarkers. Allows complete typing verification by declaring both tracing\nstatement inline functions and probe registration/unregistration static\ninline functions within the same macro \"DEFINE_TRACE\". No format string\nis required. See the tracepoint Documentation and Samples patches for\nusage examples.\n\nTaken from the documentation patch :\n\n\"A tracepoint placed in code provides a hook to call a function (probe)\nthat you can provide at runtime. A tracepoint can be \"on\" (a probe is\nconnected to it) or \"off\" (no probe is attached). When a tracepoint is\n\"off\" it has no effect, except for adding a tiny time penalty (checking\na condition for a branch) and space penalty (adding a few bytes for the\nfunction call at the end of the instrumented function and adds a data\nstructure in a separate section).  When a tracepoint is \"on\", the\nfunction you provide is called each time the tracepoint is executed, in\nthe execution context of the caller. When the function provided ends its\nexecution, it returns to the caller (continuing from the tracepoint\nsite).\n\nYou can put tracepoints at important locations in the code. They are\nlightweight hooks that can pass an arbitrary number of parameters, which\nprototypes are described in a tracepoint declaration placed in a header\nfile.\"\n\nAddition and removal of tracepoints is synchronized by RCU using the\nscheduler (and preempt_disable) as guarantees to find a quiescent state\n(this is really RCU \"classic\"). The update side uses rcu_barrier_sched()\nwith call_rcu_sched() and the read/execute side uses\n\"preempt_disable()/preempt_enable()\".\n\nWe make sure the previous array containing probes, which has been\nscheduled for deletion by the rcu callback, is indeed freed before we\nproceed to the next update. It therefore limits the rate of modification\nof a single tracepoint to one update per RCU period. The objective here\nis to permit fast batch add/removal of probes on _different_\ntracepoints.\n\nChangelog :\n- Use #name \":\" #proto as string to identify the tracepoint in the\n  tracepoint table. This will make sure not type mismatch happens due to\n  connexion of a probe with the wrong type to a tracepoint declared with\n  the same name in a different header.\n- Add tracepoint_entry_free_old.\n- Change __TO_TRACE to get rid of the \u0027i\u0027 iterator.\n\nMasami Hiramatsu \u003cmhiramat@redhat.com\u003e :\nTested on x86-64.\n\nPerformance impact of a tracepoint : same as markers, except that it\nadds about 70 bytes of instructions in an unlikely branch of each\ninstrumented function (the for loop, the stack setup and the function\ncall). It currently adds a memory read, a test and a conditional branch\nat the instrumentation site (in the hot path). Immediate values will\neventually change this into a load immediate, test and branch, which\nremoves the memory read which will make the i-cache impact smaller\n(changing the memory read for a load immediate removes 3-4 bytes per\nsite on x86_32 (depending on mov prefixes), or 7-8 bytes on x86_64, it\nalso saves the d-cache hit).\n\nAbout the performance impact of tracepoints (which is comparable to\nmarkers), even without immediate values optimizations, tests done by\nHideo Aoki on ia64 show no regression. His test case was using hackbench\non a kernel where scheduler instrumentation (about 5 events in code\nscheduler code) was added.\n\nQuoting Hideo Aoki about Markers :\n\nI evaluated overhead of kernel marker using linux-2.6-sched-fixes git\ntree, which includes several markers for LTTng, using an ia64 server.\n\nWhile the immediate trace mark feature isn\u0027t implemented on ia64, there\nis no major performance regression. So, I think that we don\u0027t have any\nissues to propose merging marker point patches into Linus\u0027s tree from\nthe viewpoint of performance impact.\n\nI prepared two kernels to evaluate. The first one was compiled without\nCONFIG_MARKERS. The second one was enabled CONFIG_MARKERS.\n\nI downloaded the original hackbench from the following URL:\nhttp://devresources.linux-foundation.org/craiger/hackbench/src/hackbench.c\n\nI ran hackbench 5 times in each condition and calculated the average and\ndifference between the kernels.\n\n    The parameter of hackbench: every 50 from 50 to 800\n    The number of CPUs of the server: 2, 4, and 8\n\nBelow is the results. As you can see, major performance regression\nwasn\u0027t found in any case. Even if number of processes increases,\ndifferences between marker-enabled kernel and marker- disabled kernel\ndoesn\u0027t increase. Moreover, if number of CPUs increases, the differences\ndoesn\u0027t increase either.\n\nCuriously, marker-enabled kernel is better than marker-disabled kernel\nin more than half cases, although I guess it comes from the difference\nof memory access pattern.\n\n* 2 CPUs\n\nNumber of | without      | with         | diff     | diff    |\nprocesses | Marker [Sec] | Marker [Sec] |   [Sec]  |   [%]   |\n--------------------------------------------------------------\n       50 |      4.811   |       4.872  |  +0.061  |  +1.27  |\n      100 |      9.854   |      10.309  |  +0.454  |  +4.61  |\n      150 |     15.602   |      15.040  |  -0.562  |  -3.6   |\n      200 |     20.489   |      20.380  |  -0.109  |  -0.53  |\n      250 |     25.798   |      25.652  |  -0.146  |  -0.56  |\n      300 |     31.260   |      30.797  |  -0.463  |  -1.48  |\n      350 |     36.121   |      35.770  |  -0.351  |  -0.97  |\n      400 |     42.288   |      42.102  |  -0.186  |  -0.44  |\n      450 |     47.778   |      47.253  |  -0.526  |  -1.1   |\n      500 |     51.953   |      52.278  |  +0.325  |  +0.63  |\n      550 |     58.401   |      57.700  |  -0.701  |  -1.2   |\n      600 |     63.334   |      63.222  |  -0.112  |  -0.18  |\n      650 |     68.816   |      68.511  |  -0.306  |  -0.44  |\n      700 |     74.667   |      74.088  |  -0.579  |  -0.78  |\n      750 |     78.612   |      79.582  |  +0.970  |  +1.23  |\n      800 |     85.431   |      85.263  |  -0.168  |  -0.2   |\n--------------------------------------------------------------\n\n* 4 CPUs\n\nNumber of | without      | with         | diff     | diff    |\nprocesses | Marker [Sec] | Marker [Sec] |   [Sec]  |   [%]   |\n--------------------------------------------------------------\n       50 |      2.586   |       2.584  |  -0.003  |  -0.1   |\n      100 |      5.254   |       5.283  |  +0.030  |  +0.56  |\n      150 |      8.012   |       8.074  |  +0.061  |  +0.76  |\n      200 |     11.172   |      11.000  |  -0.172  |  -1.54  |\n      250 |     13.917   |      14.036  |  +0.119  |  +0.86  |\n      300 |     16.905   |      16.543  |  -0.362  |  -2.14  |\n      350 |     19.901   |      20.036  |  +0.135  |  +0.68  |\n      400 |     22.908   |      23.094  |  +0.186  |  +0.81  |\n      450 |     26.273   |      26.101  |  -0.172  |  -0.66  |\n      500 |     29.554   |      29.092  |  -0.461  |  -1.56  |\n      550 |     32.377   |      32.274  |  -0.103  |  -0.32  |\n      600 |     35.855   |      35.322  |  -0.533  |  -1.49  |\n      650 |     39.192   |      38.388  |  -0.804  |  -2.05  |\n      700 |     41.744   |      41.719  |  -0.025  |  -0.06  |\n      750 |     45.016   |      44.496  |  -0.520  |  -1.16  |\n      800 |     48.212   |      47.603  |  -0.609  |  -1.26  |\n--------------------------------------------------------------\n\n* 8 CPUs\n\nNumber of | without      | with         | diff     | diff    |\nprocesses | Marker [Sec] | Marker [Sec] |   [Sec]  |   [%]   |\n--------------------------------------------------------------\n       50 |      2.094   |       2.072  |  -0.022  |  -1.07  |\n      100 |      4.162   |       4.273  |  +0.111  |  +2.66  |\n      150 |      6.485   |       6.540  |  +0.055  |  +0.84  |\n      200 |      8.556   |       8.478  |  -0.078  |  -0.91  |\n      250 |     10.458   |      10.258  |  -0.200  |  -1.91  |\n      300 |     12.425   |      12.750  |  +0.325  |  +2.62  |\n      350 |     14.807   |      14.839  |  +0.032  |  +0.22  |\n      400 |     16.801   |      16.959  |  +0.158  |  +0.94  |\n      450 |     19.478   |      19.009  |  -0.470  |  -2.41  |\n      500 |     21.296   |      21.504  |  +0.208  |  +0.98  |\n      550 |     23.842   |      23.979  |  +0.137  |  +0.57  |\n      600 |     26.309   |      26.111  |  -0.198  |  -0.75  |\n      650 |     28.705   |      28.446  |  -0.259  |  -0.9   |\n      700 |     31.233   |      31.394  |  +0.161  |  +0.52  |\n      750 |     34.064   |      33.720  |  -0.344  |  -1.01  |\n      800 |     36.320   |      36.114  |  -0.206  |  -0.57  |\n--------------------------------------------------------------\n\nSigned-off-by: Mathieu Desnoyers \u003cmathieu.desnoyers@polymtl.ca\u003e\nAcked-by: Masami Hiramatsu \u003cmhiramat@redhat.com\u003e\nAcked-by: \u0027Peter Zijlstra\u0027 \u003cpeterz@infradead.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "061b1bd394ca8628b7c24eb4658ba3535da4249a",
      "tree": "5711de7ffa17f0f5d0084292707872d19e9b19ff",
      "parents": [
        "b922df7383749a1c0b7ea64c50fa839263d3816b"
      ],
      "author": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Sep 24 14:46:44 2008 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Fri Oct 10 15:31:05 2008 -0700"
      },
      "message": "Staging: add TAINT_CRAP for all drivers/staging code\n\nWe need to add a flag for all code that is in the drivers/staging/\ndirectory to prevent all other kernel developers from worrying about\nissues here, and to notify users that the drivers might not be as good\nas they are normally used to.\n\nBased on code from Andreas Gruenbacher and Jeff Mahoney to provide a\nTAINT flag for the support level of a kernel module in the Novell\nenterprise kernel release.\n\nThis is the kernel portion of this feature, the ability for the flag to\nbe set needs to be done in the build process and will happen in a\nfollow-up patch.\n\nCc: Andreas Gruenbacher \u003cagruen@suse.de\u003e\nCc: Jeff Mahoney \u003cjeffm@suse.de\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "ffb4ba76a25ab6c9deeec33e4f58395586ca747c",
      "tree": "378ee35adc486466c88c7423dbb0ecc6f027ef45",
      "parents": [
        "83097aca8567a0bd593534853b71fe0fa9a75d69"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 25 11:10:26 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 25 11:10:26 2008 -0700"
      },
      "message": "[module] Don\u0027t let gcc inline load_module()\n\n\u0027load_module()\u0027 is a complex function that contains all the ELF section\nlogic, and inlining it is utterly insane.  But gcc will do it, simply\nbecause there is only one call-site.  As a result, all the stack space\nthat is allocated for all the work to load the module will still be\nactive when we actually call the module init sequence, and the deep call\nchain makes stack overflows happen.\n\nAnd stack overflows are really hard to debug, because they not only\ncorrupt random pages below the stack, but also corrupt the thread_info\nstructure that is allocated under the stack.\n\nIn this case, Alan Brunelle reported some crazy oopses at bootup, after\nloading the processor module that ends up doing complex ACPI stuff and\nhas quite a deep callchain.  This should fix it, and is the sane thing\nto do regardless.\n\nCc: Alan D. Brunelle \u003cAlan.Brunelle@hp.com\u003e\nCc: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "59f9415ffb9759e950d775f4c400f747b332cc02",
      "tree": "354544b8cad8ae77a5f960fe601b2a3613a2523a",
      "parents": [
        "4bceba417a795b78a5146e3f85291cb7bb2402ef"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Wed Jul 30 12:49:02 2008 -0700"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Aug 12 17:52:54 2008 +1000"
      },
      "message": "modules: extend initcall_debug functionality to the module loader\n\nThe kernel has this really nice facility where if you put \"initcall_debug\"\non the kernel commandline, it\u0027ll print which function it\u0027s going to\nexecute just before calling an initcall, and then after the call completes\nit will\n\n1) print if it had an error code\n\n2) checks for a few simple bugs (like leaving irqs off)\nand\n\n3) print how long the init call took in milliseconds.\n\nWhile trying to optimize the boot speed of my laptop, I have been loving\nnumber 3 to figure out what to optimize...  ...  and then I wished that\nthe same thing was done for module loading.\n\nThis patch makes the module loader use this exact same functionality; it\u0027s\na logical extension in my view (since modules are just sort of late\nbinding initcalls anyway) and so far I\u0027ve found it quite useful in finding\nwhere things are too slow in my boot.\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: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "9b1a4d38373a5581a4e01032a3ccdd94cd93477b",
      "tree": "3d0f0ebd1ac4512551fc35e57d173870eb060c0c",
      "parents": [
        "eeec4fad963490821348a331cca6102ae1c4a7a3"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Jul 28 12:16:30 2008 -0500"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Jul 28 12:16:31 2008 +1000"
      },
      "message": "stop_machine: Wean existing callers off stop_machine_run()\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "15bba37d62351749c3915add81f673b256952ee1",
      "tree": "4696ad74ea04df9f3b7091859225ecc123be7197",
      "parents": [
        "837b41b5de356aa67abb2cadb5eef3efc7776f91"
      ],
      "author": {
        "name": "WANG Cong",
        "email": "xiyou.wangcong@gmail.com",
        "time": "Thu Jul 24 15:41:48 2008 +0100"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Jul 28 12:16:28 2008 +1000"
      },
      "message": "module: fix build warning with !CONFIG_KALLSYMS\n\nThis patch fixed the warning:\n\n  CC      kernel/module.o\n  /home/wangcong/Projects/linux-2.6/kernel/module.c:332: warning:\n‘lookup_symbol’ defined but not used\n\nSigned-off-by: WANG Cong \u003cwangcong@zeuux.org\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "3a642e99babe0617febb6f402e1e063479f489db",
      "tree": "09f7d6c7b0a4e3869d11c739113e5dd5a8ff5a2c",
      "parents": [
        "2f0f2a334bc38b61a9afca951185cd3844ee709d"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Jul 22 19:24:28 2008 -0500"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Jul 22 19:24:28 2008 +1000"
      },
      "message": "modules: Take a shortcut for checking if an address is in a module\n\nThis patch keeps track of the boundaries of module allocation, in\norder to speed up module_text_address().\n\nInspired by Arjan\u0027s version, which required arch-specific defines:\n\n\tVarious pieces of the kernel (lockdep, latencytop, etc) tend\n\tto store backtraces, sometimes at a relatively high\n\tfrequency. In itself this isn\u0027t a big performance deal (after\n\tall you\u0027re using diagnostics features), but there have been\n\tsome complaints from people who have over 100 modules loaded\n\tthat this is a tad too slow.\n\n\tThis is due to the new backtracer code which looks at every\n\tslot on the stack to see if it\u0027s a kernel/module text address,\n\tso that\u0027s 1024 slots.  1024 times 100 modules... that\u0027s a lot\n\tof list walking.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "2f0f2a334bc38b61a9afca951185cd3844ee709d",
      "tree": "c73089563f51c818ed97dec463408d6ac9cf1e8e",
      "parents": [
        "f7f5b67557eac1131ba6532522e3c50eced34238"
      ],
      "author": {
        "name": "Denys Vlasenko",
        "email": "vda.linux@googlemail.com",
        "time": "Tue Jul 22 19:24:27 2008 -0500"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Jul 22 19:24:27 2008 +1000"
      },
      "message": "module: turn longs into ints for module sizes\n\nThis shrinks module.o and each *.ko file.\n\nAnd finally, structure members which hold length of module\ncode (four such members there) and count of symbols\nare converted from longs to ints.\n\nWe cannot possibly have a module where 32 bits won\u0027t\nbe enough to hold such counts.\n\nFor one, module loading checks module size for sanity\nbefore loading, so such insanely big module will fail\nthat test first.\n\nSigned-off-by: Denys Vlasenko \u003cvda.linux@googlemail.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "f7f5b67557eac1131ba6532522e3c50eced34238",
      "tree": "8547b900f4bc40f69673c78b261ac5b44423fbfb",
      "parents": [
        "af5406895a05720a879dc33e2f4878fa503e81b3"
      ],
      "author": {
        "name": "Denys Vlasenko",
        "email": "vda.linux@googlemail.com",
        "time": "Tue Jul 22 19:24:26 2008 -0500"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Jul 22 19:24:27 2008 +1000"
      },
      "message": "Shrink struct module: CONFIG_UNUSED_SYMBOLS ifdefs\n\nmodule.c and module.h conatains code for finding\nexported symbols which are declared with EXPORT_UNUSED_SYMBOL,\nand this code is compiled in even if CONFIG_UNUSED_SYMBOLS is not set\nand thus there can be no EXPORT_UNUSED_SYMBOLs in modules anyway\n(because EXPORT_UNUSED_SYMBOL(x) are compiled out to nothing then).\n\nThis patch adds required #ifdefs.\n\nSigned-off-by: Denys Vlasenko \u003cvda.linux@googlemail.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "dafd0940c96fec67974a88ed8e6b8ba3160394cd",
      "tree": "616da8f0f283509ec71ff2d6e467fa4c6877edc6",
      "parents": [
        "da39ba5e1d65e997a98f6eb93ba6e6eb505f6e3c"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Jul 22 19:24:25 2008 -0500"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Jul 22 19:24:26 2008 +1000"
      },
      "message": "module: generic each_symbol iterator function\n\nIntroduce an each_symbol() iterator to avoid duplicating the knowledge\nabout the 5 different sections containing symbols.  Currently only\nused by find_symbol(), but will be used by symbol_put_addr() too.\n\n(Includes NULL ptr deref fix by Jiri Kosina \u003cjkosina@suse.cz\u003e)\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "da39ba5e1d65e997a98f6eb93ba6e6eb505f6e3c",
      "tree": "7c47c0481a7e8b9a9a13a9ce6ea8f11ed145b546",
      "parents": [
        "93ded9b8fd42abe2c3607097963d8de6ad9117eb"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Jul 22 19:24:25 2008 -0500"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Jul 22 19:24:25 2008 +1000"
      },
      "message": "module: don\u0027t use stop_machine for waiting rmmod\n\nrmmod has a little-used \"-w\" option, meaning that instead of failing if the\nmodule is in use, it should block until the module becomes unused.\n\nIn this case, we don\u0027t need to use stop_machine: Max Krasnyansky\nindicated that would be useful for SystemTap which loads/unloads new\nmodules frequently.\n\nCc: Max Krasnyansky \u003cmaxk@qualcomm.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "34e4e2fef4c7a2f7699b3d25e48d871d3ac4c3e7",
      "tree": "0d013ca321765f38f57c53a012b7a8cad30ea3f2",
      "parents": [
        "c4ea6fcf5a192dbba54666f308bdace1c278e0c1"
      ],
      "author": {
        "name": "Denis V. Lunev",
        "email": "den@openvz.org",
        "time": "Tue May 20 13:59:48 2008 +0400"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri May 23 13:09:33 2008 +1000"
      },
      "message": "modules: proper cleanup of kobject without CONFIG_SYSFS\n\nkobject: \u0027\u003cNULL\u003e\u0027 (ffffffffa0104050): is not initialized, yet kobject_put() is being called.\n------------[ cut here ]------------\nWARNING: at /home/den/src/linux-netns26/lib/kobject.c:583 kobject_put+0x53/0x55()\nModules linked in: ipv6 nfsd lockd nfs_acl auth_rpcgss sunrpc exportfs ide_cd_mod cdrom button [last unloaded: pktgen]\ncomm: rmmod Tainted: G        W 2.6.26-rc3 #585\nCall Trace:\n  [\u003cffffffff802359ab\u003e] warn_on_slowpath+0x58/0x7a\n  [\u003cffffffff80236aca\u003e] ? printk+0x67/0x69\n  [\u003cffffffff80236aca\u003e] ? printk+0x67/0x69\n  [\u003cffffffff80324289\u003e] kobject_put+0x53/0x55\n  [\u003cffffffff8025e2ee\u003e] free_module+0x87/0xfa\n  [\u003cffffffff8025fee5\u003e] sys_delete_module+0x178/0x1e1\n  [\u003cffffffff804b1e70\u003e] ? lockdep_sys_exit_thunk+0x35/0x67\n  [\u003cffffffff804b1dff\u003e] ? trace_hardirqs_on_thunk+0x35/0x3a\n  [\u003cffffffff8020c0bb\u003e] system_call_after_swapgs+0x7b/0x80\n---[ end trace 8f5aafa7f6406cf8 ]---\n\nmod-\u003emkobj.kobj is not initialized without CONFIG_SYSFS. Do not call\nkobject_put in this case.\n\nSigned-off-by: Denis V. Lunev \u003cden@openvz.org\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "c4ea6fcf5a192dbba54666f308bdace1c278e0c1",
      "tree": "93055c860a9ddfff8e2d056e3ad19730a81b8cb9",
      "parents": [
        "78b58e549a3098a8c1408d0214bd25e5d5e7a3a3"
      ],
      "author": {
        "name": "Cyrill Gorcunov",
        "email": "gorcunov@gmail.com",
        "time": "Wed May 14 16:27:29 2008 -0700"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri May 23 13:09:32 2008 +1000"
      },
      "message": "module loading ELF handling: use SELFMAG instead of numeric constant\n\nSigned-off-by: Cyrill Gorcunov \u003cgorcunov@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "91e37a793b5a9436a2d12b2f0a8f52db3a133e1d",
      "tree": "6ddf17ad786fa2a42ef79aa4f7873c79c1e17a89",
      "parents": [
        "a5dd69707424a35d2d2cc094e870f595ad61e916"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri May 09 16:25:28 2008 +1000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 09 07:45:18 2008 -0700"
      },
      "message": "module: don\u0027t ignore vermagic string if module doesn\u0027t have modversions\n\nLinus found a logic bug: we ignore the version number in a module\u0027s\nvermagic string if we have CONFIG_MODVERSIONS set, but modversions\nalso lets through a module with no __versions section for modprobe\n--force (with tainting, but still).\n\nWe should only ignore the start of the vermagic string if the module\nactually *has* crcs to check.  Rather than (say) having an\nentertaining hissy fit and creating a config option to work around the\nbuggy code.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a5dd69707424a35d2d2cc094e870f595ad61e916",
      "tree": "dd9dffe6748358bac9a8699f7d8ad9e205886a67",
      "parents": [
        "6c2545eefffc452e52302c96c955d9aa26353aa9"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri May 09 16:24:21 2008 +1000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 09 07:45:18 2008 -0700"
      },
      "message": "module: be more picky about allowing missing module versions\n\nWe allow missing __versions sections, because modprobe --force strips\nit.  It makes less sense to allow sections where there\u0027s no version\nfor a specific symbol the module uses, so disallow that.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "826e4506a0acb6487910a5ebafe839f708a00e1c",
      "tree": "20cc66b6b38c0414930d85a8a9705a3a3eff8ddf",
      "parents": [
        "afa26be86b65a7183ceac29bdf1f51d6fc6932f0"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun May 04 17:04:16 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun May 04 17:04:16 2008 -0700"
      },
      "message": "Make forced module loading optional\n\nThe kernel module loader used to be much too happy to allow loading of\nmodules for the wrong kernel version by default.  For example, if you\nhad MODVERSIONS enabled, but tried to load a module with no version\ninfo, it would happily load it and taint the kernel - whether it was\nlikely to actually work or not!\n\nGenerally, such forced module loading should be considered a really\nreally bad idea, so make it conditional on a new config option\n(MODULE_FORCE_LOAD), and make it default to off.\n\nIf somebody really wants to force module loads, that\u0027s their problem,\nbut we should not encourage it.  Especially as it happened to me by\nmistake (ie regular unversioned Fedora modules getting loaded) causing\nlots of strange behavior.\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "df4b565e1fbc777bb6e274378a41fa8ff7485680",
      "tree": "8b64f22bb57419d57fdd4914645bafeaf9171733",
      "parents": [
        "b211104d111c99dbb97c636b57bd9db711455684"
      ],
      "author": {
        "name": "Peter Oberparleiter",
        "email": "peter.oberparleiter@de.ibm.com",
        "time": "Mon Apr 21 14:34:31 2008 +0200"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu May 01 21:15:01 2008 +1000"
      },
      "message": "module: add MODULE_STATE_GOING notifier call\n\nProvide module unload callback. Required by the gcov profiling\ninfrastructure to keep track of profiling data structures.\n\nSigned-off-by: Peter Oberparleiter \u003cpeter.oberparleiter@de.ibm.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "b211104d111c99dbb97c636b57bd9db711455684",
      "tree": "129d949287a17457f3a8081dd6f04b8a945bcb29",
      "parents": [
        "4e2d92454b2d822fe1d474efabccc2a3806d5f86"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu May 01 21:15:00 2008 -0500"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu May 01 21:15:00 2008 +1000"
      },
      "message": "module: Enhance verify_export_symbols\n\nMake verify_export_symbols check the modules unused, unused_gpl and\ngpl_future syms.\n\nInspired by Jan Beulich\u0027s fix, but table-driven.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "4e2d92454b2d822fe1d474efabccc2a3806d5f86",
      "tree": "88ff1b8d85d367a9f70f538b326e1d13ec0173d9",
      "parents": [
        "ad9546c9917d44eddc7676b639296d624cee455e"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu May 01 21:15:00 2008 -0500"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu May 01 21:15:00 2008 +1000"
      },
      "message": "module: set unused_gpl_crcs instead of overwriting unused_crcs\n\nObvious typo, but I don\u0027t know of any modules with unused GPL exports,\nand then it would take someone noticing that the version shouldn\u0027t\nhave matched in a dependent module.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "ad9546c9917d44eddc7676b639296d624cee455e",
      "tree": "d6b5cc09706fd05c78ccad79342768152a74035e",
      "parents": [
        "ea01e798e2d27fd04142e0473ca36570fa9d9218"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu May 01 21:14:59 2008 -0500"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu May 01 21:15:00 2008 +1000"
      },
      "message": "module: neaten __find_symbol, rename to find_symbol\n\n__find_symbol() has grown over time: there are now 5 different arrays\nof symbols it traverses.  It also shouldn\u0027t print out a warning on\nsome calls (ie. verify_symbol which simply checks for name clashes,\nand __symbol_put which checks for bugs).\n\n1) Rename to find_symbol: no need for underscores.\n2) Use bool and add \"warn\" parameter to suppress warnings.\n3) Make table-driven rather than open coded.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "ea01e798e2d27fd04142e0473ca36570fa9d9218",
      "tree": "717ad87d4c38dd6bed15ba4dfdfaea8f33411367",
      "parents": [
        "a58730c42174672fe0012a4edbe3e38f94ef2bad"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Mar 13 09:02:17 2008 +0000"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu May 01 21:14:59 2008 +1000"
      },
      "message": "module: reduce module image and resident size\n\nResulting reduction (x86-64, gcc 4.1.2) with my (special purpose, i.e.\nmuch reduced) configurations:\n- 16k kernel resident size\n- 180k module resident size\n- 10k module image size\n\nSigned-off-by: Jan Beulich \u003cjbeulich@novell.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "a58730c42174672fe0012a4edbe3e38f94ef2bad",
      "tree": "6cd01098614ea8fc00f5eba462a208cc5a038d2a",
      "parents": [
        "e4c576b911e364737b1bf4f5bfdab1c440713f26"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Mar 13 09:03:44 2008 +0000"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu May 01 21:14:59 2008 +1000"
      },
      "message": "module: make module_sect_attrs private to kernel/module.c\n\nNo-one else is using these afaics.\n\nSigned-off-by: Jan Beulich \u003cjbeulich@novell.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "a6550207538619bc9b90bac2e1d5e54902a432ad",
      "tree": "cc9bb9b5153810b544c2afcc7721353ff5ce957d",
      "parents": [
        "5a6483feb0c5193519625d0ea8c4254364d423cc"
      ],
      "author": {
        "name": "Matthew Wilcox",
        "email": "matthew@wil.cx",
        "time": "Tue Feb 26 10:47:18 2008 -0500"
      },
      "committer": {
        "name": "Matthew Wilcox",
        "email": "willy@linux.intel.com",
        "time": "Fri Apr 18 22:17:04 2008 -0400"
      },
      "message": "kernel: Remove unnecessary inclusions of asm/semaphore.h\n\nNone of these files use any of the functionality promised by\nasm/semaphore.h.\n\nSigned-off-by: Matthew Wilcox \u003cwilly@linux.intel.com\u003e\n"
    },
    {
      "commit": "e24e2e64c468c8060bb7173abecdf11d00ed5751",
      "tree": "b03faa2fd187a207d0a2e78af75a787a66ab21fe",
      "parents": [
        "6c5db22d280302c33dafb309c25bf2841fb99c37"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon Mar 10 11:43:53 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Mar 10 18:01:20 2008 -0700"
      },
      "message": "modules: warn about suspicious return values from module\u0027s -\u003einit() hook\n\nReturn value convention of module\u0027s init functions is 0/-E.  Sometimes,\ne.g.  during forward-porting mistakes happen and buggy module created,\nwhere result of comparison \"workqueue !\u003d NULL\" is propagated all the way up\nto sys_init_module.  What happens is that some other module created\nworkqueue in question, our module created it again and module was\nsuccessfully loaded.\n\nOr it could be some other bug.\n\nLet\u0027s make such mistakes much more visible.  In retrospective, such\nmessages would noticeably shorten some of my head-scratching sessions.\n\nNote, that dump_stack() is just a way to get attention from user.  Sample\nmessage:\n\nsys_init_module: \u0027foo\u0027-\u003einit suspiciously returned 1, it should follow 0/-E convention\nsys_init_module: loading module anyway...\nPid: 4223, comm: modprobe Not tainted 2.6.24-25f666300625d894ebe04bac2b4b3aadb907c861 #5\n\nCall Trace:\n [\u003cffffffff80254b05\u003e] sys_init_module+0xe5/0x1d0\n [\u003cffffffff8020b39b\u003e] system_call_after_swapgs+0x7b/0x80\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\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": "6c5db22d280302c33dafb309c25bf2841fb99c37",
      "tree": "0d3711b8a32646f52eca5015447256a30bc96a88",
      "parents": [
        "2668db9111bb1a6ab5a54f41f703179f35c7d098"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Mar 10 11:43:52 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Mar 10 18:01:19 2008 -0700"
      },
      "message": "modules: fix module waiting for dependent modules\u0027 init\n\nCommit c9a3ba55 (module: wait for dependent modules doing init.) didn\u0027t quite\nwork because the waiter holds the module lock, meaning that the state of the\nmodule it\u0027s waiting for cannot change.\n\nFortunately, it\u0027s fairly simple to update the state outside the lock and do\nthe wakeup.\n\nThanks to Jan Glauber for tracking this down and testing (qdio and qeth).\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Jan Glauber \u003cjang@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": "9b37ccfc637be27d9a652fcedc35e6e782c3aa78",
      "tree": "525fd97d130c630ff5e65de2d83823174986a6a5",
      "parents": [
        "27d0483aa1ef66a8877d71b63bb97f46ab0246b2"
      ],
      "author": {
        "name": "Pavel Roskin",
        "email": "proski@gnu.org",
        "time": "Thu Feb 28 17:11:02 2008 -0500"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Mar 04 20:29:40 2008 -0800"
      },
      "message": "module: allow ndiswrapper to use GPL-only symbols\n\nA change after 2.6.24 broke ndiswrapper by accidentally removing its\naccess to GPL-only symbols.  Revert that change and add comments about\nthe reasons why ndiswrapper and driverloader are treated in a special\nway.\n\nSigned-off-by: Pavel Roskin \u003cproski@gnu.org\u003e\nAcked-by: Greg KH \u003cgregkh@suse.de\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Jon Masters \u003cjonathan@jonmasters.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "120fc3d77acfd91f3521737a440d42839c475982",
      "tree": "8f13e2fbad7f5aeafcf0a2bf6a235bddcbede6a3",
      "parents": [
        "58dc3232ff77158460f79e3c1932b81e8a2a0194"
      ],
      "author": {
        "name": "Kay Sievers",
        "email": "kay.sievers@vrfy.org",
        "time": "Thu Feb 21 00:33:20 2008 +0100"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Thu Feb 21 15:27:08 2008 -0800"
      },
      "message": "modules: do not try to add sysfs attributes if !CONFIG_SYSFS\n\nThanks to Alexey for the testing and the fix of the fix.\n\nCc: Alexey Dobriyan \u003cadobriyan@sw.ru\u003e\nSigned-off-by: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "fb40bd78b0f91b274879cf5db8facd1e04b6052e",
      "tree": "2347ccb5ad07f58ab5a4eb41174bb7b54d5f0c5b",
      "parents": [
        "9170d2f6e1dc4d79650fbf492d1cd45291c66504"
      ],
      "author": {
        "name": "Mathieu Desnoyers",
        "email": "mathieu.desnoyers@polymtl.ca",
        "time": "Wed Feb 13 15:03:37 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Feb 13 16:21:20 2008 -0800"
      },
      "message": "Linux Kernel Markers: support multiple probes\n\nRCU style multiple probes support for the Linux Kernel Markers.  Common case\n(one probe) is still fast and does not require dynamic allocation or a\nsupplementary pointer dereference on the fast path.\n\n- Move preempt disable from the marker site to the callback.\n\nSince we now have an internal callback, move the preempt disable/enable to the\ncallback instead of the marker site.\n\nSince the callback change is done asynchronously (passing from a handler that\nsupports arguments to a handler that does not setup the arguments is no\narguments are passed), we can safely update it even if it is outside the\npreempt disable section.\n\n- Move probe arm to probe connection. Now, a connected probe is automatically\n  armed.\n\nRemove MARK_MAX_FORMAT_LEN, unused.\n\nThis patch modifies the Linux Kernel Markers API : it removes the probe\n\"arm/disarm\" and changes the probe function prototype : it now expects a\nva_list * instead of a \"...\".\n\nIf we want to have more than one probe connected to a marker at a given\ntime (LTTng, or blktrace, ssytemtap) then we need this patch. Without it,\nconnecting a second probe handler to a marker will fail.\n\nIt allow us, for instance, to do interesting combinations :\n\nDo standard tracing with LTTng and, eventually, to compute statistics\nwith SystemTAP, or to have a special trigger on an event that would call\na systemtap script which would stop flight recorder tracing.\n\nSigned-off-by: Mathieu Desnoyers \u003cmathieu.desnoyers@polymtl.ca\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Mike Mason \u003cmmlnx@us.ibm.com\u003e\nCc: Dipankar Sarma \u003cdipankar@in.ibm.com\u003e\nCc: David Smith \u003cdsmith@redhat.com\u003e\nCc: \"Paul E. McKenney\" \u003cpaulmck@us.ibm.com\u003e\nCc: \"Frank Ch. Eigler\" \u003cfche@redhat.com\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "92dfc9dc7ba63134f721b6e745dbdcfc13ea341b",
      "tree": "aa959d2d5ba1819651888601e4d917b01ddcc88c",
      "parents": [
        "6d7623943c905efae327933bc5ee0b2f78e15f56"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Fri Feb 08 04:18:43 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Feb 08 09:22:24 2008 -0800"
      },
      "message": "fix \"modules: make module_address_lookup() safe\"\n\nGet the constness right, avoid nasty cast.\n\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Kyle McMartin \u003ckyle@mcmartin.ca\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": "6d7623943c905efae327933bc5ee0b2f78e15f56",
      "tree": "e2e4e073bd495970aa487bec94c560dcf31e33b1",
      "parents": [
        "88173507e4fc1e7ecd111b0565e8cba0cb7dae6d"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Fri Feb 08 04:18:42 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Feb 08 09:22:24 2008 -0800"
      },
      "message": "modules: include sections.h to avoid defining linker variables explicitly\n\nmodule.c should not define linker variables on its own. We have an include\nfile for that.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\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": "88173507e4fc1e7ecd111b0565e8cba0cb7dae6d",
      "tree": "ed1a3f61f95b6e253afe8e330a668a12ad56a4e2",
      "parents": [
        "596f56018df3ed7de20f6038f72177b3674ebbd4"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Fri Feb 08 04:18:41 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Feb 08 09:22:24 2008 -0800"
      },
      "message": "Modules: handle symbols that have a zero value\n\nThe module subsystem cannot handle symbols that are zero.  If symbols are\npresent that have a zero value then the module resolver prints out a\nmessage that these symbols are unresolved.\n\n[akinobu.mita@gmail.com: fix __find_symbl() error checks]\nCc: Mathieu Desnoyers \u003cmathieu.desnoyers@polymtl.ca\u003e\nCc: Kay Sievers \u003ckay.sievers@vrfy.org\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\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": "dd5af90a7f3d79e04b7eace9a98644dbf2038f4d",
      "tree": "22327ba385c830b7be391c76821dc5ec26863f2e",
      "parents": [
        "3212bff370c2f22e4987c6679ba485654cefb178"
      ],
      "author": {
        "name": "Mike Travis",
        "email": "travis@sgi.com",
        "time": "Wed Jan 30 13:33:32 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Jan 30 13:33:32 2008 +0100"
      },
      "message": "x86/non-x86: percpu, node ids, apic ids x86.git fixup\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "6494a93d55fad586238cc1940e846c6d03e1aaf6",
      "tree": "8f930c1064753ab478b879b5598952f1ae87e52e",
      "parents": [
        "0aa5bd52d0c49ca56d24584c646e6544ccbb3dc9"
      ],
      "author": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Sun Jan 27 15:38:40 2008 -0800"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Jan 29 17:13:27 2008 +1100"
      },
      "message": "Module: check to see if we have a built in module with the same name\n\nWhen trying to load a module with the same name as a built-in one, a\nscary kobject backtrace comes up.  Prevent that from checking for this\ncondition and warning the user as to what exactly is going on.\n\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "0aa5bd52d0c49ca56d24584c646e6544ccbb3dc9",
      "tree": "abce9de5d47992e5ccdfd052df022374d99f81a1",
      "parents": [
        "8686c99875f3849047660a5b6d02438443f22ce7"
      ],
      "author": {
        "name": "Jon Masters",
        "email": "jonathan@jonmasters.org",
        "time": "Mon Jan 21 20:43:41 2008 +0000"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Jan 29 17:13:26 2008 +1100"
      },
      "message": "module: add module taint on ndiswrapper\n\nThe struct module taints member is supposed to store per-module taint\ndata. The kernel knows about certain specific external modules that will\ntaint the kernel, such as ndiswrapper. Use of ndiswrapper possibly\nshould set the per-module taint in addition to the global kernel\ntaint flag, unless we\u0027re arguing not because wrapper module itself\nis not what actually causes the kernel to be tainted as such?\n\nSigned-off-by: Jon Masters \u003cjcm@jonmasters.org\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "6dd06c9fbe025f542bce4cdb91790c0f91962722",
      "tree": "5c946eb93f30c64fd435bdd6d1064880ef21557a",
      "parents": [
        "bb9d3d56e792d2619cc0903df4ac01d86ac1261d"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Jan 29 17:13:22 2008 -0500"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Jan 29 17:13:23 2008 +1100"
      },
      "message": "module: make module_address_lookup safe\n\nmodule_address_lookup releases preemption then returns a pointer into\nthe module space.  The only user (kallsyms) copies the result, so just\ndo that under the preempt disable.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "bb9d3d56e792d2619cc0903df4ac01d86ac1261d",
      "tree": "25ff54c8402b6dedf45a3145b5d9904e14983bf4",
      "parents": [
        "efa5345e39d01deef349c120f55ac6b6eabe7457"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Jan 29 17:13:21 2008 -0500"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Jan 29 17:13:22 2008 +1100"
      },
      "message": "module: better OOPS and lockdep coverage for loading modules\n\nIf we put the module in the linked list *before* calling into to, we\nget the module name and functions in the OOPS (is_module_address can\nfind the module).  It also helps lockdep in a similar way.\n\nAcked-and-tested-by: Joern Engel \u003cjoern@lazybastard.org\u003e\nTested-by: Erez Zadok \u003cezk@cs.sunysb.edu\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "efa5345e39d01deef349c120f55ac6b6eabe7457",
      "tree": "7c8d0919aa380a0db7ac748d6c4571c00aa5c639",
      "parents": [
        "c9a3ba55bb5da03fc7d707709a7fe078fe1aa0a0"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Jan 29 17:13:20 2008 -0500"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Jan 29 17:13:21 2008 +1100"
      },
      "message": "module: Fix gratuitous sprintf in module.c\n\nAndrew sent an older version of this patch: we shouldn\u0027t use sprintf\nto copy a string.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "c9a3ba55bb5da03fc7d707709a7fe078fe1aa0a0",
      "tree": "3d25d1783ad794b7bc64f5f36f5289f7f51a56fc",
      "parents": [
        "a2da4052f1df6bc77749f84496fe731ab8b458f7"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Jan 29 17:13:18 2008 -0500"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Jan 29 17:13:20 2008 +1100"
      },
      "message": "module: wait for dependent modules doing init.\n\nThere have been reports of modules failing to load because the modules\nthey depend on are still loading.  This changes the modules to wait\nfor a reasonable length of time in that case.  We time out eventually,\nbecause there can be module loops or broken modules.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "e14af7eeb47ea96c52741c5e5fa010d33daf6973",
      "tree": "0b4c1af86e766726ba75873812715706e4044086",
      "parents": [
        "21aa9280b9f4e9e68d3fa8990df6c9d7fd71f994"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Fri Jan 25 21:08:33 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jan 25 21:08:33 2008 +0100"
      },
      "message": "debug: track and print last unloaded module in the oops trace\n\nBased on a suggestion from Andi:\n\n In various cases, the unload of a module may leave some bad state around\n that causes a kernel crash AFTER a module is unloaded; and it\u0027s then hard\n to find which module caused that.\n\nThis patch tracks the last unloaded module, and prints this as part of the\nmodule list in the oops trace.\n\nRight now, only the last 1 module is tracked; I expect that this is enough\nfor the vast majority of cases where this information matters; if it turns\nout that tracking more is important, we can always extend it to that.\n\n[ mingo@elte.hu: build fix ]\n\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    }
  ],
  "next": "21aa9280b9f4e9e68d3fa8990df6c9d7fd71f994"
}
