)]}'
{
  "log": [
    {
      "commit": "d895cb1af15c04c522a25c79cc429076987c089b",
      "tree": "895dc9157e28f603d937a58be664e4e440d5530c",
      "parents": [
        "9626357371b519f2b955fef399647181034a77fe",
        "d3d009cb965eae7e002ea5badf603ea8f4c34915"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Feb 26 20:16:07 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Feb 26 20:16:07 2013 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs\n\nPull vfs pile (part one) from Al Viro:\n \"Assorted stuff - cleaning namei.c up a bit, fixing -\u003ed_name/-\u003ed_parent\n  locking violations, etc.\n\n  The most visible changes here are death of FS_REVAL_DOT (replaced with\n  \"has -\u003ed_weak_revalidate()\") and a new helper getting from struct file\n  to inode.  Some bits of preparation to xattr method interface changes.\n\n  Misc patches by various people sent this cycle *and* ocfs2 fixes from\n  several cycles ago that should\u0027ve been upstream right then.\n\n  PS: the next vfs pile will be xattr stuff.\"\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (46 commits)\n  saner proc_get_inode() calling conventions\n  proc: avoid extra pde_put() in proc_fill_super()\n  fs: change return values from -EACCES to -EPERM\n  fs/exec.c: make bprm_mm_init() static\n  ocfs2/dlm: use GFP_ATOMIC inside a spin_lock\n  ocfs2: fix possible use-after-free with AIO\n  ocfs2: Fix oops in ocfs2_fast_symlink_readpage() code path\n  get_empty_filp()/alloc_file() leave both -\u003ef_pos and -\u003ef_version zero\n  target: writev() on single-element vector is pointless\n  export kernel_write(), convert open-coded instances\n  fs: encode_fh: return FILEID_INVALID if invalid fid_type\n  kill f_vfsmnt\n  vfs: kill FS_REVAL_DOT by adding a d_weak_revalidate dentry op\n  nfsd: handle vfs_getattr errors in acl protocol\n  switch vfs_getattr() to struct path\n  default SET_PERSONALITY() in linux/elf.h\n  ceph: prepopulate inodes only when request is aborted\n  d_hash_and_lookup(): export, switch open-coded instances\n  9p: switch v9fs_set_create_acl() to inode+fid, do it before d_instantiate()\n  9p: split dropping the acls from v9fs_set_create_acl()\n  ...\n"
    },
    {
      "commit": "3dadecce20603aa380023c65e6f55f108fd5e952",
      "tree": "9c6b1540787ba3c0c2342447bf1b35836b1e4314",
      "parents": [
        "e72837e3e7bae3f182c4ac63c9424e86f1158dd0"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jan 24 02:18:08 2013 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Feb 26 02:46:08 2013 -0500"
      },
      "message": "switch vfs_getattr() to struct path\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "a3535c7e4f4495fe947f7901d25447d80e04fe52",
      "tree": "1a1f78c2b6cc07561b624e7443dc6493b5b8e5e3",
      "parents": [
        "f2e207f32422c7b9624d3393db015dfd118d9d22"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Jan 21 17:18:59 2013 +1030"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Jan 21 17:20:09 2013 +1030"
      },
      "message": "module: clean up load_module a little more.\n\n1fb9341ac34825aa40354e74d9a2c69df7d2c304 made our locking in\nload_module more complicated: we grab the mutex once to insert the\nmodule in the list, then again to upgrade it once it\u0027s formed.\n\nSince the locking is self-contained, it\u0027s neater to do this in\nseparate functions.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "373d4d099761cb1f637bed488ab3871945882273",
      "tree": "954bef7bc724aee105dd246d5f2b1ea04ed38b20",
      "parents": [
        "64748a2c9062da0c32b59c1b368a86fc4613b1e1"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Jan 21 17:17:39 2013 +1030"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Jan 21 17:17:57 2013 +1030"
      },
      "message": "taint: add explicit flag to show whether lock dep is still OK.\n\nFix up all callers as they were before, with make one change: an\nunsigned module taints the kernel, but doesn\u0027t turn off lockdep.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "64748a2c9062da0c32b59c1b368a86fc4613b1e1",
      "tree": "e2f76eb3ec6ca76a8236100e0924a0710e39612e",
      "parents": [
        "9a9284153d965a57edc7162a8e57c14c97f3a935"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Jan 21 17:03:02 2013 +1030"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Jan 21 17:17:05 2013 +1030"
      },
      "message": "module: printk message when module signature fail taints kernel.\n\nReported-by: Chris Samuel \u003cchris@csamuel.org\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "ee61abb3223e28a1a14a8429c0319755d20d3e40",
      "tree": "4054f8726988c6a16264b34d6b630c6597077cda",
      "parents": [
        "226364766f936d249e408de03821468c1bf11dda"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jan 20 20:22:58 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jan 20 20:22:58 2013 -0800"
      },
      "message": "module: fix missing module_mutex unlock\n\nCommit 1fb9341ac348 (\"module: put modules in list much earlier\") moved\nsome of the module initialization code around, and in the process\nchanged the exit paths too.  But for the duplicate export symbol error\ncase the change made the ddebug_cleanup path jump to after the module\nmutex unlock, even though it happens with the mutex held.\n\nRusty has some patches to split this function up into some helper\nfunctions, hopefully the mess of complex goto targets will go away\neventually.\n\nReported-by: Dan Carpenter \u003cdan.carpenter@oracle.com\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "226364766f936d249e408de03821468c1bf11dda",
      "tree": "3b4feabb40a87f311ae92bb973c18293d05597e8",
      "parents": [
        "3a142ed962958d3063f648738a3384ab90017100",
        "1fb9341ac34825aa40354e74d9a2c69df7d2c304"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jan 20 16:44:28 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jan 20 16:44:28 2013 -0800"
      },
      "message": "Merge tag \u0027fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux\n\nPull module fixes and a virtio block fix from Rusty Russell:\n \"Various minor fixes, but a slightly more complex one to fix the\n  per-cpu overload problem introduced recently by kvm id changes.\"\n\n* tag \u0027fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux:\n  module: put modules in list much earlier.\n  module: add new state MODULE_STATE_UNFORMED.\n  module: prevent warning when finit_module a 0 sized file\n  virtio-blk: Don\u0027t free ida when disk is in use\n"
    },
    {
      "commit": "774a1221e862b343388347bac9b318767336b20b",
      "tree": "ee02b2b71268d9478f709bea8636ddd5eafdc007",
      "parents": [
        "406089d01562f1e2bf9f089fd7637009ebaad589"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jan 15 18:52:51 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jan 16 09:05:33 2013 -0800"
      },
      "message": "module, async: async_synchronize_full() on module init iff async is used\n\nIf the default iosched is built as module, the kernel may deadlock\nwhile trying to load the iosched module on device probe if the probing\nwas running off async.  This is because async_synchronize_full() at\nthe end of module init ends up waiting for the async job which\ninitiated the module loading.\n\n async A\t\t\t\tmodprobe\n\n 1. finds a device\n 2. registers the block device\n 3. request_module(default iosched)\n\t\t\t\t\t4. modprobe in userland\n\t\t\t\t\t5. load and init module\n\t\t\t\t\t6. async_synchronize_full()\n\nAsync A waits for modprobe to finish in request_module() and modprobe\nwaits for async A to finish in async_synchronize_full().\n\nBecause there\u0027s no easy to track dependency once control goes out to\nuserland, implementing properly nested flushing is difficult.  For\nnow, make module init perform async_synchronize_full() iff module init\nhas queued async jobs as suggested by Linus.\n\nThis avoids the described deadlock because iosched module doesn\u0027t use\nasync and thus wouldn\u0027t invoke async_synchronize_full().  This is\nhacky and incomplete.  It will deadlock if async module loading nests;\nhowever, this works around the known problem case and seems to be the\nbest of bad options.\n\nFor more details, please refer to the following thread.\n\n  http://thread.gmane.org/gmane.linux.kernel/1420814\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReported-by: Alex Riesen \u003craa.lkml@gmail.com\u003e\nTested-by: Ming Lei \u003cming.lei@canonical.com\u003e\nTested-by: Alex Riesen \u003craa.lkml@gmail.com\u003e\nCc: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1fb9341ac34825aa40354e74d9a2c69df7d2c304",
      "tree": "ebb2b836673d722845cd0a17c836799d800ae810",
      "parents": [
        "0d21b0e3477395e7ff2acc269f15df6e6a8d356d"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Sat Jan 12 13:27:34 2013 +1030"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Sat Jan 12 13:27:46 2013 +1030"
      },
      "message": "module: put modules in list much earlier.\n\nPrarit\u0027s excellent bug report:\n\u003e In recent Fedora releases (F17 \u0026 F18) some users have reported seeing\n\u003e messages similar to\n\u003e\n\u003e [   15.478160] kvm: Could not allocate 304 bytes percpu data\n\u003e [   15.478174] PERCPU: allocation failed, size\u003d304 align\u003d32, alloc from\n\u003e reserved chunk failed\n\u003e\n\u003e during system boot.  In some cases, users have also reported seeing this\n\u003e message along with a failed load of other modules.\n\u003e\n\u003e What is happening is systemd is loading an instance of the kvm module for\n\u003e each cpu found (see commit e9bda3b).  When the module load occurs the kernel\n\u003e currently allocates the modules percpu data area prior to checking to see\n\u003e if the module is already loaded or is in the process of being loaded.  If\n\u003e the module is already loaded, or finishes load, the module loading code\n\u003e releases the current instance\u0027s module\u0027s percpu data.\n\nNow we have a new state MODULE_STATE_UNFORMED, we can insert the\nmodule into the list (and thus guarantee its uniqueness) before we\nallocate the per-cpu region.\n\nReported-by: Prarit Bhargava \u003cprarit@redhat.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nTested-by: Prarit Bhargava \u003cprarit@redhat.com\u003e\n"
    },
    {
      "commit": "0d21b0e3477395e7ff2acc269f15df6e6a8d356d",
      "tree": "116c1a198a36f7ec80cf39e8f307175344290612",
      "parents": [
        "52441fa8f2f1ccc9fa97607c6ccf8b46b9fd15ae"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Sat Jan 12 11:38:44 2013 +1030"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Sat Jan 12 13:27:05 2013 +1030"
      },
      "message": "module: add new state MODULE_STATE_UNFORMED.\n\nYou should never look at such a module, so it\u0027s excised from all paths\nwhich traverse the modules list.\n\nWe add the state at the end, to avoid gratuitous ABI break (ksplice).\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "52441fa8f2f1ccc9fa97607c6ccf8b46b9fd15ae",
      "tree": "5a5d4536de0898ed4ae4a012979e0ce17fdfb2ff",
      "parents": [
        "f4953fe6c4aeada2d5cafd78aa97587a46d2d8f9"
      ],
      "author": {
        "name": "Sasha Levin",
        "email": "sasha.levin@oracle.com",
        "time": "Thu Jan 03 11:09:53 2013 +1030"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Jan 03 11:10:32 2013 +1030"
      },
      "message": "module: prevent warning when finit_module a 0 sized file\n\nIf we try to finit_module on a file sized 0 bytes vmalloc will\nscream and spit out a warning.\n\nSince modules have to be bigger than 0 bytes anyways we can just\ncheck that beforehand and avoid the warning.\n\nSigned-off-by: Sasha Levin \u003csasha.levin@oracle.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "7a684c452e2589f3ddd7e2d466b4f747d3715ad9",
      "tree": "fed803e7450770993575b37807ba2195eafd5b0e",
      "parents": [
        "7f2de8171ddf28fdb2ca7f9a683ee1207849f718",
        "e10e1774efbdaec54698454200619a03a01e1d64"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 19 07:55:08 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 19 07:55:08 2012 -0800"
      },
      "message": "Merge tag \u0027modules-next-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux\n\nPull module update from Rusty Russell:\n \"Nothing all that exciting; a new module-from-fd syscall for those who\n  want to verify the source of the module (ChromeOS) and/or use standard\n  IMA on it or other security hooks.\"\n\n* tag \u0027modules-next-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux:\n  MODSIGN: Fix kbuild output when using default extra_certificates\n  MODSIGN: Avoid using .incbin in C source\n  modules: don\u0027t hand 0 to vmalloc.\n  module: Remove a extra null character at the top of module-\u003estrtab.\n  ASN.1: Use the ASN1_LONG_TAG and ASN1_INDEFINITE_LENGTH constants\n  ASN.1: Define indefinite length marker constant\n  moduleparam: use __UNIQUE_ID()\n  __UNIQUE_ID()\n  MODSIGN: Add modules_sign make target\n  powerpc: add finit_module syscall.\n  ima: support new kernel module syscall\n  add finit_module syscall to asm-generic\n  ARM: add finit_module syscall to ARM\n  security: introduce kernel_module_from_file hook\n  module: add flags arg to sys_finit_module()\n  module: add syscall to load module from fd\n"
    },
    {
      "commit": "8ec7d50f1ed2b072d23ce810f86df09ee0568d4b",
      "tree": "913675a8d7d167a29e5d9dac4f16b6dfa0746bb8",
      "parents": [
        "66d93341b507185d6934756fb6f6b69b42ff43e4"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "boyu.mt@taobao.com",
        "time": "Mon Dec 17 15:59:36 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Dec 17 17:15:12 2012 -0800"
      },
      "message": "kernel: remove reference to feature-removal-schedule.txt\n\nIn commit 9c0ece069b32 (\"Get rid of Documentation/feature-removal.txt\"),\nLinus removed feature-removal-schedule.txt from Documentation, but there\nis still some reference to this file.  So remove them.\n\nSigned-off-by: Tao Ma \u003cboyu.mt@taobao.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "82fab442f5322b016f72891c0db2436c6a6c20b7",
      "tree": "1b55bbf22569cf721c4bc13dc8f96652bad50a26",
      "parents": [
        "54523ec71f8ce99accae97c74152f14f261f7e18"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Dec 11 09:38:33 2012 +1030"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Dec 14 13:06:43 2012 +1030"
      },
      "message": "modules: don\u0027t hand 0 to vmalloc.\n\nIn commit d0a21265dfb5fa8a David Rientjes unified various archs\u0027\nmodule_alloc implementation (including x86) and removed the graduitous\nshortcut for size \u003d\u003d 0.\n\nThen, in commit de7d2b567d040e3b, Joe Perches added a warning for\nzero-length vmallocs, which can happen without kallsyms on modules\nwith no init sections (eg. zlib_deflate).\n\nFix this once and for all; the module code has to handle zero length\nanyway, so get it right at the caller and remove the now-gratuitous\nchecks within the arch-specific module_alloc implementations.\n\nBugzilla: https://bugzilla.kernel.org/show_bug.cgi?id\u003d42608\nReported-by: Conrad Kostecki \u003cConiKost@gmx.de\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Joe Perches \u003cjoe@perches.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "54523ec71f8ce99accae97c74152f14f261f7e18",
      "tree": "0bd21d6d928da01bff4dac47ae6fe057a7541d7d",
      "parents": [
        "99cca91e370ab9224755365dda98b78eb5a5417f"
      ],
      "author": {
        "name": "Satoru Takeuchi",
        "email": "takeuchi_satoru@jp.fujitsu.com",
        "time": "Wed Dec 05 12:29:04 2012 +1030"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Dec 14 13:06:43 2012 +1030"
      },
      "message": "module: Remove a extra null character at the top of module-\u003estrtab.\n\nThere is a extra null character(\u0027\\0\u0027) at the top of module-\u003estrtab for\neach module. Commit 59ef28b introduced this bug and this patch fixes it.\n\nLive dump log of the current linus git kernel(HEAD is 2844a4870):\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\ncrash\u003e mod | grep loop\nffffffffa01db0a0  loop             16689  (not loaded)  [CONFIG_KALLSYMS]\ncrash\u003e module.core_symtab ffffffffa01db0a0\n  core_symtab \u003d 0xffffffffa01db320crash\u003e rd 0xffffffffa01db320 12\nffffffffa01db320:  0000005500000001 0000000000000000   ....U...........\nffffffffa01db330:  0000000000000000 0002007400000002   ............t...\nffffffffa01db340:  ffffffffa01d8000 0000000000000038   ........8.......\nffffffffa01db350:  001a00640000000e ffffffffa01daeb0   ....d...........\nffffffffa01db360:  00000000000000a0 0002007400000019   ............t...\nffffffffa01db370:  ffffffffa01d8068 000000000000001b   h...............\ncrash\u003e module.core_strtab ffffffffa01db0a0\n  core_strtab \u003d 0xffffffffa01dbb30 \"\"\ncrash\u003e rd 0xffffffffa01dbb30 4\nffffffffa01dbb30:  615f70616d6b0000 66780063696d6f74   ..kmap_atomic.xf\nffffffffa01dbb40:  73636e75665f7265 72665f646e696600   er_funcs.find_fr\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nWe expect Just first one byte of \u0027\\0\u0027, but actually first two bytes\nare \u0027\\0\u0027. Here is The relationship between symtab and strtab.\n\n\tsymtab_idx\tstrtab_idx\tsymbol\n\t-----------------------------------------------\n\t0\t\t0x1\t\t\"\\0\" # startab_idx should be 0\n\t1\t\t0x2\t\t\"kmap_atomic\"\n\t2\t\t0xe\t\t\"xfer_funcs\"\n\t3\t\t0x19\t\t\"find_fr...\"\n\nBy applying this patch, it becomes as follows.\n\n\tsymtab_idx\tstrtab_idx\tsymbol\n\t-----------------------------------------------\n\t0\t\t0x0\t\t\"\\0\"\t# extra byte is removed\n\t1\t\t0x1\t\t\"kmap_atomic\"\n\t2\t\t0xd\t\t\"xfer_funcs\"\n\t3\t\t0x18\t\t\"find_fr...\"\n\nSigned-off-by: Satoru Takeuchi \u003ctakeuchi_satoru@jp.fujitsu.com\u003e\nCc: Masaki Kimura \u003cmasaki.kimura.kz@hitachi.com\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "2e72d51b4ac32989496870cd8171b3682fea1839",
      "tree": "b8190d17aa5d59508f8c979ce0160f21bef89500",
      "parents": [
        "2f3238aebedb243804f58d62d57244edec4149b2"
      ],
      "author": {
        "name": "Kees Cook",
        "email": "keescook@chromium.org",
        "time": "Tue Oct 16 07:32:07 2012 +1030"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Dec 14 13:05:24 2012 +1030"
      },
      "message": "security: introduce kernel_module_from_file hook\n\nNow that kernel module origins can be reasoned about, provide a hook to\nthe LSMs to make policy decisions about the module file. This will let\nChrome OS enforce that loadable kernel modules can only come from its\nread-only hash-verified root filesystem. Other LSMs can, for example,\nread extended attributes for signatures, etc.\n\nSigned-off-by: Kees Cook \u003ckeescook@chromium.org\u003e\nAcked-by: Serge E. Hallyn \u003cserge.hallyn@canonical.com\u003e\nAcked-by: Eric Paris \u003ceparis@redhat.com\u003e\nAcked-by: Mimi Zohar \u003czohar@us.ibm.com\u003e\nAcked-by: James Morris \u003cjames.l.morris@oracle.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "2f3238aebedb243804f58d62d57244edec4149b2",
      "tree": "984f7f4a6b2225649120c55a7b89e65e9de55ee2",
      "parents": [
        "34e1169d996ab148490c01b65b4ee371cf8ffba2"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Oct 22 18:09:41 2012 +1030"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Dec 14 13:05:23 2012 +1030"
      },
      "message": "module: add flags arg to sys_finit_module()\n\nThanks to Michael Kerrisk for keeping us honest.  These flags are actually\nuseful for eliminating the only case where kmod has to mangle a module\u0027s\ninternals: for overriding module versioning.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nAcked-by: Lucas De Marchi \u003clucas.demarchi@profusion.mobi\u003e\nAcked-by: Kees Cook \u003ckeescook@chromium.org\u003e\n"
    },
    {
      "commit": "34e1169d996ab148490c01b65b4ee371cf8ffba2",
      "tree": "3380af46682ce4396c1524bdba8badcab8a51046",
      "parents": [
        "84ecfd15f5547c992c901df6ec14b4d507eb2c6e"
      ],
      "author": {
        "name": "Kees Cook",
        "email": "keescook@chromium.org",
        "time": "Tue Oct 16 07:31:07 2012 +1030"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Dec 14 13:05:22 2012 +1030"
      },
      "message": "module: add syscall to load module from fd\n\nAs part of the effort to create a stronger boundary between root and\nkernel, Chrome OS wants to be able to enforce that kernel modules are\nbeing loaded only from our read-only crypto-hash verified (dm_verity)\nroot filesystem. Since the init_module syscall hands the kernel a module\nas a memory blob, no reasoning about the origin of the blob can be made.\n\nEarlier proposals for appending signatures to kernel modules would not be\nuseful in Chrome OS, since it would involve adding an additional set of\nkeys to our kernel and builds for no good reason: we already trust the\ncontents of our root filesystem. We don\u0027t need to verify those kernel\nmodules a second time. Having to do signature checking on module loading\nwould slow us down and be redundant. All we need to know is where a\nmodule is coming from so we can say yes/no to loading it.\n\nIf a file descriptor is used as the source of a kernel module, many more\nthings can be reasoned about. In Chrome OS\u0027s case, we could enforce that\nthe module lives on the filesystem we expect it to live on.  In the case\nof IMA (or other LSMs), it would be possible, for example, to examine\nextended attributes that may contain signatures over the contents of\nthe module.\n\nThis introduces a new syscall (on x86), similar to init_module, that has\nonly two arguments. The first argument is used as a file descriptor to\nthe module and the second argument is a pointer to the NULL terminated\nstring of module arguments.\n\nSigned-off-by: Kees Cook \u003ckeescook@chromium.org\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e (merge fixes)\n"
    },
    {
      "commit": "59ef28b1f14899b10d6b2682c7057ca00a9a3f47",
      "tree": "68ad548001fb24c0e63e1758d368a746998feb05",
      "parents": [
        "bc909421a9c7083fcde795846d22b36a51a7be54"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Oct 25 10:49:25 2012 +1030"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Wed Oct 31 13:56:37 2012 +1030"
      },
      "message": "module: fix out-by-one error in kallsyms\n\nMasaki found and patched a kallsyms issue: the last symbol in a\nmodule\u0027s symtab wasn\u0027t transferred.  This is because we manually copy\nthe zero\u0027th entry (which is always empty) then copy the rest in a loop\nstarting at 1, though from src[0].  His fix was minimal, I prefer to\nrewrite the loops in more standard form.\n\nThere are two loops: one to get the size, and one to copy.  Make these\nidentical: always count entry 0 and any defined symbol in an allocated\nnon-init section.\n\nThis bug exists since the following commit was introduced.\n   module: reduce symbol table for loaded modules (v2)\n   commit: 4a4962263f07d14660849ec134ee42b63e95ea9a\n\nLKML: http://lkml.org/lkml/2012/10/24/27\nReported-by: Masaki Kimura \u003cmasaki.kimura.kz@hitachi.com\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "caabe240574aec05b2f5667414ce80f9075c2ba1",
      "tree": "d92bf96b009bd0b0caec44c21348812b06805909",
      "parents": [
        "b6bb324dbddd704b4b9a85971e1f7ae79abb2e1d"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Sat Oct 20 01:19:29 2012 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 19 17:30:40 2012 -0700"
      },
      "message": "MODSIGN: Move the magic string to the end of a module and eliminate the search\n\nEmit the magic string that indicates a module has a signature after the\nsignature data instead of before it.  This allows module_sig_check() to\nbe made simpler and faster by the elimination of the search for the\nmagic string.  Instead we just need to do a single memcmp().\n\nThis works because at the end of the signature data there is the\nfixed-length signature information block.  This block then falls\nimmediately prior to the magic number.\n\nFrom the contents of the information block, it is trivial to calculate\nthe size of the signature data and thus the size of the actual module\ndata.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1d0059f3a468825b5fc5405c636a2f6e02707ffa",
      "tree": "0eef1243a093410f39564051d8904c8041e1e717",
      "parents": [
        "106a4ee258d14818467829bf0e12aeae14c16cd7"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Wed Sep 26 10:09:50 2012 +0100"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Wed Oct 10 20:01:19 2012 +1030"
      },
      "message": "MODSIGN: Add FIPS policy\n\nIf we\u0027re in FIPS mode, we should panic if we fail to verify the signature on a\nmodule or we\u0027re asked to load an unsigned module in signature enforcing mode.\nPossibly FIPS mode should automatically enable enforcing mode.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "106a4ee258d14818467829bf0e12aeae14c16cd7",
      "tree": "4a5d002eceff4a028ebc8d88223b1ed735bee224",
      "parents": [
        "c26fd69fa00916a31a47f5f096fd7be924106df8"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Wed Sep 26 10:09:40 2012 +0100"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Wed Oct 10 20:00:55 2012 +1030"
      },
      "message": "module: signature checking hook\n\nWe do a very simple search for a particular string appended to the module\n(which is cache-hot and about to be SHA\u0027d anyway).  There\u0027s both a config\noption and a boot parameter which control whether we accept or fail with\nunsigned modules and modules that are signed with an unknown key.\n\nIf module signing is enabled, the kernel will be tainted if a module is\nloaded that is unsigned or has a signature for which we don\u0027t have the\nkey.\n\n(Useful feedback and tweaks by David Howells \u003cdhowells@redhat.com\u003e)\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "9bb9c3be56834653878f766f471fa1c20e562f4c",
      "tree": "5b84043b800db520f551c86f10418e2e2a852cf0",
      "parents": [
        "6f13909f4fe9652f189b462c6c98767309000321"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Sep 28 14:31:03 2012 +0930"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Sep 28 14:31:03 2012 +0930"
      },
      "message": "module: wait when loading a module which is currently initializing.\n\nThe original module-init-tools module loader used a fnctl lock on the\n.ko file to avoid attempts to simultaneously load a module.\nUnfortunately, you can\u0027t get an exclusive fcntl lock on a read-only\nfd, making this not work for read-only mounted filesystems.\nmodule-init-tools has a hacky sleep-and-loop for this now.\n\nIt\u0027s not that hard to wait in the kernel, and only return -EEXIST once\nthe first module has finished loading (or continue loading the module\nif the first one failed to initialize for some reason).  It\u0027s also\nconsistent with what we do for dependent modules which are still loading.\n\nSuggested-by: Lucas De Marchi \u003clucas.demarchi@profusion.mobi\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "6f13909f4fe9652f189b462c6c98767309000321",
      "tree": "0b56b6817caea8d81c46bbbfe575cd4729ca4a23",
      "parents": [
        "786d35d45cc40b2a51a18f73e14e135d47fdced7"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Sep 28 14:31:03 2012 +0930"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Sep 28 14:31:03 2012 +0930"
      },
      "message": "module: fix symbol waiting when module fails before init\n\nWe use resolve_symbol_wait(), which blocks if the module containing\nthe symbol is still loading.  However:\n\n1) The module_wq we use is only woken after calling the modules\u0027 init\n   function, but there are other failure paths after the module is\n   placed in the linked list where we need to do the same thing.\n\n2) wake_up() only wakes one waiter, and our waitqueue is shared by all\n   modules, so we need to wake them all.\n\n3) wake_up_all() doesn\u0027t imply a memory barrier: I feel happier calling\n   it after we\u0027ve grabbed and dropped the module_mutex, not just after\n   the state assignment.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "786d35d45cc40b2a51a18f73e14e135d47fdced7",
      "tree": "df18f4dc3f8a333267e74089760043769b3b6184",
      "parents": [
        "6ede81239e31cfacbb1e2d260530cd80d13cf0db"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Sep 28 14:31:03 2012 +0930"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Sep 28 14:31:03 2012 +0930"
      },
      "message": "Make most arch asm/module.h files use asm-generic/module.h\n\nUse the mapping of Elf_[SPE]hdr, Elf_Addr, Elf_Sym, Elf_Dyn, Elf_Rel/Rela,\nELF_R_TYPE() and ELF_R_SYM() to either the 32-bit version or the 64-bit version\ninto asm-generic/module.h for all arches bar MIPS.\n\nAlso, use the generic definition mod_arch_specific where possible.\n\nTo this end, I\u0027ve defined three new config bools:\n\n (*) HAVE_MOD_ARCH_SPECIFIC\n\n     Arches define this if they don\u0027t want to use the empty generic\n     mod_arch_specific struct.\n\n (*) MODULES_USE_ELF_RELA\n\n     Arches define this if their modules can contain RELA records.  This causes\n     the Elf_Rela mapping to be emitted and allows apply_relocate_add() to be\n     defined by the arch rather than have the core emit an error message.\n\n (*) MODULES_USE_ELF_REL\n\n     Arches define this if their modules can contain REL records.  This causes\n     the Elf_Rel mapping to be emitted and allows apply_relocate() to be\n     defined by the arch rather than have the core emit an error message.\n\nNote that it is possible to allow both REL and RELA records: m68k and mips are\ntwo arches that do this.\n\nWith this, some arch asm/module.h files can be deleted entirely and replaced\nwith a generic-y marker in the arch Kbuild file.\n\nAdditionally, I have removed the bits from m32r and score that handle the\nunsupported type of relocation record as that\u0027s now handled centrally.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: Sam Ravnborg \u003csam@ravnborg.org\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "c99af3752bb52ba3aece5315279a57a477edfaf1",
      "tree": "cdffe63ffeba4c68065b19668d880bde63744ccc",
      "parents": [
        "925a6f0bf8bd122d5d2429af7f0ca0fecf4ae71f"
      ],
      "author": {
        "name": "Matthew Garrett",
        "email": "mjg59@srcf.ucam.org",
        "time": "Fri Jun 22 13:49:31 2012 -0400"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Sep 28 14:31:02 2012 +0930"
      },
      "message": "module: taint kernel when lve module is loaded\n\nCloudlinux have a product called lve that includes a kernel module. This\nwas previously GPLed but is now under a proprietary license, but the\nmodule continues to declare MODULE_LICENSE(\"GPL\") and makes use of some\nEXPORT_SYMBOL_GPL symbols. Forcibly taint it in order to avoid this.\n\nSigned-off-by: Matthew Garrett \u003cmjg59@srcf.ucam.org\u003e\nCc: Alex Lyashkov \u003cumka@cloudlinux.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "ef26a5a6eadb7cd0637e1e9e246cd42505b8ec8c",
      "tree": "94f8b1998d94080a842f94529f0d95cfe1bcc53a",
      "parents": [
        "3c7ec94d2c4a67d9663a080aa5080134308261c4"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Tue May 22 15:56:13 2012 +0100"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Wed May 23 22:28:53 2012 +0930"
      },
      "message": "Guard check in module loader against integer overflow\n\nThe check:\n\n\tif (len \u003c hdr-\u003ee_shoff + hdr-\u003ee_shnum * sizeof(Elf_Shdr))\n\nmay not work if there\u0027s an overflow in the right-hand side of the condition.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "b48420c1d3019ce8d84fb8e58f4ca86b8e3655b8",
      "tree": "feeeb1008ff2433bba3107c3584ec8b4a403cec5",
      "parents": [
        "9fb48c744ba6a4bf58b666f4e6fdac3008ea1bd4"
      ],
      "author": {
        "name": "Jim Cromie",
        "email": "jim.cromie@gmail.com",
        "time": "Fri Apr 27 14:30:35 2012 -0600"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Apr 30 14:31:46 2012 -0400"
      },
      "message": "dynamic_debug: make dynamic-debug work for module initialization\n\nThis introduces a fake module param $module.dyndbg.  Its based upon\nThomas Renninger\u0027s $module.ddebug boot-time debugging patch from\nhttps://lkml.org/lkml/2010/9/15/397\n\nThe \u0027fake\u0027 module parameter is provided for all modules, whether or\nnot they need it.  It is not explicitly added to each module, but is\nimplemented in callbacks invoked from parse_args.\n\nFor builtin modules, dynamic_debug_init() now directly calls\nparse_args(..., \u0026ddebug_dyndbg_boot_params_cb), to process the params\nundeclared in the modules, just after the ddebug tables are processed.\n\nWhile its slightly weird to reprocess the boot params, parse_args() is\nalready called repeatedly by do_initcall_levels().  More importantly,\nthe dyndbg queries (given in ddebug_query or dyndbg params) cannot be\nactivated until after the ddebug tables are ready, and reusing\nparse_args is cleaner than doing an ad-hoc parse.  This reparse would\nbreak options like inc_verbosity, but they probably should be params,\nlike verbosity\u003d3.\n\nddebug_dyndbg_boot_params_cb() handles both bare dyndbg (aka:\nddebug_query) and module-prefixed dyndbg params, and ignores all other\nparameters.  For example, the following will enable pr_debug()s in 4\nbuiltin modules, in the order given:\n\n  dyndbg\u003d\"module params +p; module aio +p\" module.dyndbg\u003d+p pci.dyndbg\n\nFor loadable modules, parse_args() in load_module() calls\nddebug_dyndbg_module_params_cb().  This handles bare dyndbg params as\npassed from modprobe, and errors on other unknown params.\n\nNote that modprobe reads /proc/cmdline, so \"modprobe foo\" grabs all\nfoo.params, strips the \"foo.\", and passes these to the kernel.\nddebug_dyndbg_module_params_cb() is again called for the unknown\nparams; it handles dyndbg, and errors on others.  The \"doing\" arg\nadded previously contains the module name.\n\nFor non CONFIG_DYNAMIC_DEBUG builds, the stub function accepts\nand ignores $module.dyndbg params, other unknowns get -ENOENT.\n\nIf no param value is given (as in pci.dyndbg example above), \"+p\" is\nassumed, which enables all pr_debug callsites in the module.\n\nThe dyndbg fake parameter is not shown in /sys/module/*/parameters,\nthus it does not use any resources.  Changes to it are made via the\ncontrol file.\n\nAlso change pr_info in ddebug_exec_queries to vpr_info,\nno need to see it all the time.\n\nSigned-off-by: Jim Cromie \u003cjim.cromie@gmail.com\u003e\nCC: Thomas Renninger \u003ctrenn@suse.de\u003e\nCC: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nAcked-by: Jason Baron \u003cjbaron@redhat.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "f946eeb9313ff1470758e171a60fe7438a2ded3f",
      "tree": "9daeca7f4230ca680765078a0b32c98df409934d",
      "parents": [
        "d53799be6758841e1ffb1fd3780f73d0ffe44432"
      ],
      "author": {
        "name": "Sasha Levin",
        "email": "levinsasha928@gmail.com",
        "time": "Mon Jan 30 23:07:22 2012 -0500"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Mar 26 12:50:53 2012 +1030"
      },
      "message": "module: Remove module size limit\n\nModule size was limited to 64MB, this was legacy limitation due to vmalloc()\nwhich was removed a while ago.\n\nLimiting module size to 64MB is both pointless and affects real world use\ncases.\n\nCc: Tim Abbott \u003ctim.abbott@oracle.com\u003e\nCc: stable@vger.kernel.org\nSigned-off-by: Sasha Levin \u003csasha.levin@oracle.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "d53799be6758841e1ffb1fd3780f73d0ffe44432",
      "tree": "aad25045e0bcfe4b4e612d09a0c3abe3beb7e761",
      "parents": [
        "026cee0086fe1df4cf74691cf273062cc769617d"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Mon Mar 26 12:50:52 2012 +1030"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Mar 26 12:50:52 2012 +1030"
      },
      "message": "module: move __module_get and try_module_get() out of line.\n\nWith the preempt, tracepoint and everything, it\u0027s getting a bit\nchubby.  For an Ubuntu-based config:\n\nBefore:\n\t$ size -t `find * -name \u0027*.ko\u0027` | grep TOTAL\n\t56199906        3870760\t1606616\t61677282\t3ad1ee2\t(TOTALS)\n\t$ size vmlinux\n\t   text\t   data\t    bss\t    dec\t    hex\tfilename\n\t8509342\t 850368\t3358720\t12718430\t c2115e\tvmlinux\n\nAfter:\n\t$ size -t `find * -name \u0027*.ko\u0027` | grep TOTAL\n\t56183760\t3867892\t1606616\t61658268\t3acd49c\t(TOTALS)\n\t$ size vmlinux\n\t   text\t   data\t    bss\t    dec\t    hex\tfilename\n\t8501842\t 849088\t3358720\t12709650\t c1ef12\tvmlinux\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e (made all out-of-line)\n"
    },
    {
      "commit": "026cee0086fe1df4cf74691cf273062cc769617d",
      "tree": "22735ecd2132de4570fbad81e5716f7fee3448d5",
      "parents": [
        "8b8252813dee8e8cd453bb219731c36b268c69a7"
      ],
      "author": {
        "name": "Pawel Moll",
        "email": "pawel.moll@arm.com",
        "time": "Mon Mar 26 12:50:51 2012 +1030"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Mar 26 12:50:51 2012 +1030"
      },
      "message": "params: \u003clevel\u003e_initcall-like kernel parameters\n\nThis patch adds a set of macros that can be used to declare\nkernel parameters to be parsed _before_ initcalls at a chosen\nlevel are executed.  We rename the now-unused \"flags\" field of\nstruct kernel_param as the level.  It\u0027s signed, for when we\nuse this for early params as well, in future.\n\nLinker macro collating init calls had to be modified in order\nto add additional symbols between levels that are later used\nby the init code to split the calls into blocks.\n\nSigned-off-by: Pawel Moll \u003cpawel.moll@arm.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "02608bef8f774c058779546926889a2f2717a499",
      "tree": "fdbdd5918c0d9a9f142c6c88535a2b18f13ce02c",
      "parents": [
        "e22057c8599373e5caef0bc42bdb95d2a361ab0d"
      ],
      "author": {
        "name": "Dave Young",
        "email": "dyoung@redhat.com",
        "time": "Wed Feb 01 10:33:14 2012 +0800"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Mar 26 12:50:50 2012 +1030"
      },
      "message": "module: add kernel param to force disable module load\n\nSometimes we need to test a kernel of same version with code or config\noption changes.\n\nWe already have sysctl to disable module load, but add a kernel\nparameter will be more convenient.\n\nSince modules_disabled is int, so here use bint type in core_param.\nTODO: make sysctl accept bool and change modules_disabled to bool\n\nSigned-off-by: Dave Young \u003cdyoung@redhat.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "53999bf34d55981328f8ba9def558d3e104d6e36",
      "tree": "4ca98169e5c96c1ec8e04d15fce75c60a8b9578d",
      "parents": [
        "122804ecb59493fbb4d31b3ba9ac59faaf45276f"
      ],
      "author": {
        "name": "Kevin Winchester",
        "email": "kjwinchester@gmail.com",
        "time": "Sun Jan 15 19:32:55 2012 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jan 15 16:21:07 2012 -0800"
      },
      "message": "error: implicit declaration of function \u0027module_flags_taint\u0027\n\nRecent changes to kernel/module.c caused the following compile\nerror:\n\n  kernel/module.c: In function ‘show_taint’:\n  kernel/module.c:1024:2: error: implicit declaration of function ‘module_flags_taint’ [-Werror\u003dimplicit-function-declaration]\n  cc1: some warnings being treated as errors\n\nCorrect this error by moving the definition of module_flags_taint\noutside of the #ifdef CONFIG_MODULE_UNLOAD section.\n\nSigned-off-by: Kevin Winchester \u003ckjwinchester@gmail.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "cca3e707301862ca9b9327e6a732463982f8cd1b",
      "tree": "5cc4767c5167e430209bcea7e43400a9f2e471ab",
      "parents": [
        "8487bfd954928660a52e91384a9b1f1049217e35"
      ],
      "author": {
        "name": "Kay Sievers",
        "email": "kay.sievers@vrfy.org",
        "time": "Fri Jan 13 09:32:15 2012 +1030"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jan 13 09:32:15 2012 +1030"
      },
      "message": "modules: sysfs - export: taint, coresize, initsize\n\nRecent tools do not want to use /proc to retrieve module information. A few\nvalues are currently missing from sysfs to replace the information available\nin /proc/modules.\n\nThis adds /sys/module/*/{coresize,initsize,taint} attributes.\n\nTAINT_PROPRIETARY_MODULE (P) and TAINT_OOT_MODULE (O) flags are both always\nshown now, and do no longer exclude each other, also in /proc/modules.\n\nReplace the open-coded sysfs attribute initializers with the __ATTR() macro.\n\nAdd the new attributes to Documentation/ABI.\n\nCc: Lucas De Marchi \u003clucas.demarchi@profusion.mobi\u003e\nSigned-off-by: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "5e12416927975aa3c58394cea15db6c3e488a033",
      "tree": "267635bb138364dcb8f30de00c2d5f21dc5bcf63",
      "parents": [
        "bd77c04772da38fca510c81f78e51f727123b919"
      ],
      "author": {
        "name": "Jim Cromie",
        "email": "jim.cromie@gmail.com",
        "time": "Tue Dec 06 12:11:31 2011 -0700"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jan 13 09:32:15 2012 +1030"
      },
      "message": "module: replace DEBUGP with pr_debug\n\nUse more flexible pr_debug.  This allows:\n\n  echo \"module module +p\" \u003e /dbg/dynamic_debug/control\n\nto turn on debug messages when needed.\n\nSigned-off-by: Jim Cromie \u003cjim.cromie@gmail.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "bd77c04772da38fca510c81f78e51f727123b919",
      "tree": "8554b40191d3d5adebbd2461d26450c0ed7295d4",
      "parents": [
        "48fd11880b5ef04270be8a87d9a9a9ee2fdae338"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Fri Jan 13 09:32:14 2012 +1030"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jan 13 09:32:14 2012 +1030"
      },
      "message": "module: struct module_ref should contains long fields\n\nmodule_ref contains two \"unsigned int\" fields.\n\nThats now too small, since some machines can open more than 2^32 files.\n\nCheck commit 518de9b39e8 (fs: allow for more than 2^31 files) for\nreference.\n\nWe can add an aligned(2 * sizeof(unsigned long)) attribute to force\nalloc_percpu() allocating module_ref areas in single cache lines.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nCC: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCC: Tejun Heo \u003ctj@kernel.org\u003e\nCC: Robin Holt \u003cholt@sgi.com\u003e\nCC: David Miller \u003cdavem@davemloft.net\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "48fd11880b5ef04270be8a87d9a9a9ee2fdae338",
      "tree": "1dc62486665f1d28e74a0e12fec5f01beb233313",
      "parents": [
        "70b1e9161e903a9e1682aca3a832ed29ef876a4d"
      ],
      "author": {
        "name": "Kevin Cernekee",
        "email": "cernekee@gmail.com",
        "time": "Fri Jan 13 09:32:14 2012 +1030"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jan 13 09:32:14 2012 +1030"
      },
      "message": "module: Fix performance regression on modules with large symbol tables\n\nLooking at /proc/kallsyms, one starts to ponder whether all of the extra\nstrtab-related complexity in module.c is worth the memory savings.\n\nInstead of making the add_kallsyms() loop even more complex, I tried the\nother route of deleting the strmap logic and naively copying each string\ninto core_strtab with no consideration for consolidating duplicates.\n\nPerformance on an \"already exists\" insmod of nvidia.ko (runs\nadd_kallsyms() but does not actually initialize the module):\n\n\tOriginal scheme: 1.230s\n\tWith naive copying: 0.058s\n\nExtra space used: 35k (of a 408k module).\n\nSigned-off-by: Kevin Cernekee \u003ccernekee@gmail.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nLKML-Reference: \u003c73defb5e4bca04a6431392cc341112b1@localhost\u003e\n"
    },
    {
      "commit": "70b1e9161e903a9e1682aca3a832ed29ef876a4d",
      "tree": "5b391043858bf70d5541b036504c80c5577be8fc",
      "parents": [
        "2485a4b610171f4e1c4ab0d053569747795c1bbe"
      ],
      "author": {
        "name": "Kevin Cernekee",
        "email": "cernekee@gmail.com",
        "time": "Sat Nov 12 19:08:55 2011 -0800"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jan 13 09:32:13 2012 +1030"
      },
      "message": "module: Add comments describing how the \"strmap\" logic works\n\nSigned-off-by: Kevin Cernekee \u003ccernekee@gmail.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "32aaeffbd4a7457bf2f7448b33b5946ff2a960eb",
      "tree": "faf7ad871d87176423ff9ed1d1ba4d9c688fc23f",
      "parents": [
        "208bca0860406d16398145ddd950036a737c3c9d",
        "67b84999b1a8b1af5625b1eabe92146c5eb42932"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Nov 06 19:44:47 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Nov 06 19:44:47 2011 -0800"
      },
      "message": "Merge branch \u0027modsplit-Oct31_2011\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux\n\n* \u0027modsplit-Oct31_2011\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux: (230 commits)\n  Revert \"tracing: Include module.h in define_trace.h\"\n  irq: don\u0027t put module.h into irq.h for tracking irqgen modules.\n  bluetooth: macroize two small inlines to avoid module.h\n  ip_vs.h: fix implicit use of module_get/module_put from module.h\n  nf_conntrack.h: fix up fallout from implicit moduleparam.h presence\n  include: replace linux/module.h with \"struct module\" wherever possible\n  include: convert various register fcns to macros to avoid include chaining\n  crypto.h: remove unused crypto_tfm_alg_modname() inline\n  uwb.h: fix implicit use of asm/page.h for PAGE_SIZE\n  pm_runtime.h: explicitly requires notifier.h\n  linux/dmaengine.h: fix implicit use of bitmap.h and asm/page.h\n  miscdevice.h: fix up implicit use of lists and types\n  stop_machine.h: fix implicit use of smp.h for smp_processor_id\n  of: fix implicit use of errno.h in include/linux/of.h\n  of_platform.h: delete needless include \u003clinux/module.h\u003e\n  acpi: remove module.h include from platform/aclinux.h\n  miscdevice.h: delete unnecessary inclusion of module.h\n  device_cgroup.h: delete needless include \u003clinux/module.h\u003e\n  net: sch_generic remove redundant use of \u003clinux/module.h\u003e\n  net: inet_timewait_sock doesnt need \u003clinux/module.h\u003e\n  ...\n\nFix up trivial conflicts (other header files, and  removal of the ab3550 mfd driver) in\n - drivers/media/dvb/frontends/dibx000_common.c\n - drivers/media/video/{mt9m111.c,ov6650.c}\n - drivers/mfd/ab3550-core.c\n - include/linux/dmaengine.h\n"
    },
    {
      "commit": "2449b8ba0745327c5fa49a8d9acffe03b2eded69",
      "tree": "48e11288635dcfc8cdb342f3ba00fa2a2a650aa8",
      "parents": [
        "1cd0d6c3021c8d76641b37203f504634b87fbabc"
      ],
      "author": {
        "name": "Ben Hutchings",
        "email": "ben@decadent.org.uk",
        "time": "Mon Oct 24 15:12:28 2011 +0200"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Nov 07 07:54:42 2011 +1030"
      },
      "message": "module,bug: Add TAINT_OOT_MODULE flag for modules not built in-tree\n\nUse of the GPL or a compatible licence doesn\u0027t necessarily make the code\nany good.  We already consider staging modules to be suspect, and this\nshould also be true for out-of-tree modules which may receive very\nlittle review.\n\nSigned-off-by: Ben Hutchings \u003cben@decadent.org.uk\u003e\nReviewed-by: Dave Jones \u003cdavej@redhat.com\u003e\nAcked-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e (patched oops-tracing.txt)\n"
    },
    {
      "commit": "1cd0d6c3021c8d76641b37203f504634b87fbabc",
      "tree": "e58051cdb845375c13c22bfa38db0b6fc2c71977",
      "parents": [
        "43672a0784707d795556b1f93925da8b8e797d03"
      ],
      "author": {
        "name": "Ben Hutchings",
        "email": "ben@decadent.org.uk",
        "time": "Tue Nov 01 03:59:33 2011 +0000"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Nov 07 07:54:40 2011 +1030"
      },
      "message": "module: Enable dynamic debugging regardless of taint\n\nDynamic debugging is currently disabled for tainted modules, except\nfor TAINT_CRAP.  This prevents use of dynamic debugging for\nout-of-tree modules once the next patch is applied.\n\nThis condition was apparently intended to avoid a crash if a force-\nloaded module has an incompatible definition of dynamic debug\nstructures.  However, a administrator that forces us to load a module\nis claiming that it *is* compatible even though it fails our version\nchecks.  If they are mistaken, there are any number of ways the module\ncould crash the system.\n\nAs a side-effect, proprietary and other tainted modules can now use\ndynamic_debug.\n\nSigned-off-by: Ben Hutchings \u003cben@decadent.org.uk\u003e\nAcked-by: Mathieu Desnoyers \u003cmathieu.desnoyers@efficios.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "9984de1a5a8a96275fcab818f7419af5a3c86e71",
      "tree": "1935d411752707a1621c5caf64f75dfe105beb3a",
      "parents": [
        "7c77509c542927ee2a3c8812fad84957e51bf67d"
      ],
      "author": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Mon May 23 14:51:41 2011 -0400"
      },
      "committer": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Mon Oct 31 09:20:12 2011 -0400"
      },
      "message": "kernel: Map most files to use export.h instead of module.h\n\nThe changed files were only including linux/module.h for the\nEXPORT_SYMBOL infrastructure, and nothing else.  Revector them\nonto the isolated export header for faster compile times.\n\nNothing to see here but a whole lot of instances of:\n\n  -#include \u003clinux/module.h\u003e\n  +#include \u003clinux/export.h\u003e\n\nThis commit is only changing the kernel dir; next targets\nwill probably be mm, fs, the arch dirs, etc.\n\nSigned-off-by: Paul Gortmaker \u003cpaul.gortmaker@windriver.com\u003e\n"
    },
    {
      "commit": "b75ef8b44b1cb95f5a26484b0e2fe37a63b12b44",
      "tree": "a43affc92aaf9beea17ce8d977d8e7a7fed81c5c",
      "parents": [
        "3a301d7c1c68fd96bbcf82db82d9508918e0dc22"
      ],
      "author": {
        "name": "Mathieu Desnoyers",
        "email": "mathieu.desnoyers@efficios.com",
        "time": "Wed Aug 10 15:18:39 2011 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed Aug 10 20:38:14 2011 -0400"
      },
      "message": "Tracepoint: Dissociate from module mutex\n\nCopy the information needed from struct module into a local module list\nheld within tracepoint.c from within the module coming/going notifier.\n\nThis vastly simplifies locking of tracepoint registration /\nunregistration, because we don\u0027t have to take the module mutex to\nregister and unregister tracepoints anymore. Steven Rostedt ran into\ndependency problems related to modules mutex vs kprobes mutex vs ftrace\nmutex vs tracepoint mutex that seems to be hard to fix without removing\nthis dependency between tracepoint and module mutex. (note: it should be\ninvestigated whether kprobes could benefit of being dissociated from the\nmodules mutex too.)\n\nThis also fixes module handling of tracepoint list iterators, because it\nwas expecting the list to be sorted by pointer address. Given we have\ncontrol on our own list now, it\u0027s OK to sort this list which has\ntracepoints as its only purpose. The reason why this sorting is required\nis to handle the fact that seq files (and any read() operation from\nuser-space) cannot hold the tracepoint mutex across multiple calls, so\nlist entries may vanish between calls. With sorting, the tracepoint\niterator becomes usable even if the list don\u0027t contain the exact item\npointed to by the iterator anymore.\n\nSigned-off-by: Mathieu Desnoyers \u003cmathieu.desnoyers@efficios.com\u003e\nAcked-by: Jason Baron \u003cjbaron@redhat.com\u003e\nCC: Ingo Molnar \u003cmingo@elte.hu\u003e\nCC: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nCC: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCC: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCC: Masami Hiramatsu \u003cmasami.hiramatsu.pt@hitachi.com\u003e\nLink: http://lkml.kernel.org/r/20110810191839.GC8525@Krystal\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "88bfa3247961fe5f3623f4d2cf1cd5dc72457598",
      "tree": "d3ce6a00501ed34655918815623642698eece9ca",
      "parents": [
        "4befb026cf74b52fc7d382142bbfc0e9b6aab5e7"
      ],
      "author": {
        "name": "Kay Sievers",
        "email": "kay.sievers@vrfy.org",
        "time": "Sun Jul 24 22:06:04 2011 +0930"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Sun Jul 24 22:06:04 2011 +0930"
      },
      "message": "module: add /sys/module/\u003cname\u003e/uevent files\n\nUserspace wants to manage module parameters with udev rules.\nThis currently only works for loaded modules, but not for\nbuilt-in ones.\n\nTo allow access to the built-in modules we need to\nre-trigger all module load events that happened before any\nuserspace was running. We already do the same thing for all\ndevices, subsystems(buses) and drivers.\n\nThis adds the currently missing /sys/module/\u003cname\u003e/uevent files\nto all module entries.\n\nSigned-off-by: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e (split \u0026 trivial fix)\n"
    },
    {
      "commit": "4befb026cf74b52fc7d382142bbfc0e9b6aab5e7",
      "tree": "48c4954f8eb9ab43f449750c3f4b0685fd323c03",
      "parents": [
        "66574cc05438dd0907029075d7e6ec5ac0036fbc"
      ],
      "author": {
        "name": "Kay Sievers",
        "email": "kay.sievers@vrfy.org",
        "time": "Sun Jul 24 22:06:04 2011 +0930"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Sun Jul 24 22:06:04 2011 +0930"
      },
      "message": "module: change attr callbacks to take struct module_kobject\n\nThis simplifies the next patch, where we have an attribute on a\nbuiltin module (ie. module \u003d\u003d NULL).\n\nSigned-off-by: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e (split into 2)\n"
    },
    {
      "commit": "74e08fcf7bef973512a1f813700f802a93678670",
      "tree": "467868e281ee7768c0124009340c0a5a1850de98",
      "parents": [
        "81c7413650fbbf881bcb9e567be61a6717eb1876"
      ],
      "author": {
        "name": "Jonas Bonn",
        "email": "jonas@southpole.se",
        "time": "Thu Jun 30 21:22:11 2011 +0200"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Sun Jul 24 22:06:04 2011 +0930"
      },
      "message": "modules: add default loader hook implementations\n\nThe module loader code allows architectures to hook into the code by\nproviding a small number of entry points that each arch must implement.\nThis patch provides __weakly linked generic implementations of these\nentry points for architectures that don\u0027t need to do anything special.\n\nSigned-off-by: Jonas Bonn \u003cjonas@southpole.se\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "1f3a8e093f470ef193b0ca6011d90180331c8b53",
      "tree": "66b7a58decabdc7f76ffb102899881c258c1df59",
      "parents": [
        "c44dead70a841d90ddc01968012f323c33217c9e",
        "1a4b6f66285785ddccef049e6b45be4e7c7a2189"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon May 23 12:49:28 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon May 23 12:49:28 2011 -0700"
      },
      "message": "Merge branch \u0027staging-next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging-2.6\n\n* \u0027staging-next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging-2.6: (970 commits)\n  staging: usbip: replace usbip_u{dbg,err,info} and printk with dev_ and pr_\n  staging:iio: Trivial kconfig reorganization and uniformity improvements.\n  staging:iio:documenation partial update.\n  staging:iio: use pollfunc allocation helpers in remaining drivers.\n  staging:iio:max1363 misc cleanups and use of for_each_bit_set to simplify event code spitting out.\n  staging:iio: implement an iio_info structure to take some of the constant elements out of iio_dev.\n  staging:iio:meter:ade7758: Use private data space from iio_allocate_device\n  staging:iio:accel:lis3l02dq make write_reg_8 take value not a pointer to value.\n  staging:iio: ring core cleanups + check if read_last available in lis3l02dq\n  staging:iio:core cleanup: squash tiny wrappers and use dev_set_name to handle creation of event interface name.\n  staging:iio: poll func allocation clean up.\n  staging:iio:ad7780 trivial unused header cleanup.\n  staging:iio:adc: AD7780: Use private data space from iio_allocate_device + trivial fixes\n  staging:iio:adc:AD7780: Convert to new channel registration method\n  staging:iio:adc: AD7606: Drop dev_data in favour of iio_priv()\n  staging:iio:adc: AD7606: Consitently use indio_dev\n  staging:iio: Rip out helper for software rings.\n  staging:iio:adc:AD7298: Use private data space from iio_allocate_device\n  staging:iio: rationalization of different buffer implementation hooks.\n  staging:iio:imu:adis16400 avoid allocating rx, tx, and state separately from iio_dev.\n  ...\n\nFix up trivial conflicts in\n - drivers/staging/intel_sst/intelmid.c: patches applied in both branches\n - drivers/staging/rt2860/common/cmm_data_{pci,usb}.c: removed vs spelling\n - drivers/staging/usbip/vhci_sysfs.c: trivial header file inclusion\n"
    },
    {
      "commit": "9d63487f86115b1d3ef69670043bcf2b83c4d227",
      "tree": "3833a5f467f0958eaeab9f86f207dca60868bb0d",
      "parents": [
        "403ed27846aa126ecf0b842b5b179c506b9d989c"
      ],
      "author": {
        "name": "Alessio Igor Bogani",
        "email": "abogani@kernel.org",
        "time": "Wed May 18 22:35:59 2011 +0200"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu May 19 16:55:27 2011 +0930"
      },
      "message": "module: Use binary search in lookup_symbol()\n\nThe function is_exported() with its helper function lookup_symbol() are used to\nverify if a provided symbol is effectively exported by the kernel or by the\nmodules. Now that both have their symbols sorted we can replace a linear search\nwith a binary search which provide a considerably speed-up.\n\nThis work was supported by a hardware donation from the CE Linux Forum.\n\nSigned-off-by: Alessio Igor Bogani \u003cabogani@kernel.org\u003e\nAcked-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "403ed27846aa126ecf0b842b5b179c506b9d989c",
      "tree": "d47ce51b2548c80237e193b99ec159e8ef59470a",
      "parents": [
        "1a94dc35bc5c166d89913dc01a49d27a3c21a455"
      ],
      "author": {
        "name": "Alessio Igor Bogani",
        "email": "abogani@kernel.org",
        "time": "Wed Apr 20 11:10:52 2011 +0200"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu May 19 16:55:27 2011 +0930"
      },
      "message": "module: Use the binary search for symbols resolution\n\nTakes advantage of the order and locates symbols using binary search.\n\nThis work was supported by a hardware donation from the CE Linux Forum.\n\nSigned-off-by: Alessio Igor Bogani \u003cabogani@kernel.org\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nTested-by: Dirk Behme \u003cdirk.behme@googlemail.com\u003e\n"
    },
    {
      "commit": "de4d8d53465483168d6a627d409ee2d09d8e3308",
      "tree": "dadc9b82860842dcb970f2898f677e0d2373a2ab",
      "parents": [
        "01526ed0830643bd53a8434c3068e4c077e1b09d"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Apr 19 21:49:58 2011 +0200"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu May 19 16:55:26 2011 +0930"
      },
      "message": "module: each_symbol_section instead of each_symbol\n\nInstead of having a callback function for each symbol in the kernel,\nhave a callback for each array of symbols.\n\nThis eases the logic when we move to sorted symbols and binary search.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Alessio Igor Bogani \u003cabogani@kernel.org\u003e\n"
    },
    {
      "commit": "01526ed0830643bd53a8434c3068e4c077e1b09d",
      "tree": "6fe0fecf55f6fe5bc94f95f9b0e01f67a53bf9d0",
      "parents": [
        "448694a1d50432be63aafccb42d6f54d8cf3d02c"
      ],
      "author": {
        "name": "Jan Glauber",
        "email": "jang@linux.vnet.ibm.com",
        "time": "Thu May 19 16:55:26 2011 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu May 19 16:55:26 2011 +0930"
      },
      "message": "module: split unset_section_ro_nx function.\n\nSplit the unprotect function into a function per section to make\nthe code more readable and add the missing static declaration.\n\nSigned-off-by: Jan Glauber \u003cjang@linux.vnet.ibm.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "448694a1d50432be63aafccb42d6f54d8cf3d02c",
      "tree": "bd066b7cdb04e8bdc61efdeaa0e358269f185f7e",
      "parents": [
        "4d10380e720a3ce19dbe88d0133f66ded07b6a8f"
      ],
      "author": {
        "name": "Jan Glauber",
        "email": "jang@linux.vnet.ibm.com",
        "time": "Thu May 19 16:55:26 2011 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu May 19 16:55:26 2011 +0930"
      },
      "message": "module: undo module RONX protection correctly.\n\nWhile debugging I stumbled over two problems in the code that protects module\npages.\n\nFirst issue is that disabling the protection before freeing init or unload of\na module is not symmetric with the enablement. For instance, if pages are set\nto RO the page range from module_core to module_core + core_ro_size is\nprotected. If a module is unloaded the page range from module_core to\nmodule_core + core_size is set back to RW.\nSo pages that were not set to RO are also changed to RW.\nThis is not critical but IMHO it should be symmetric.\n\nSecond issue is that while set_memory_rw \u0026 set_memory_ro are used for\nRO/RW changes only set_memory_nx is involved for NX/X. One would await that\nthe inverse function is called when the NX protection should be removed,\nwhich is not the case here, unless I\u0027m missing something.\n\nSigned-off-by: Jan Glauber \u003cjang@linux.vnet.ibm.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "4d10380e720a3ce19dbe88d0133f66ded07b6a8f",
      "tree": "9c652a201f13d67be5671a45e9815c7e7e3b4e0e",
      "parents": [
        "5d05c70849f760ac8f4ed3ebfeefb92689858834"
      ],
      "author": {
        "name": "Jan Glauber",
        "email": "jang@linux.vnet.ibm.com",
        "time": "Thu May 19 16:55:25 2011 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu May 19 16:55:26 2011 +0930"
      },
      "message": "module: zero mod-\u003einit_ro_size after init is freed.\n\nReset mod-\u003einit_ro_size to zero after the init part of a module is unloaded.\nOtherwise we need to check if module-\u003einit is NULL in the unprotect functions\nin the next patch.\n\nSigned-off-by: Jan Glauber \u003cjang@linux.vnet.ibm.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "5d05c70849f760ac8f4ed3ebfeefb92689858834",
      "tree": "631fb578b5a07cee38865f3866a57d8430ddc2ea",
      "parents": [
        "c5be0b2eb1ca05e0cd747f9c0ba552c6ee8827a0"
      ],
      "author": {
        "name": "Daniel J Blueman",
        "email": "daniel.blueman@gmail.com",
        "time": "Tue Mar 08 22:01:47 2011 +0800"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu May 19 16:55:25 2011 +0930"
      },
      "message": "minor ANSI prototype sparse fix\n\nFix function prototype to be ANSI-C compliant, consistent with other\nfunction prototypes, addressing a sparse warning.\n\nSigned-off-by: Daniel J Blueman \u003cdaniel.blueman@gmail.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "7816c45bf13255157c00fb8aca86cb64d825e878",
      "tree": "e5f37f71a0d63fa4e6fefbf394a68aef685c6240",
      "parents": [
        "cb63e4c967541402b79a92a31c841744ca17d1aa"
      ],
      "author": {
        "name": "Roland Vossen",
        "email": "rvossen@broadcom.com",
        "time": "Thu Apr 07 11:20:58 2011 +0200"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Mon Apr 25 16:45:22 2011 -0700"
      },
      "message": "modules: Enabled dynamic debugging for staging modules\n\nDriver modules from the staging directory are marked \u0027tainted\u0027\nby module.c. Subsequently, tainted modules are denied dynamic\ndebugging. This is unwanted behavior, since staging modules should\nbe able to use the dynamic debugging mechanism.\n\nPlease merge this also into the staging-linus branch.\n\nSigned-off-by: Roland Vossen \u003crvossen@broadcom.com\u003e\nAcked-by: Jason Baron \u003cjbaron@redhat.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n"
    },
    {
      "commit": "25985edcedea6396277003854657b5f3cb31a628",
      "tree": "f026e810210a2ee7290caeb737c23cb6472b7c38",
      "parents": [
        "6aba74f2791287ec407e0f92487a725a25908067"
      ],
      "author": {
        "name": "Lucas De Marchi",
        "email": "lucas.demarchi@profusion.mobi",
        "time": "Wed Mar 30 22:57:33 2011 -0300"
      },
      "committer": {
        "name": "Lucas De Marchi",
        "email": "lucas.demarchi@profusion.mobi",
        "time": "Thu Mar 31 11:26:23 2011 -0300"
      },
      "message": "Fix common misspellings\n\nFixes generated by \u0027codespell\u0027 and manually reviewed.\n\nSigned-off-by: Lucas De Marchi \u003clucas.demarchi@profusion.mobi\u003e\n"
    },
    {
      "commit": "9f36e2c448007b54851e7e4fa48da97d1477a175",
      "tree": "2fa0ad88c75184dc79b28c287c853e97f779bf1f",
      "parents": [
        "fe3d8ad31cf51b062bbb8a9609eeb1d0c41a7f30"
      ],
      "author": {
        "name": "Kees Cook",
        "email": "kees.cook@canonical.com",
        "time": "Tue Mar 22 16:34:22 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Mar 22 17:44:12 2011 -0700"
      },
      "message": "printk: use %pK for /proc/kallsyms and /proc/modules\n\nIn an effort to reduce kernel address leaks that might be used to help\ntarget kernel privilege escalation exploits, this patch uses %pK when\ndisplaying addresses in /proc/kallsyms, /proc/modules, and\n/sys/module/*/sections/*.\n\nNote that this changes %x to %p, so some legitimately 0 values in\n/proc/kallsyms would have changed from 00000000 to \"(null)\".  To avoid\nthis, \"(null)\" is not used when using the \"K\" format.  Anything that was\nalready successfully parsing \"(null)\" in addition to full hex digits\nshould have no problem with this change.  (Thanks to Joe Perches for the\nsuggestion.) Due to the %x to %p, \"void *\" casts are needed since these\naddresses are already \"unsigned long\" everywhere internally, due to their\nstarting life as ELF section offsets.\n\nSigned-off-by: Kees Cook \u003ckees.cook@canonical.com\u003e\nCc: Eugene Teo \u003ceugene@redhat.com\u003e\nCc: Dan Rosenberg \u003cdrosenberg@vsecurity.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": "654986462939cd7ec18f276c6379a334dac106a7",
      "tree": "b9c70944012c24fa6d7cc973fa9b4b6e875ca842",
      "parents": [
        "e4a9ea5ee7c8812a7bf0c3fb725ceeaa3d4c2fcc"
      ],
      "author": {
        "name": "Mathieu Desnoyers",
        "email": "mathieu.desnoyers@efficios.com",
        "time": "Wed Jan 26 17:26:22 2011 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu Feb 03 09:28:46 2011 -0500"
      },
      "message": "tracepoints: Fix section alignment using pointer array\n\nMake the tracepoints more robust, making them solid enough to handle compiler\nchanges by not relying on anything based on compiler-specific behavior with\nrespect to structure alignment. Implement an approach proposed by David Miller:\nuse an array of const pointers to refer to the individual structures, and export\nthis pointer array through the linker script rather than the structures per se.\nIt will consume 32 extra bytes per tracepoint (24 for structure padding and 8\nfor the pointers), but are less likely to break due to compiler changes.\n\nHistory:\n\ncommit 7e066fb8 tracepoints: add DECLARE_TRACE() and DEFINE_TRACE()\nadded the aligned(32) type and variable attribute to the tracepoint structures\nto deal with gcc happily aligning statically defined structures on 32-byte\nmultiples.\n\nOne attempt was to use a 8-byte alignment for tracepoint structures by applying\nboth the variable and type attribute to tracepoint structures definitions and\ndeclarations. It worked fine with gcc 4.5.1, but broke with gcc 4.4.4 and 4.4.5.\n\nThe reason is that the \"aligned\" attribute only specify the _minimum_ alignment\nfor a structure, leaving both the compiler and the linker free to align on\nlarger multiples. Because tracepoint.c expects the structures to be placed as an\narray within each section, up-alignment cause NULL-pointer exceptions due to the\nextra unexpected padding.\n\n(this patch applies on top of -tip)\n\nSigned-off-by: Mathieu Desnoyers \u003cmathieu.desnoyers@efficios.com\u003e\nAcked-by: David S. Miller \u003cdavem@davemloft.net\u003e\nLKML-Reference: \u003c20110126222622.GA10794@Krystal\u003e\nCC: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCC: Ingo Molnar \u003cmingo@elte.hu\u003e\nCC: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCC: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCC: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCC: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "94462ad3b14739d158a1ab87bb30008c1e5a6bc1",
      "tree": "8000c108bdd4e8d298bce6b5acd2660e96edd6aa",
      "parents": [
        "26e20a108caca6231c6a5ec659f815a866904751"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Mon Nov 29 13:15:42 2010 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu Dec 23 09:56:00 2010 -0500"
      },
      "message": "module: Move RO/NX module protection to after ftrace module update\n\nThe commit:\n\n84e1c6bb38eb318e456558b610396d9f1afaabf0\nx86: Add RO/NX protection for loadable kernel modules\n\nBroke the function tracer with this output:\n\n------------[ cut here ]------------\nWARNING: at kernel/trace/ftrace.c:1014 ftrace_bug+0x114/0x171()\nHardware name: Precision WorkStation 470\nModules linked in: i2c_core(+)\nPid: 86, comm: modprobe Not tainted 2.6.37-rc2+ #68\nCall Trace:\n [\u003cffffffff8104e957\u003e] warn_slowpath_common+0x85/0x9d\n [\u003cffffffffa00026db\u003e] ? __process_new_adapter+0x7/0x34 [i2c_core]\n [\u003cffffffffa00026db\u003e] ? __process_new_adapter+0x7/0x34 [i2c_core]\n [\u003cffffffff8104e989\u003e] warn_slowpath_null+0x1a/0x1c\n [\u003cffffffff810a9dfe\u003e] ftrace_bug+0x114/0x171\n [\u003cffffffffa00026db\u003e] ? __process_new_adapter+0x7/0x34 [i2c_core]\n [\u003cffffffff810aa0db\u003e] ftrace_process_locs+0x1ae/0x274\n [\u003cffffffffa00026db\u003e] ? __process_new_adapter+0x7/0x34 [i2c_core]\n [\u003cffffffff810aa29e\u003e] ftrace_module_notify+0x39/0x44\n [\u003cffffffff814405cf\u003e] notifier_call_chain+0x37/0x63\n [\u003cffffffff8106e054\u003e] __blocking_notifier_call_chain+0x46/0x5b\n [\u003cffffffff8106e07d\u003e] blocking_notifier_call_chain+0x14/0x16\n [\u003cffffffff8107ffde\u003e] sys_init_module+0x73/0x1f3\n [\u003cffffffff8100acf2\u003e] system_call_fastpath+0x16/0x1b\n---[ end trace 2aff4f4ca53ec746 ]---\nftrace faulted on writing [\u003cffffffffa00026db\u003e]\n__process_new_adapter+0x7/0x34 [i2c_core]\n\nThe cause was that the module text was set to read only before ftrace\ncould convert the calls to mcount to nops. Thus, the conversions failed\ndue to not being able to write to the text locations.\n\nThe simple fix is to move setting the module to read only after the\nmodule notifiers are called (where ftrace sets the module mcounts to nops).\n\nReported-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nAcked-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "26e20a108caca6231c6a5ec659f815a866904751",
      "tree": "36932c208a9e8994bfd7ed4eaf48b9c33f71fbe3",
      "parents": [
        "691513f70d3957939a318da970987b876c720861",
        "90a8a73c06cc32b609a880d48449d7083327e11a"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Dec 23 09:48:41 2010 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Dec 23 09:48:41 2010 +0100"
      },
      "message": "Merge commit \u0027v2.6.37-rc7\u0027 into x86/security\n"
    },
    {
      "commit": "84e1c6bb38eb318e456558b610396d9f1afaabf0",
      "tree": "8051a29e2364446dc1e24bbd5f3b7693d1a454fa",
      "parents": [
        "5bd5a452662bc37c54fb6828db1a3faf87e6511c"
      ],
      "author": {
        "name": "matthieu castet",
        "email": "castet.matthieu@free.fr",
        "time": "Tue Nov 16 22:35:16 2010 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Nov 18 13:32:56 2010 +0100"
      },
      "message": "x86: Add RO/NX protection for loadable kernel modules\n\nThis patch is a logical extension of the protection provided by\nCONFIG_DEBUG_RODATA to LKMs. The protection is provided by\nsplitting module_core and module_init into three logical parts\neach and setting appropriate page access permissions for each\nindividual section:\n\n 1. Code: RO+X\n 2. RO data: RO+NX\n 3. RW data: RW+NX\n\nIn order to achieve proper protection, layout_sections() have\nbeen modified to align each of the three parts mentioned above\nonto page boundary. Next, the corresponding page access\npermissions are set right before successful exit from\nload_module(). Further, free_module() and sys_init_module have\nbeen modified to set module_core and module_init as RW+NX right\nbefore calling module_free().\n\nBy default, the original section layout and access flags are\npreserved. When compiled with CONFIG_DEBUG_SET_MODULE_RONX\u003dy,\nthe patch will page-align each group of sections to ensure that\neach page contains only one type of content and will enforce\nRO/NX for each group of pages.\n\n  -v1: Initial proof-of-concept patch.\n  -v2: The patch have been re-written to reduce the number of #ifdefs\n       and to make it architecture-agnostic. Code formatting has also\n       been corrected.\n  -v3: Opportunistic RO/NX protection is now unconditional. Section\n       page-alignment is enabled when CONFIG_DEBUG_RODATA\u003dy.\n  -v4: Removed most macros and improved coding style.\n  -v5: Changed page-alignment and RO/NX section size calculation\n  -v6: Fixed comments. Restricted RO/NX enforcement to x86 only\n  -v7: Introduced CONFIG_DEBUG_SET_MODULE_RONX, added\n       calls to set_all_modules_text_rw() and set_all_modules_text_ro()\n       in ftrace\n  -v8: updated for compatibility with linux 2.6.33-rc5\n  -v9: coding style fixes\n -v10: more coding style fixes\n -v11: minor adjustments for -tip\n -v12: minor adjustments for v2.6.35-rc2-tip\n -v13: minor adjustments for v2.6.37-rc1-tip\n\nSigned-off-by: Siarhei Liakh \u003csliakh.lkml@gmail.com\u003e\nSigned-off-by: Xuxian Jiang \u003cjiang@cs.ncsu.edu\u003e\nAcked-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nReviewed-by: James Morris \u003cjmorris@namei.org\u003e\nSigned-off-by: H. Peter Anvin \u003chpa@zytor.com\u003e\nCc: Andi Kleen \u003cak@muc.de\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nCc: Dave Jones \u003cdavej@redhat.com\u003e\nCc: Kees Cook \u003ckees.cook@canonical.com\u003e\nCc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nLKML-Reference: \u003c4CE2F914.9070106@free.fr\u003e\n[ minor cleanliness edits, -v14: build failure fix ]\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "13b9b6e746d753d43270a78dd39694912646b5d9",
      "tree": "e7c4f657a21f7a94daa12b3880f1383ce27b58cf",
      "parents": [
        "034c6efa4616e5ff6253549e973e7fef12899324"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Wed Nov 10 22:19:24 2010 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed Nov 10 22:19:24 2010 -0500"
      },
      "message": "tracing: Fix module use of trace_bprintk()\n\nOn use of trace_printk() there\u0027s a macro that determines if the format\nis static or a variable. If it is static, it defaults to __trace_bprintk()\notherwise it uses __trace_printk().\n\nA while ago, Lai Jiangshan added __trace_bprintk(). In that patch, we\ndiscussed a way to allow modules to use it. The difference between\n__trace_bprintk() and __trace_printk() is that for faster processing,\njust the format and args are stored in the trace instead of running\nit through a sprintf function. In order to do this, the format used\nby the __trace_bprintk() had to be persistent.\n\nSee commit 1ba28e02a18cbdbea123836f6c98efb09cbf59ec\n\nThe problem comes with trace_bprintk() where the module is unloaded.\nThe pointer left in the buffer is still pointing to the format.\n\nTo solve this issue, the formats in the module were copied into kernel\ncore. If the same format was used, they would use the same copy (to prevent\nmemory leak). This all worked well until we tried to merge everything.\n\nAt the time this was written, Lai Jiangshan, Frederic Weisbecker,\nIngo Molnar and myself were all touching the same code. When this was\nmerged, we lost the part of it that was in module.c. This kept out the\ncopying of the formats and unloading the module could cause bad pointers\nleft in the ring buffer.\n\nThis patch adds back (with updates required for current kernel) the\nmodule code that sets up the necessary pointers.\n\nCc: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "abbce906d05ec37289cd0c3b4e35b2db26eab19b",
      "tree": "b3919579d27e040bd4005f08073f9fbe12090387",
      "parents": [
        "f9ba5375a8aae4aeea6be15df77e24707a429812"
      ],
      "author": {
        "name": "Michał Mirosław",
        "email": "mirq-linux@rere.qmqm.pl",
        "time": "Mon Sep 20 01:58:08 2010 +0200"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Wed Oct 27 20:33:05 2010 +1030"
      },
      "message": "(trivial) Fix compiler warning in kernel/modules.c\n\nBuilding with CONFIG_KALLSYMS\u003dn gives following warning:\n\n/mnt/src/linux-git/kernel/module.c: In function ‘post_relocation’:\n/mnt/src/linux-git/kernel/module.c:2534:2: warning: passing argument 2 of ‘add_kallsyms’ discards qualifiers from pointer target type\n/mnt/src/linux-git/kernel/module.c:2038:13: note: expected ‘struct load_info *’ but argument is of type ‘const struct load_info *’\n\nSigned-off-by: Michał Mirosław \u003cmirq-linux@rere.qmqm.pl\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "7cd2541cf2395962daf98ec32a141aba3398a9b2",
      "tree": "3c8bebb277462ba0de9d44233a970d34056dc45e",
      "parents": [
        "c62f981f9309486ba5546edbb5925f71e441fa65",
        "cb655d0f3d57c23db51b981648e452988c0223f9"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Oct 08 10:46:27 2010 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Oct 08 10:46:27 2010 +0200"
      },
      "message": "Merge commit \u0027v2.6.36-rc7\u0027 into perf/core\n\nConflicts:\n\tarch/x86/kernel/module.c\n\nMerge reason: Resolve the conflict, pick up fixes.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "5336377d6225959624146629ce3fc88ee8ecda3d",
      "tree": "571b9db75d1ba50faa1e399509563f367fd5694f",
      "parents": [
        "2f6b3aa7a563d05453c4d73ccf88191aee84333f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 05 11:29:27 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 05 11:29:27 2010 -0700"
      },
      "message": "modules: Fix module_bug_list list corruption race\n\nWith all the recent module loading cleanups, we\u0027ve minimized the code\nthat sits under module_mutex, fixing various deadlocks and making it\npossible to do most of the module loading in parallel.\n\nHowever, that whole conversion totally missed the rather obscure code\nthat adds a new module to the list for BUG() handling.  That code was\ndoubly obscure because (a) the code itself lives in lib/bugs.c (for\ndubious reasons) and (b) it gets called from the architecture-specific\n\"module_finalize()\" rather than from generic code.\n\nCalling it from arch-specific code makes no sense what-so-ever to begin\nwith, and is now actively wrong since that code isn\u0027t protected by the\nmodule loading lock any more.\n\nSo this commit moves the \"module_bug_{finalize,cleanup}()\" calls away\nfrom the arch-specific code, and into the generic code - and in the\nprocess protects it with the module_mutex so that the list operations\nare now safe.\n\nFuture fixups:\n - move the module list handling code into kernel/module.c where it\n   belongs.\n - get rid of \u0027module_bug_list\u0027 and just use the regular list of modules\n   (called \u0027modules\u0027 - imagine that) that we already create and maintain\n   for other reasons.\n\nReported-and-tested-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Adrian Bunk \u003cbunk@kernel.org\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: stable@kernel.org\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "bf5438fca2950b03c21ad868090cc1a8fcd49536",
      "tree": "9fc5693763263704de8d8ba1c37a84172dbe5eb7",
      "parents": [
        "fa6f2cc77081792e4edca9168420a3422299ef15"
      ],
      "author": {
        "name": "Jason Baron",
        "email": "jbaron@redhat.com",
        "time": "Fri Sep 17 11:09:00 2010 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed Sep 22 16:29:41 2010 -0400"
      },
      "message": "jump label: Base patch for jump label\n\nbase patch to implement \u0027jump labeling\u0027. Based on a new \u0027asm goto\u0027 inline\nassembly gcc mechanism, we can now branch to labels from an \u0027asm goto\u0027\nstatment. This allows us to create a \u0027no-op\u0027 fastpath, which can subsequently\nbe patched with a jump to the slowpath code. This is useful for code which\nmight be rarely used, but which we\u0027d like to be able to call, if needed.\nTracepoints are the current usecase that these are being implemented for.\n\nAcked-by: David S. Miller \u003cdavem@davemloft.net\u003e\nSigned-off-by: Jason Baron \u003cjbaron@redhat.com\u003e\nLKML-Reference: \u003cee8b3595967989fdaf84e698dc7447d315ce972a.1284733808.git.jbaron@redhat.com\u003e\n\n[ cleaned up some formating ]\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "51f3d0f474aaebbc253100fa32a49c8256812330",
      "tree": "7aad934d5c50231568e39be992d733304e0ecfcd",
      "parents": [
        "811d66a0e1e99902d365497eec7884113a2665bd"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Aug 05 12:59:13 2010 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Aug 05 12:59:13 2010 +0930"
      },
      "message": "module: cleanup comments, remove noinline\n\nOn my (32-bit x86) machine, sys_init_module() uses 124 bytes of stack\nonce load_module() is inlined.\n\nThis effectively reverts ffb4ba76 which inlined it due to stack\npressure.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "811d66a0e1e99902d365497eec7884113a2665bd",
      "tree": "b28c4ba87c0f9ec23837f9abc75b6e257a6e0061",
      "parents": [
        "6526c534b2677ca601b7b92851437feb041d02a1"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Aug 05 12:59:12 2010 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Aug 05 12:59:13 2010 +0930"
      },
      "message": "module: group post-relocation functions into post_relocation()\n\nThis simply hoists more code out of load_module; we also put the\nidentification of the extable and dynamic debug table in with the\nothers in find_module_sections().\n\nWe move the taint check to the actual add/remove of the dynamic debug\ninfo: this is certain (find_module_sections is too early).\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\n"
    },
    {
      "commit": "6526c534b2677ca601b7b92851437feb041d02a1",
      "tree": "d6d0f6d8cf2b685b2d1d345d938ca5816860dd89",
      "parents": [
        "49668688dd5a5f46c72f965835388ed16c596055"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Aug 05 12:59:10 2010 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Aug 05 12:59:12 2010 +0930"
      },
      "message": "module: move module args strndup_user to just before use\n\nInstead of copying and allocating the args and storing it in\nload_info, we can just allocate them right before we need them.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "49668688dd5a5f46c72f965835388ed16c596055",
      "tree": "da42c22348941617e65227a6ef48f1937d840fcc",
      "parents": [
        "36b0360d17dc3928cc96347a18a3a1cdbb7e506d"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Aug 05 12:59:10 2010 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Aug 05 12:59:10 2010 +0930"
      },
      "message": "module: pass load_info into other functions\n\nPass the struct load_info into all the other functions in module\nloading.  This neatens things and makes them more consistent.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "36b0360d17dc3928cc96347a18a3a1cdbb7e506d",
      "tree": "e963d162006f842a475435988eba04a579114f0d",
      "parents": [
        "8f6d037815466cb25e7de8f00536eca71d94d4c3"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Aug 05 12:59:09 2010 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Aug 05 12:59:10 2010 +0930"
      },
      "message": "module: fix sysfs cleanup for !CONFIG_SYSFS\n\nRestore the stub module_remove_modinfo_attrs, remove the now-unused\n!CONFIG_SYSFS module_sysfs_init.\n\nAlso, rename mod_kobject_remove() to mod_sysfs_teardown() as\nit is the logical counterpart to mod_sysfs_setup now.\n\nReported-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "8f6d037815466cb25e7de8f00536eca71d94d4c3",
      "tree": "2ac887a230476a7550ff0360dd1ae0b678da8d82",
      "parents": [
        "d913188c75191114051cf0bac75dad444c6080fa"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Aug 05 12:59:09 2010 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Aug 05 12:59:09 2010 +0930"
      },
      "message": "module: sysfs cleanup\n\nWe change the sysfs functions to take struct load_info, and call\nthem all in mod_sysfs_setup().\n\nWe also clean up the #ifdefs a little.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "d913188c75191114051cf0bac75dad444c6080fa",
      "tree": "1c32e48b3524f775ef9998f71b016d325205697b",
      "parents": [
        "511ca6ae43fbe0a7c9e0b50ad275f7ef24ef3b58"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Aug 05 12:59:08 2010 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Aug 05 12:59:09 2010 +0930"
      },
      "message": "module: layout_and_allocate\n\nlayout_and_allocate() does everything up to and including the final\nstruct module placement inside the allocated module memory.  We have\nto store the symbol layout information in our struct load_info though.\n\nThis avoids the nasty code we had before where \u0027mod\u0027 pointed first\nto the version inside the temporary allocation containing the entire\nfile, then later was moved to point to the real struct module: now\nthe main code only ever sees the final module address.\n\n(Includes fix for the Tony Luck-found Linus-diagnosed failure path\n error).\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "511ca6ae43fbe0a7c9e0b50ad275f7ef24ef3b58",
      "tree": "596d11de1a99dfce758465de009a97ccdb7da011",
      "parents": [
        "eded41c1c6466081e0eb00d38719c6e6ee81a5d4"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Aug 05 12:59:08 2010 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Aug 05 12:59:08 2010 +0930"
      },
      "message": "module: fix crash in get_ksymbol() when oopsing in module init\n\nAndrew had the sole pleasure of tickling this bug in linux-next; when we set\nup \"info-\u003estrtab\" it\u0027s pointing into the temporary copy of the module.  For\nmost uses that is fine, but kallsyms keeps a pointer around during module\nload (inside mod-\u003estrtab).\n\nIf we oops for some reason inside a module\u0027s init function, kallsyms will use\nthe mod-\u003estrtab pointer into the now-freed temporary module copy.\n\n(Later oopses work fine: after init we overwrite mod-\u003estrtab to point to a\n compacted core-only strtab).\n\nReported-by: Andrew \"Grumpy\" Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Rusty \"Buggy\" Russell \u003crusty@rustcorp.com.au\u003e\nTested-by: Andrew \"Happy\" Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "eded41c1c6466081e0eb00d38719c6e6ee81a5d4",
      "tree": "d4c015b489b57503af437fe385c4fc07db232ad6",
      "parents": [
        "d6df72a06e067139d491da4a9d14d92ad39e7a50"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Aug 05 12:59:07 2010 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Aug 05 12:59:08 2010 +0930"
      },
      "message": "module: kallsyms functions take struct load_info\n\nSimple refactor causes us to lift struct definition to top of file.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "d6df72a06e067139d491da4a9d14d92ad39e7a50",
      "tree": "2a7d0387df66c2d6f510cd9a24c622bf75ca669c",
      "parents": [
        "8b5f61a795fe37be090b0fd18b6b7271db9298e0"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Aug 05 12:59:07 2010 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Aug 05 12:59:07 2010 +0930"
      },
      "message": "module: refactor out section header rewriting: FIX modversions\n\nWe can\u0027t do the find_sec after removing the SHF_ALLOC flags; it won\u0027t\nfind the sections.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "8b5f61a795fe37be090b0fd18b6b7271db9298e0",
      "tree": "4440e449af9207b25e62b4d8ad0dc16500720e65",
      "parents": [
        "3264d3f9dd532ed9c3eb9491619e3f485b72747f"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Aug 05 12:59:06 2010 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Aug 05 12:59:06 2010 +0930"
      },
      "message": "module: refactor out section header rewriting\n\nPut all the \"rewrite and check section headers\" in one place.  This\nadds another iteration over the sections, but it\u0027s far clearer.  We\niterate once for every find_section() so we already iterate over many\ntimes.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "3264d3f9dd532ed9c3eb9491619e3f485b72747f",
      "tree": "49a56f653c98578ef13c33a8fb6f7ba110517cf8",
      "parents": [
        "44032e631691adf1f406843d5e54deb795973ff7"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jun 02 11:01:06 2010 -0700"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Aug 05 12:59:06 2010 +0930"
      },
      "message": "module: add load_info\n\nBtw, here\u0027s a patch that _looks_ large, but it really pretty trivial, and\nsets things up so that it would be way easier to split off pieces of the\nmodule loading.\n\nThe reason it looks large is that it creates a \"module_info\" structure\nthat contains all the module state that we\u0027re building up while loading,\ninstead of having individual variables for all the indices etc.\n\nSo the patch ends up being large, because every \"symindex\" access instead\nbecomes \"info.index.sym\" etc. That may be a few characters longer, but it\nthen means that we can just pass a pointer to that \"info\" structure\naround. and let all the pieces fill it in very naturally.\n\nAs an example of that, the patch also moves the initialization of all\nthose convenience variables into a \"setup_module_info()\" function. And at\nthis point it really does become very natural to start to peel off some of\nthe error labels and move them into the helper functions - now the\n\"truncated\" case is gone, and is handled inside that setup function\ninstead.\n\nSo maybe you don\u0027t like this approach, and it does make the variable\naccesses a bit longer, but I don\u0027t think unreadably so. And the patch\nreally does look big and scary, but there really should be absolutely no\nsemantic changes - most of it was a trivial and mindless rename.\n\nIn fact, it was so mindless that I on purpose kept the existing helper\nfunctions looking like this:\n\n-       err \u003d check_modinfo(mod, sechdrs, infoindex, versindex);\n+       err \u003d check_modinfo(mod, info.sechdrs, info.index.info, info.index.vers);\n\nrather than changing them to just take the \"info\" pointer. IOW, a second\nphase (if you think the approach is ok) would change that calling\nconvention to just do\n\n\terr \u003d check_modinfo(mod, \u0026info);\n\n(and same for \"layout_sections()\", \"layout_symtabs()\" etc.) Similarly,\nwhile right now it makes things _look_ bigger, with things like this:\n\n\tversindex \u003d find_sec(hdr, sechdrs, secstrings, \"__versions\");\n\nbecoming\n\n\tinfo-\u003eindex.vers \u003d find_sec(info-\u003ehdr, info-\u003esechdrs, info-\u003esecstrings, \"__versions\");\n\nin the new \"setup_module_info()\" function, that\u0027s again just a result of\nit being a search-and-replace patch. By using the \u0027info\u0027 pointer, we could\njust change the \u0027find_sec()\u0027 interface so that it ends up being\n\n\tinfo-\u003eindex.vers \u003d find_sec(info, \"__versions\");\n\ninstead, and then we\u0027d actually have a shorter and more readable line. So\nfor a lot of those mindless variable name expansions there\u0027s would be room\nfor separate cleanups.\n\nI didn\u0027t move quite everything in there - if we do this to layout_symtabs,\nfor example, we\u0027d want to move the percpu, symoffs, stroffs, *strmap\nvariables to be fields in that module_info structure too. But that\u0027s a\nmuch smaller patch, I moved just the really core stuff that is currently\nbeing set up and used in various parts.\n\nBut even in this rough form, it removes close to 70 lines from that\nfunction (but adds 22 lines overall, of course - the structure definition,\nthe helper function declarations and call-sites etc etc).\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "44032e631691adf1f406843d5e54deb795973ff7",
      "tree": "e9cb4f72974386a2b174bf6e21f41be9aece7a10",
      "parents": [
        "22e268ebecc549f1b1907f114cb44d6044bdee3c"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Aug 05 12:59:05 2010 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Aug 05 12:59:06 2010 +0930"
      },
      "message": "module: reduce stack usage for each_symbol()\n\nAnd now that I\u0027m looking at that call-chain (to see if it would make sense\nto use some other more specific lock - doesn\u0027t look like it: all the\nreaders are using RCU and this is the only writer), I also give you this\ntrivial one-liner. It changes each_symbol() to not put that constant array\non the stack, resulting in changing\n\n        movq    $C.388.31095, %rsi      #, tmp85\n        subq    $376, %rsp      #,\n        movq    %rdi, %rbx      # fn, fn\n        leaq    -208(%rbp), %rdi        #, tmp84\n        movq    %rbx, %rdx      # fn,\n        rep movsl\n        xorl    %esi, %esi      #\n        leaq    -208(%rbp), %rdi        #, tmp87\n        movq    %r12, %rcx      # data,\n        call    each_symbol_in_section.clone.0  #\n\ninto\n\n        xorl    %esi, %esi      #\n        subq    $216, %rsp      #,\n        movq    %rdi, %rbx      # fn, fn\n        movq    $arr.31078, %rdi        #,\n        call    each_symbol_in_section.clone.0  #\n\nwhich is not so much about being obviously shorter and simpler because we\ndon\u0027t unnecessarily copy that constant array around onto the stack, but\nalso about having a much smaller stack footprint (376 vs 216 bytes - see\nthe update of \u0027rsp\u0027).\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "22e268ebecc549f1b1907f114cb44d6044bdee3c",
      "tree": "a1159e36de2a0ed6d3dcadd61622976971dd3b2d",
      "parents": [
        "9f85a4bbb1cf56f65b3d065a5f88204a757f2325"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Aug 05 12:59:05 2010 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Aug 05 12:59:05 2010 +0930"
      },
      "message": "module: refactor load_module part 5\n\n1) Extract out the relocation loop into apply_relocations\n2) Extract license and version checks into check_module_license_and_versions\n3) Extract icache flushing into flush_module_icache\n4) Move __obsparm warning into find_module_sections\n5) Move license setting into check_modinfo.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "9f85a4bbb1cf56f65b3d065a5f88204a757f2325",
      "tree": "28d674a40dcab0e0c31349736718993f1e9377d4",
      "parents": [
        "40dd2560ec2df21036db9ec8b971f92d98fd1969"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Aug 05 12:59:04 2010 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Aug 05 12:59:05 2010 +0930"
      },
      "message": "module: refactor load_module part 4\n\nAllocate references inside module_unload_init(), clean up inside\nmodule_unload_free().\n\nThis version fixed to do allocation before __this_cpu_write, thanks to\nbug reports from linux-next from Dave Young \u003chidave.darkstar@gmail.com\u003e\nand Stephen Rothwell \u003csfr@canb.auug.org.au\u003e.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "40dd2560ec2df21036db9ec8b971f92d98fd1969",
      "tree": "a5785afb92619379172c9ee5b05501e075cc7bff",
      "parents": [
        "65b8a9b4d5525348e55cf63a43517610ee8e0970"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Aug 05 12:59:03 2010 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Aug 05 12:59:04 2010 +0930"
      },
      "message": "module: refactor load_module part 3\n\nExtract out the allocation and copying in from userspace, and the\nfirst set of modinfo checks.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "65b8a9b4d5525348e55cf63a43517610ee8e0970",
      "tree": "1661d4bc368c768e803a1de4ddb0191bb71acab8",
      "parents": [
        "f91a13bb99b73961d4e2743a6ff296ac553abc4f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Aug 05 12:59:02 2010 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Aug 05 12:59:03 2010 +0930"
      },
      "message": "module: refactor load_module part 2\n\nHere\u0027s a second one. It\u0027s slightly less trivial - since we now have error\ncases - and equally untested so it may well be totally broken. But it also\ncleans up a bit more, and avoids one of the goto targets, because the\n\"move_module()\" helper now does both allocations or none.\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "f91a13bb99b73961d4e2743a6ff296ac553abc4f",
      "tree": "eb922cfbd4af965491200d307baf3b60b8b0319e",
      "parents": [
        "2409e74278b7fb917d39ef6d3c16223c04a386f2"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Aug 05 12:59:02 2010 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Aug 05 12:59:02 2010 +0930"
      },
      "message": "module: refactor load_module\n\nI\u0027d start from the trivial stuff. There\u0027s a fair amount of straight-line\ncode that just makes the function hard to read just because you have to\npage up and down so far. Some of it is trivial to just create a helper\nfunction for.\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "2409e74278b7fb917d39ef6d3c16223c04a386f2",
      "tree": "a5b9fe3cefc536960d3e5de819e46f375ed5476c",
      "parents": [
        "3cfc2c42c1cbc8e238bb9c0612c0df4565e3a8b4"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Thu Aug 05 12:59:00 2010 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Aug 05 12:59:02 2010 +0930"
      },
      "message": "module: module_unload_init() cleanup\n\nNo need to clear mod-\u003erefptr in module_unload_init(), since\nalloc_percpu() already clears allocated chunks.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e (removed unused var)\n"
    },
    {
      "commit": "b82bab4bbe9efa7bc7177fc20620fff19bd95484",
      "tree": "c033a090fbd3caa61f2f3b6ece52c0b4dffeb229",
      "parents": [
        "d15aa2cc641bd193596382357de917b32f1b40cb"
      ],
      "author": {
        "name": "Jason Baron",
        "email": "jbaron@redhat.com",
        "time": "Tue Jul 27 13:18:01 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 27 14:32:06 2010 -0700"
      },
      "message": "dynamic debug: move ddebug_remove_module() down into free_module()\n\nThe command\n\n\techo \"file ec.c +p\" \u003e/sys/kernel/debug/dynamic_debug/control\n\ncauses an oops.\n\nMove the call to ddebug_remove_module() down into free_module().  In this\nway it should be called from all error paths.  Currently, we are missing\nthe remove if the module init routine fails.\n\nSigned-off-by: Jason Baron \u003cjbaron@redhat.com\u003e\nReported-by: Thomas Renninger \u003ctrenn@suse.de\u003e\nTested-by: Thomas Renninger \u003ctrenn@suse.de\u003e\nCc: \u003cstable@kernel.org\u003e\t\t[2.6.32+]\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ff49d74ad383f54041378144ca1a229ee9aeaa59",
      "tree": "6f37335e313c9a680db8d4e4ce00d17aa11a099b",
      "parents": [
        "e3668dd83ba5958429984286efbc3055be5344c4"
      ],
      "author": {
        "name": "Yehuda Sadeh",
        "email": "yehuda@hq.newdream.net",
        "time": "Sat Jul 03 13:07:35 2010 +1000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jul 04 20:17:22 2010 -0700"
      },
      "message": "module: initialize module dynamic debug later\n\nWe should initialize the module dynamic debug datastructures\nonly after determining that the module is not loaded yet. This\nfixes a bug that introduced in 2.6.35-rc2, where when a trying\nto load a module twice, we also load it\u0027s dynamic printing data\ntwice which causes all sorts of nasty issues. Also handle\nthe dynamic debug cleanup later on failure.\n\nSigned-off-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e (removed a #ifdef)\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9bea7f23952d5948f8e5dfdff4de09bb9981fb5f",
      "tree": "9cb7231bcf901fe4198142b9b054ce5ae6ce34c8",
      "parents": [
        "be593f4ce4eb1bd40e38fdc403371f149f6f12eb"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Sat Jun 05 11:17:37 2010 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Sat Jun 05 11:17:37 2010 +0930"
      },
      "message": "module: fix bne2 \"gave up waiting for init of module libcrc32c\"\n\nProblem: it\u0027s hard to avoid an init routine stumbling over a\nrequest_module these days.  And it\u0027s not clear it\u0027s always a bad idea:\nfor example, a module like kvm with dynamic dependencies on kvm-intel\nor kvm-amd would be neater if it could simply request_module the right\none.\n\nIn this particular case, it\u0027s libcrc32c:\n\n\tlibcrc32c_mod_init\n\t crypto_alloc_shash\n\t  crypto_alloc_tfm\n\t   crypto_find_alg\n\t    crypto_alg_mod_lookup\n\t     crypto_larval_lookup\n\t      request_module\n\nIf another module is waiting inside resolve_symbol() for libcrc32c to\nfinish initializing (ie. bne2 depends on libcrc32c) then it does so\nholding the module lock, and our request_module() can\u0027t make progress\nuntil that is released.\n\nWaiting inside resolve_symbol() without the lock isn\u0027t all that hard:\nwe just need to pass the -EBUSY up the call chain so we can sleep\nwhere we don\u0027t hold the lock.  Error reporting is a bit trickier: we\nneed to copy the name of the unfinished module before releasing the\nlock.\n\nOther notes:\n1) This also fixes a theoretical issue where a weak dependency would allow\n   symbol version mismatches to be ignored.\n2) We rename use_module to ref_module to make life easier for the only\n   external user (the out-of-tree ksplice patches).\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nCc: Tim Abbot \u003ctabbott@ksplice.com\u003e\nTested-by: Brandon Philips \u003cbphilips@suse.de\u003e\n"
    },
    {
      "commit": "be593f4ce4eb1bd40e38fdc403371f149f6f12eb",
      "tree": "693aee53e2d87a8ae92b6276d2aef766e8154814",
      "parents": [
        "3bafeb6247042dcbb72b0141ec7c7107de9f0b99"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Sat Jun 05 11:17:37 2010 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Sat Jun 05 11:17:37 2010 +0930"
      },
      "message": "module: verify_export_symbols under the lock\n\nIt disabled preempt so it was \"safe\", but nothing stops another module\nslipping in before this module is added to the global list now we don\u0027t\nhold the lock the whole time.\n\nSo we check this just after we check for duplicate modules, and just\nbefore we put the module in the global list.\n\n(find_symbol finds symbols in coming and going modules, too).\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "3bafeb6247042dcbb72b0141ec7c7107de9f0b99",
      "tree": "f9b8f2437455332cd64d94bedb0836ac0f2b6fd9",
      "parents": [
        "75676500f8298f0ee89db12db97294883c4b768e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jun 05 11:17:36 2010 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Sat Jun 05 11:17:37 2010 +0930"
      },
      "message": "module: move find_module check to end\n\nI think Rusty may have made the lock a bit _too_ finegrained there, and\ndidn\u0027t add it to some places that needed it. It looks, for example, like\nPATCH 1/2 actually drops the lock in places where it\u0027s needed\n(\"find_module()\" is documented to need it, but now load_module() didn\u0027t\nhold it at all when it did the find_module()).\n\nRather than adding a new \"module_loading\" list, I think we should be able\nto just use the existing \"modules\" list, and just fix up the locking a\nbit.\n\nIn fact, maybe we could just move the \"look up existing module\" a bit\nlater - optimistically assuming that the module doesn\u0027t exist, and then\njust undoing the work if it turns out that we were wrong, just before\nadding ourselves to the list.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "75676500f8298f0ee89db12db97294883c4b768e",
      "tree": "fbd74f1b6bfd258fac980c6cc3d4fa9eafa47d51",
      "parents": [
        "6407ebb271fc34440b306f305e1efb7685eece26"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Sat Jun 05 11:17:36 2010 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Sat Jun 05 11:17:36 2010 +0930"
      },
      "message": "module: make locking more fine-grained.\n\nKay Sievers \u003ckay.sievers@vrfy.org\u003e reports that we still have some\ncontention over module loading which is slowing boot.\n\nLinus also disliked a previous \"drop lock and regrab\" patch to fix the\nbne2 \"gave up waiting for init of module libcrc32c\" message.\n\nThis is more ambitious: we only grab the lock where we need it.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Brandon Philips \u003cbrandon@ifup.org\u003e\nCc: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nCc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6407ebb271fc34440b306f305e1efb7685eece26",
      "tree": "dd3fa7484bcaa4499138d2249dbed24f003fdf85",
      "parents": [
        "80a3d1bb410e000e176931a076cdf19a1e89a955"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Sat Jun 05 11:17:36 2010 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Sat Jun 05 11:17:36 2010 +0930"
      },
      "message": "module: Make module sysfs functions private.\n\nThese were placed in the header in ef665c1a06 to get the various\nSYSFS/MODULE config combintations to compile.\n\nThat may have been necessary then, but it\u0027s not now.  These functions\nare all local to module.c.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\n"
    },
    {
      "commit": "80a3d1bb410e000e176931a076cdf19a1e89a955",
      "tree": "6883bbc3b2032d9604374513ccfd496dd63e76ba",
      "parents": [
        "c8e21ced08b39ef8dfe7236fb2a923a95f645262"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Sat Jun 05 11:17:36 2010 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Sat Jun 05 11:17:36 2010 +0930"
      },
      "message": "module: move sysfs exposure to end of load_module\n\nThis means a little extra work, but is more logical: we don\u0027t put\nanything in sysfs until we\u0027re about to put the module into the\nglobal list an parse its parameters.\n\nThis also gives us a logical place to put duplicate module detection\nin the next patch.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "c8e21ced08b39ef8dfe7236fb2a923a95f645262",
      "tree": "da34400daf3049814b459b9c8ba507d90abfe2bc",
      "parents": [
        "2c02dfe7fe3fba97a5665d329d039d2415ea5607"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Sat Jun 05 11:17:35 2010 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Sat Jun 05 11:17:36 2010 +0930"
      },
      "message": "module: fix kdb\u0027s illicit use of struct module_use.\n\nLinus changed the structure, and luckily this didn\u0027t compile any more.\n\nReported-by: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Jason Wessel \u003cjason.wessel@windriver.com\u003e\nCc: Martin Hicks \u003cmort@sgi.com\u003e\n"
    },
    {
      "commit": "2c02dfe7fe3fba97a5665d329d039d2415ea5607",
      "tree": "7f50644bbfcc119cb85e21642a76eabfaf77b8ad",
      "parents": [
        "ad8456361fa19068cf49b50a4f98e41b73c08e76"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon May 31 12:19:37 2010 -0700"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Sat Jun 05 11:17:35 2010 +0930"
      },
      "message": "module: Make the \u0027usage\u0027 lists be two-way\n\nWhen adding a module that depends on another one, we used to create a\none-way list of \"modules_which_use_me\", so that module unloading could\nsee who needs a module.\n\nIt\u0027s actually quite simple to make that list go both ways: so that we\nnot only can see \"who uses me\", but also see a list of modules that are\n\"used by me\".\n\nIn fact, we always wanted that list in \"module_unload_free()\": when we\nunload a module, we want to also release all the other modules that are\nused by that module.  But because we didn\u0027t have that list, we used to\nfirst iterate over all modules, and then iterate over each \"used by me\"\nlist of that module.\n\nBy making the list two-way, we simplify module_unload_free(), and it\nallows for some trivial fixes later too.\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e (cleaned \u0026 rebased)\n"
    },
    {
      "commit": "1f73897861b8ef0be64ff4b801f8d6f830f683b5",
      "tree": "b4bae8f12e1422113910d8cb00a19d010dc4a52f",
      "parents": [
        "b904d7131d116900524bd36ec170dcd97846bfd3",
        "64ffc9ff424c65adcffe7d590018cc75e2d5d42a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 01 08:55:52 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 01 08:55:52 2010 -0700"
      },
      "message": "Merge branch \u0027for-35\u0027 of git://repo.or.cz/linux-kbuild\n\n* \u0027for-35\u0027 of git://repo.or.cz/linux-kbuild: (81 commits)\n  kbuild: Revert part of e8d400a to resolve a conflict\n  kbuild: Fix checking of scm-identifier variable\n  gconfig: add support to show hidden options that have prompts\n  menuconfig: add support to show hidden options which have prompts\n  gconfig: remove show_debug option\n  gconfig: remove dbg_print_ptype() and dbg_print_stype()\n  kconfig: fix zconfdump()\n  kconfig: some small fixes\n  add random binaries to .gitignore\n  kbuild: Include gen_initramfs_list.sh and the file list in the .d file\n  kconfig: recalc symbol value before showing search results\n  .gitignore: ignore *.lzo files\n  headerdep: perlcritic warning\n  scripts/Makefile.lib: Align the output of LZO\n  kbuild: Generate modules.builtin in make modules_install\n  Revert \"kbuild: specify absolute paths for cscope\"\n  kbuild: Do not unnecessarily regenerate modules.builtin\n  headers_install: use local file handles\n  headers_check: fix perl warnings\n  export_report: fix perl warnings\n  ...\n"
    },
    {
      "commit": "293a7cfeedc2b2380a7c7274902323c3cf5f7575",
      "tree": "00576870400cb640fe92ea3f525338e6e3733a2e",
      "parents": [
        "67a3e12b05e055c0415c556a315a3d3eb637e29e"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon May 31 19:53:50 2010 +0930"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon May 31 11:21:32 2010 -0700"
      },
      "message": "module: fix reference to mod-\u003epercpu after freeing module.\n\nRafael sees a sometimes crash at precpu_modfree from kernel/module.c; it\nonly occurred with another (since-reverted) patch, but that patch simply\nchanged timing to uncover this bug, it was otherwise unrelated.\n\nThe comment about the mod being freed is self-explanatory, but neither\nTejun nor I read it.  This bug was introduced in 259354deaa, after it\nhad previously been fixed in 6e2b75740b.  How embarrassing.\n\nReported-by: \"Rafael J. Wysocki\" \u003crjw@sisk.pl\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nEmbarrassingly-Acked-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Masami Hiramatsu \u003cmhiramat@redhat.com\u003e\nTested-by: \"Rafael J. Wysocki\" \u003crjw@sisk.pl\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "218ce7351413b8287a80fab1d7b94906a5559f01",
      "tree": "36ba694491fa39fbde719b889a89cadbedd1f357",
      "parents": [
        "ec96e2fe954c23a54bfdf2673437a39e193a1822"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 25 16:48:30 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 25 16:48:30 2010 -0700"
      },
      "message": "Revert \"module: drop the lock while waiting for module to complete initialization.\"\n\nThis reverts commit 480b02df3aa9f07d1c7df0cd8be7a5ca73893455, since\nRafael reports that it causes occasional kernel paging request faults in\nload_module().\n\nDropping the module lock and re-taking it deep in the call-chain is\ndefinitely not the right thing to do.  That just turns the mutex from a\nlock into a \"random non-locking data structure\" that doesn\u0027t actually\nprotect what it\u0027s supposed to protect.\n\nRequested-and-tested-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Brandon Philips \u003cbrandon@ifup.org\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7d52669b14e36f8365070324be009486d387ad00",
      "tree": "ed8965175a485f340f3061855773ca34f1e4f586",
      "parents": [
        "aaa04b4875f30659a0eb429e0e5203ae7fb7b18e"
      ],
      "author": {
        "name": "Wenji Huang",
        "email": "wenji.huang@oracle.com",
        "time": "Mon May 24 14:33:12 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 25 08:07:04 2010 -0700"
      },
      "message": "module: remove duplicate declaration of __ksymtab_gpl_future\n\nMinor cleanup on duplicate __{start/stop}__ksymtab_gpl_future.\n\nSigned-off-by: Wenji Huang \u003cwenji.huang@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a8251096b427283c47e7d8f9568be6b388dd68ec",
      "tree": "edc9747e30b4b4413aa99acfbd3104d81b1c303b",
      "parents": [
        "27a3353a4525afe984f3b793681869d636136b69",
        "480b02df3aa9f07d1c7df0cd8be7a5ca73893455"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 21 17:15:44 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 21 17:15:44 2010 -0700"
      },
      "message": "Merge branch \u0027modules\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-for-linus\n\n* \u0027modules\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-for-linus:\n  module: drop the lock while waiting for module to complete initialization.\n  MODULE_DEVICE_TABLE(isapnp, ...) does nothing\n  hisax_fcpcipnp: fix broken isapnp device table.\n  isapnp: move definitions to mod_devicetable.h so file2alias can reach them.\n"
    }
  ],
  "next": "90b9a32d8f441369b2f97a765d2d957b531eb653"
}
