)]}'
{
  "log": [
    {
      "commit": "318af55ddd38bdaaa2b57f5c3bd394f3ce3a2610",
      "tree": "046eb0d15b7a0d0a02c3f454c0183e12f9d52d92",
      "parents": [
        "b17cd8d69a75f921d9d444cc3ac9b5b1d0b66ca0"
      ],
      "author": {
        "name": "Hans J. Koch",
        "email": "hjk@hansjkoch.de",
        "time": "Sat Oct 30 00:36:47 2010 +0200"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Nov 10 16:57:11 2010 -0800"
      },
      "message": "uio: Change mail address of Hans J. Koch\n\nMy old mail address doesn\u0027t exist anymore. This changes all occurrences\nto my new address.\n\nSigned-off-by: Hans J. Koch \u003chjk@hansjkoch.de\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n"
    },
    {
      "commit": "b9da0571050c09863e59f94d0b8594a290d61b88",
      "tree": "3632c4fee768db9a27a5c872bd42133692e2f3d0",
      "parents": [
        "f8cae0f03f75adb54b1d48ddbc90f84a1f5de186",
        "5abd935661e01289ba143c3b2c1ba300c65bcc5f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 19:36:42 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 19:36:42 2010 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6: (31 commits)\n  driver core: Display error codes when class suspend fails\n  Driver core: Add section count to memory_block struct\n  Driver core: Add mutex for adding/removing memory blocks\n  Driver core: Move find_memory_block routine\n  hpilo: Despecificate driver from iLO generation\n  driver core: Convert link_mem_sections to use find_memory_block_hinted.\n  driver core: Introduce find_memory_block_hinted which utilizes kset_find_obj_hinted.\n  kobject: Introduce kset_find_obj_hinted.\n  driver core: fix build for CONFIG_BLOCK not enabled\n  driver-core: base: change to new flag variable\n  sysfs: only access bin file vm_ops with the active lock\n  sysfs: Fail bin file mmap if vma close is implemented.\n  FW_LOADER: fix kconfig dependency warning on HOTPLUG\n  uio: Statically allocate uio_class and use class .dev_attrs.\n  uio: Support 2^MINOR_BITS minors\n  uio: Cleanup irq handling.\n  uio: Don\u0027t clear driver data\n  uio: Fix lack of locking in init_uio_class\n  SYSFS: Allow boot time switching between deprecated and modern sysfs layout\n  driver core: remove CONFIG_SYSFS_DEPRECATED_V2 but keep it for block devices\n  ...\n"
    },
    {
      "commit": "c66fdab64fd791bdd49fed4f5785643251ddf586",
      "tree": "2d75b8ce0d1566f173511fc439b6f096bf30d9ca",
      "parents": [
        "91960a46c658b719c03fba80f1c60a96393bbcfd"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@aristanetworks.com",
        "time": "Tue Sep 14 11:38:36 2010 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Fri Oct 22 10:16:43 2010 -0700"
      },
      "message": "uio: Statically allocate uio_class and use class .dev_attrs.\n\nInstead of adding uio class attributes manually after the uio device has\nbeen created and we have sent a uevent to userspace, use the class\nattribute mechanism.  This removes races and makes the code simpler.\n\nAt the same time don\u0027t bother to dynamically allocate a struct class for\nuio, just declare one statically.  Less code is needed and it is easier\nto set the class parameters.tune the class\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@aristanetworks.com\u003e\nReviewed-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Hans J. Koch \u003chjk@linutronix.de\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "91960a46c658b719c03fba80f1c60a96393bbcfd",
      "tree": "ffa50ea8eeddd9105dff834877ed594cf71ce697",
      "parents": [
        "6427a7655afd7f07dfa83736defd1d94656c83e5"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@aristanetworks.com",
        "time": "Tue Sep 14 11:38:06 2010 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Fri Oct 22 10:16:43 2010 -0700"
      },
      "message": "uio: Support 2^MINOR_BITS minors\n\nregister_chrdev limits uio devices to 256 minor numbers which causes\nproblems on one system I have with 384+ uio devices.  So instead set\nUIO_MAX_DEVICES to the maximum number of minors and use\nalloc_chrdev_region to reserve the uio minors.\n\nThe final result is that the code works the same but the uio driver now\nsupports any minor the idr allocator comes up with.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@aristanetworks.com\u003e\nReviewed-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Hans J. Koch \u003chjk@linutronix.de\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "6427a7655afd7f07dfa83736defd1d94656c83e5",
      "tree": "248b7db4c38f5f537a57f62dd099097fd1233c27",
      "parents": [
        "70a9156bad9d9d1476df35dde582b9f411bf5914"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@aristanetworks.com",
        "time": "Tue Sep 14 11:37:36 2010 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Fri Oct 22 10:16:43 2010 -0700"
      },
      "message": "uio: Cleanup irq handling.\n\nChange the value of UIO_IRQ_NONE -2 to 0.  0 is well defined in the rest\nof the kernel as the value to indicate an irq has not been assigned.\n\nUpdate the calls to request_irq and free_irq to only ignore UIO_IRQ_NONE\nand UIO_IRQ_CUSTOM allowing the rest of the kernel\u0027s possible irq\nnumbers to be used.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@aristanetworks.com\u003e\nReviewed-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Hans J. Koch \u003chjk@linutronix.de\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "70a9156bad9d9d1476df35dde582b9f411bf5914",
      "tree": "e44b2b21f59375eedd0431a1ea31aa26b4f602dd",
      "parents": [
        "3d4f9d76b0641b7984f95982e390927fc5998ad6"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@aristanetworks.com",
        "time": "Tue Sep 14 11:36:54 2010 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Fri Oct 22 10:16:43 2010 -0700"
      },
      "message": "uio: Don\u0027t clear driver data\n\nCurrently uio sets it\u0027s driver data to NULL just as it is unregistering\nattributes.  sysfs maks the guaranatee that it will not call attributes\nafter device_destroy is called so this is unncessary and leads to lots\nof unnecessary code in uio.c\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@aristanetworks.com\u003e\nReviewed-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Hans J. Koch \u003chjk@linutronix.de\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "3d4f9d76b0641b7984f95982e390927fc5998ad6",
      "tree": "7f57194438afcfe364fc507b359840b65c63d203",
      "parents": [
        "e52eec13cd6b7f30ab19081b387813e03e592ae5"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@aristanetworks.com",
        "time": "Tue Sep 14 11:36:27 2010 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Fri Oct 22 10:16:43 2010 -0700"
      },
      "message": "uio: Fix lack of locking in init_uio_class\n\nThere is no locking in init_uio_class so multiple\ndrivers can race and create multiple uio classes.\n\nFix this by simplifying the code.   In particular always\nregister the uio class during module_init and make things\nsimpler.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@aristanetworks.com\u003e\nReviewed-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Hans J. Koch \u003chjk@linutronix.de\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "6038f373a3dc1f1c26496e60b6c40b164716f07e",
      "tree": "a0d3bbd026eea41b9fc36b8c722cbaf56cd9f825",
      "parents": [
        "1ec5584e3edf9c4bf2c88c846534d19cf986ba11"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Sun Aug 15 18:52:59 2010 +0200"
      },
      "committer": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Fri Oct 15 15:53:27 2010 +0200"
      },
      "message": "llseek: automatically add .llseek fop\n\nAll file_operations should get a .llseek operation so we can make\nnonseekable_open the default for future file operations without a\n.llseek pointer.\n\nThe three cases that we can automatically detect are no_llseek, seq_lseek\nand default_llseek. For cases where we can we can automatically prove that\nthe file offset is always ignored, we use noop_llseek, which maintains\nthe current behavior of not returning an error from a seek.\n\nNew drivers should normally not use noop_llseek but instead use no_llseek\nand call nonseekable_open at open time.  Existing drivers can be converted\nto do the same when the maintainer knows for certain that no user code\nrelies on calling seek on the device file.\n\nThe generated code is often incorrectly indented and right now contains\ncomments that clarify for each added line why a specific variant was\nchosen. In the version that gets submitted upstream, the comments will\nbe gone and I will manually fix the indentation, because there does not\nseem to be a way to do that using coccinelle.\n\nSome amount of new code is currently sitting in linux-next that should get\nthe same modifications, which I will do at the end of the merge window.\n\nMany thanks to Julia Lawall for helping me learn to write a semantic\npatch that does all this.\n\n\u003d\u003d\u003d\u003d\u003d begin semantic patch \u003d\u003d\u003d\u003d\u003d\n// This adds an llseek\u003d method to all file operations,\n// as a preparation for making no_llseek the default.\n//\n// The rules are\n// - use no_llseek explicitly if we do nonseekable_open\n// - use seq_lseek for sequential files\n// - use default_llseek if we know we access f_pos\n// - use noop_llseek if we know we don\u0027t access f_pos,\n//   but we still want to allow users to call lseek\n//\n@ open1 exists @\nidentifier nested_open;\n@@\nnested_open(...)\n{\n\u003c+...\nnonseekable_open(...)\n...+\u003e\n}\n\n@ open exists@\nidentifier open_f;\nidentifier i, f;\nidentifier open1.nested_open;\n@@\nint open_f(struct inode *i, struct file *f)\n{\n\u003c+...\n(\nnonseekable_open(...)\n|\nnested_open(...)\n)\n...+\u003e\n}\n\n@ read disable optional_qualifier exists @\nidentifier read_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\nexpression E;\nidentifier func;\n@@\nssize_t read_f(struct file *f, char *p, size_t s, loff_t *off)\n{\n\u003c+...\n(\n   *off \u003d E\n|\n   *off +\u003d E\n|\n   func(..., off, ...)\n|\n   E \u003d *off\n)\n...+\u003e\n}\n\n@ read_no_fpos disable optional_qualifier exists @\nidentifier read_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\n@@\nssize_t read_f(struct file *f, char *p, size_t s, loff_t *off)\n{\n... when !\u003d off\n}\n\n@ write @\nidentifier write_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\nexpression E;\nidentifier func;\n@@\nssize_t write_f(struct file *f, const char *p, size_t s, loff_t *off)\n{\n\u003c+...\n(\n  *off \u003d E\n|\n  *off +\u003d E\n|\n  func(..., off, ...)\n|\n  E \u003d *off\n)\n...+\u003e\n}\n\n@ write_no_fpos @\nidentifier write_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\n@@\nssize_t write_f(struct file *f, const char *p, size_t s, loff_t *off)\n{\n... when !\u003d off\n}\n\n@ fops0 @\nidentifier fops;\n@@\nstruct file_operations fops \u003d {\n ...\n};\n\n@ has_llseek depends on fops0 @\nidentifier fops0.fops;\nidentifier llseek_f;\n@@\nstruct file_operations fops \u003d {\n...\n .llseek \u003d llseek_f,\n...\n};\n\n@ has_read depends on fops0 @\nidentifier fops0.fops;\nidentifier read_f;\n@@\nstruct file_operations fops \u003d {\n...\n .read \u003d read_f,\n...\n};\n\n@ has_write depends on fops0 @\nidentifier fops0.fops;\nidentifier write_f;\n@@\nstruct file_operations fops \u003d {\n...\n .write \u003d write_f,\n...\n};\n\n@ has_open depends on fops0 @\nidentifier fops0.fops;\nidentifier open_f;\n@@\nstruct file_operations fops \u003d {\n...\n .open \u003d open_f,\n...\n};\n\n// use no_llseek if we call nonseekable_open\n////////////////////////////////////////////\n@ nonseekable1 depends on !has_llseek \u0026\u0026 has_open @\nidentifier fops0.fops;\nidentifier nso ~\u003d \"nonseekable_open\";\n@@\nstruct file_operations fops \u003d {\n...  .open \u003d nso, ...\n+.llseek \u003d no_llseek, /* nonseekable */\n};\n\n@ nonseekable2 depends on !has_llseek @\nidentifier fops0.fops;\nidentifier open.open_f;\n@@\nstruct file_operations fops \u003d {\n...  .open \u003d open_f, ...\n+.llseek \u003d no_llseek, /* open uses nonseekable */\n};\n\n// use seq_lseek for sequential files\n/////////////////////////////////////\n@ seq depends on !has_llseek @\nidentifier fops0.fops;\nidentifier sr ~\u003d \"seq_read\";\n@@\nstruct file_operations fops \u003d {\n...  .read \u003d sr, ...\n+.llseek \u003d seq_lseek, /* we have seq_read */\n};\n\n// use default_llseek if there is a readdir\n///////////////////////////////////////////\n@ fops1 depends on !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier readdir_e;\n@@\n// any other fop is used that changes pos\nstruct file_operations fops \u003d {\n... .readdir \u003d readdir_e, ...\n+.llseek \u003d default_llseek, /* readdir is present */\n};\n\n// use default_llseek if at least one of read/write touches f_pos\n/////////////////////////////////////////////////////////////////\n@ fops2 depends on !fops1 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier read.read_f;\n@@\n// read fops use offset\nstruct file_operations fops \u003d {\n... .read \u003d read_f, ...\n+.llseek \u003d default_llseek, /* read accesses f_pos */\n};\n\n@ fops3 depends on !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier write.write_f;\n@@\n// write fops use offset\nstruct file_operations fops \u003d {\n... .write \u003d write_f, ...\n+\t.llseek \u003d default_llseek, /* write accesses f_pos */\n};\n\n// Use noop_llseek if neither read nor write accesses f_pos\n///////////////////////////////////////////////////////////\n\n@ fops4 depends on !fops1 \u0026\u0026 !fops2 \u0026\u0026 !fops3 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier read_no_fpos.read_f;\nidentifier write_no_fpos.write_f;\n@@\n// write fops use offset\nstruct file_operations fops \u003d {\n...\n .write \u003d write_f,\n .read \u003d read_f,\n...\n+.llseek \u003d noop_llseek, /* read and write both use no f_pos */\n};\n\n@ depends on has_write \u0026\u0026 !has_read \u0026\u0026 !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier write_no_fpos.write_f;\n@@\nstruct file_operations fops \u003d {\n... .write \u003d write_f, ...\n+.llseek \u003d noop_llseek, /* write uses no f_pos */\n};\n\n@ depends on has_read \u0026\u0026 !has_write \u0026\u0026 !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier read_no_fpos.read_f;\n@@\nstruct file_operations fops \u003d {\n... .read \u003d read_f, ...\n+.llseek \u003d noop_llseek, /* read uses no f_pos */\n};\n\n@ depends on !has_read \u0026\u0026 !has_write \u0026\u0026 !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\n@@\nstruct file_operations fops \u003d {\n...\n+.llseek \u003d noop_llseek, /* no read or write fn */\n};\n\u003d\u003d\u003d\u003d\u003d End semantic patch \u003d\u003d\u003d\u003d\u003d\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nCc: Julia Lawall \u003cjulia@diku.dk\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\n"
    },
    {
      "commit": "5a0e3ad6af8660be21ca98a971cd00f331318c05",
      "tree": "5bfb7be11a03176a87296a43ac6647975c00a1d1",
      "parents": [
        "ed391f4ebf8f701d3566423ce8f17e614cde9806"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 24 17:04:11 2010 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Mar 30 22:02:32 2010 +0900"
      },
      "message": "include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h\n\npercpu.h is included by sched.h and module.h and thus ends up being\nincluded when building most .c files.  percpu.h includes slab.h which\nin turn includes gfp.h making everything defined by the two files\nuniversally available and complicating inclusion dependencies.\n\npercpu.h -\u003e slab.h dependency is about to be removed.  Prepare for\nthis change by updating users of gfp and slab facilities include those\nheaders directly instead of assuming availability.  As this conversion\nneeds to touch large number of source files, the following script is\nused as the basis of conversion.\n\n  http://userweb.kernel.org/~tj/misc/slabh-sweep.py\n\nThe script does the followings.\n\n* Scan files for gfp and slab usages and update includes such that\n  only the necessary includes are there.  ie. if only gfp is used,\n  gfp.h, if slab is used, slab.h.\n\n* When the script inserts a new include, it looks at the include\n  blocks and try to put the new include such that its order conforms\n  to its surrounding.  It\u0027s put in the include block which contains\n  core kernel includes, in the same order that the rest are ordered -\n  alphabetical, Christmas tree, rev-Xmas-tree or at the end if there\n  doesn\u0027t seem to be any matching order.\n\n* If the script can\u0027t find a place to put a new include (mostly\n  because the file doesn\u0027t have fitting include block), it prints out\n  an error message indicating which .h file needs to be added to the\n  file.\n\nThe conversion was done in the following steps.\n\n1. The initial automatic conversion of all .c files updated slightly\n   over 4000 files, deleting around 700 includes and adding ~480 gfp.h\n   and ~3000 slab.h inclusions.  The script emitted errors for ~400\n   files.\n\n2. Each error was manually checked.  Some didn\u0027t need the inclusion,\n   some needed manual addition while adding it to implementation .h or\n   embedding .c file was more appropriate for others.  This step added\n   inclusions to around 150 files.\n\n3. The script was run again and the output was compared to the edits\n   from #2 to make sure no file was left behind.\n\n4. Several build tests were done and a couple of problems were fixed.\n   e.g. lib/decompress_*.c used malloc/free() wrappers around slab\n   APIs requiring slab.h to be added manually.\n\n5. The script was run on all .h files but without automatically\n   editing them as sprinkling gfp.h and slab.h inclusions around .h\n   files could easily lead to inclusion dependency hell.  Most gfp.h\n   inclusion directives were ignored as stuff from gfp.h was usually\n   wildly available and often used in preprocessor macros.  Each\n   slab.h inclusion directive was examined and added manually as\n   necessary.\n\n6. percpu.h was updated not to include slab.h.\n\n7. Build test were done on the following configurations and failures\n   were fixed.  CONFIG_GCOV_KERNEL was turned off for all tests (as my\n   distributed build env didn\u0027t work with gcov compiles) and a few\n   more options had to be turned off depending on archs to make things\n   build (like ipr on powerpc/64 which failed due to missing writeq).\n\n   * x86 and x86_64 UP and SMP allmodconfig and a custom test config.\n   * powerpc and powerpc64 SMP allmodconfig\n   * sparc and sparc64 SMP allmodconfig\n   * ia64 SMP allmodconfig\n   * s390 SMP allmodconfig\n   * alpha SMP allmodconfig\n   * um on x86_64 SMP allmodconfig\n\n8. percpu.h modifications were reverted so that it could be applied as\n   a separate patch and serve as bisection point.\n\nGiven the fact that I had only a couple of failures from tests on step\n6, I\u0027m fairly confident about the coverage of this conversion patch.\nIf there is a breakage, it\u0027s likely to be something in one of the arch\nheaders which should be easily discoverable easily on most builds of\nthe specific arch.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nGuess-its-ok-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\n"
    },
    {
      "commit": "52cf25d0ab7f78eeecc59ac652ed5090f69b619e",
      "tree": "031d1ffb3890bd69c0260c864c512e0be62ac05c",
      "parents": [
        "6c1733aca0b48db4d0e660d54976a1cca25b5eaf"
      ],
      "author": {
        "name": "Emese Revfy",
        "email": "re.emese@gmail.com",
        "time": "Tue Jan 19 02:58:23 2010 +0100"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Sun Mar 07 17:04:49 2010 -0800"
      },
      "message": "Driver core: Constify struct sysfs_ops in struct kobj_type\n\nConstify struct sysfs_ops.\n\nThis is part of the ops structure constification\neffort started by Arjan van de Ven et al.\n\nBenefits of this constification:\n\n * prevents modification of data that is shared\n   (referenced) by many other structure instances\n   at runtime\n\n * detects/prevents accidental (but not intentional)\n   modification attempts on archs that enforce\n   read-only kernel data at runtime\n\n * potentially better optimized code as the compiler\n   can assume that the const data cannot be changed\n\n * the compiler/linker move const data into .rodata\n   and therefore exclude them from false sharing\n\nSigned-off-by: Emese Revfy \u003cre.emese@gmail.com\u003e\nAcked-by: David Teigland \u003cteigland@redhat.com\u003e\nAcked-by: Matt Domsch \u003cMatt_Domsch@dell.com\u003e\nAcked-by: Maciej Sosnowski \u003cmaciej.sosnowski@intel.com\u003e\nAcked-by: Hans J. Koch \u003chjk@linutronix.de\u003e\nAcked-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nAcked-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nAcked-by: Stephen Hemminger \u003cshemminger@vyatta.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "d43c36dc6b357fa1806800f18aa30123c747a6d1",
      "tree": "339ce510073ecbe9b3592008f7dece7b277035ef",
      "parents": [
        "69585dd69e663a40729492c7b52eb82477a2027a"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Wed Oct 07 17:09:06 2009 +0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Oct 11 11:20:58 2009 -0700"
      },
      "message": "headers: remove sched.h from interrupt.h\n\nAfter m68k\u0027s task_thread_info() doesn\u0027t refer to current,\nit\u0027s possible to remove sched.h from interrupt.h and not break m68k!\nMany thanks to Heiko Carstens for allowing this.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\n"
    },
    {
      "commit": "f0f37e2f77731b3473fa6bd5ee53255d9a9cdb40",
      "tree": "3c26d3ed1a453156e9c208ccb5567a8954dba064",
      "parents": [
        "6f5071020d5ec89b5d095aa488db604adb921aec"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Sun Sep 27 22:29:37 2009 +0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Sep 27 11:39:25 2009 -0700"
      },
      "message": "const: mark struct vm_struct_operations\n\n* mark struct vm_area_struct::vm_ops as const\n* mark vm_ops in AGP code\n\nBut leave TTM code alone, something is fishy there with global vm_ops\nbeing used.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6da2d377bba06c29d0bc41c8dee014164dec82a7",
      "tree": "46bdf19836227b27c4548431ec7cea5eeb2a8a08",
      "parents": [
        "1bafeb378e915f39b1bf44ee0871823d6f402ea5"
      ],
      "author": {
        "name": "Ian Abbott",
        "email": "abbotti@mev.co.uk",
        "time": "Tue Feb 24 17:22:59 2009 +0000"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Tue Mar 24 16:38:25 2009 -0700"
      },
      "message": "UIO: Take offset into account when determining number of pages that can be mapped\n\nIf a UIO memory region does not start on a page boundary but straddles one,\nthe number of actual pages that overlap the memory region may be calculated\nincorrectly because the offset isn\u0027t taken into account.  If userspace sets\nthe mmap length to offset+size, it may fail with -EINVAL if UIO thinks it\u0027s\ntrying to allocate too many pages.\n\nSigned-off-by: Ian Abbott \u003cabbotti@mev.co.uk\u003e\nCc: Hans J. Koch \u003chjk@linutronix.de\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "8205779114e8f612549d191f8e151526a74ab9f2",
      "tree": "fd26913320500193bd4078da0c164f9407aed47b",
      "parents": [
        "57fee4a58fe802272742caae248872c392a60670"
      ],
      "author": {
        "name": "Hans J. Koch",
        "email": "hjk@linutronix.de",
        "time": "Wed Jan 07 00:15:39 2009 +0100"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Tue Mar 24 16:38:24 2009 -0700"
      },
      "message": "UIO: Add name attributes for mappings and port regions\n\nIf a UIO device has several memory mappings, it can be difficult for userspace\nto find the right one. The situation becomes even worse if the UIO driver can\nhandle different versions of a card that have different numbers of mappings.\nBenedikt Spranger has such cards and pointed this out to me. Thanks, Bene!\n\nTo address this problem, this patch adds \"name\" sysfs attributes for each\nmapping. Userspace can use these to clearly identify each mapping. The name\nstring is optional. If a driver doesn\u0027t set it, an empty string will be\nreturned, so this patch won\u0027t break existing drivers.\n\nThe same problem exists for port region information, so a \"name\" attribute is\nadded there, too.\n\nSigned-off-by: Hans J. Koch \u003chjk@linutronix.de\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "e70c412ee45332db2636a8f5a35a0685efb0e4aa",
      "tree": "98340f89baa09af04f67f4be5184363c54f2ef2f",
      "parents": [
        "e543ae896626a54c0c05e3c434312d6d033d450c"
      ],
      "author": {
        "name": "Hans J. Koch",
        "email": "hjk@linutronix.de",
        "time": "Sat Dec 06 02:23:13 2008 +0100"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Tue Jan 06 10:44:44 2009 -0800"
      },
      "message": "UIO: Pass information about ioports to userspace (V2)\n\nDevices sometimes have memory where all or parts of it can not be mapped to\nuserspace. But it might still be possible to access this memory from\nuserspace by other means. An example are PCI cards that advertise not only\nmappable memory but also ioport ranges. On x86 architectures, these can be\naccessed with ioperm, iopl, inb, outb, and friends. Mike Frysinger (CCed)\nreported a similar problem on Blackfin arch where it doesn\u0027t seem to be easy\nto mmap non-cached memory but it can still be accessed from userspace.\n\nThis patch allows kernel drivers to pass information about such ports to\nuserspace. Similar to the existing mem[] array, it adds a port[] array to\nstruct uio_info. Each port range is described by start, size, and porttype.\n\nIf a driver fills in at least one such port range, the UIO core will simply\npass this information to userspace by creating a new directory \"portio\"\nunderneath /sys/class/uio/uioN/. Similar to the \"mem\" directory, it will\ncontain a subdirectory (portX) for each port range given.\n\nNote that UIO simply passes this information to userspace, it performs no\naction whatsoever with this data. It\u0027s userspace\u0027s responsibility to obtain\naccess to these ports and to solve arch dependent issues. The \"porttype\"\nattribute tells userspace what kind of port it is dealing with.\n\nThis mechanism could also be used to give userspace information about GPIOs\nrelated to a device. You frequently find such hardware in embedded devices,\nso I added a UIO_PORT_GPIO definition. I\u0027m not really sure if this is a good\nidea since there are other solutions to this problem, but it won\u0027t hurt much\nanyway.\n\nSigned-off-by: Hans J. Koch \u003chjk@linutronix.de\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "233e70f4228e78eb2f80dc6650f65d3ae3dbf17c",
      "tree": "4e18fbe1851e6d2161b7f18265cb21f8a61e3ce7",
      "parents": [
        "3318a386e4ca68c76e0294363d29bdc46fcad670"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@ZenIV.linux.org.uk",
        "time": "Fri Oct 31 23:28:30 2008 +0000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Nov 01 09:49:46 2008 -0700"
      },
      "message": "saner FASYNC handling on file close\n\nAs it is, all instances of -\u003erelease() for files that have -\u003efasync()\nneed to remember to evict file from fasync lists; forgetting that\ncreates a hole and we actually have a bunch that *does* forget.\n\nSo let\u0027s keep our lives simple - let __fput() check FASYNC in\nfile-\u003ef_flags and call -\u003efasync() there if it\u0027s been set.  And lose that\ncrap in -\u003erelease() instances - leaving it there is still valid, but we\ndon\u0027t have to bother anymore.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2bea2e4abf2fe8bc7384103aeaad91089109cfba",
      "tree": "3f7cf9712fa8998213bf2f7ed97b40e65946cd92",
      "parents": [
        "a0bfb673dca8a2b4324fe11e678ec6d6a9ad67e0",
        "0d4a7bc12ffecd3ba41dd94179cc5b272b71ce8a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 13:42:14 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 13:42:14 2008 -0700"
      },
      "message": "Merge branch \u0027bkl-removal\u0027 of git://git.lwn.net/linux-2.6\n\n* \u0027bkl-removal\u0027 of git://git.lwn.net/linux-2.6:\n  UIO: BKL removal\n"
    },
    {
      "commit": "0d4a7bc12ffecd3ba41dd94179cc5b272b71ce8a",
      "tree": "40fb095468564e1bcd64ee9a01ac409406cc36d3",
      "parents": [
        "3fa8749e584b55f1180411ab1b51117190bac1e5"
      ],
      "author": {
        "name": "Jonathan Corbet",
        "email": "corbet@lwn.net",
        "time": "Tue Aug 26 17:15:45 2008 -0600"
      },
      "committer": {
        "name": "Jonathan Corbet",
        "email": "corbet@lwn.net",
        "time": "Thu Oct 16 12:32:26 2008 -0600"
      },
      "message": "UIO: BKL removal\n\nFill in needed locking around idr accesses, then remove the big kernel lock\nfrom the UIO driver.  Since there are no in-tree UIO drivers with open()\nmethods, no further BKL pushdown is required.\n\nAcked-by: Hans J. Koch \u003chjk@linutronix.de\u003e\nAcked-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\nSigned-off-by: Jonathan Corbet \u003ccorbet@lwn.net\u003e\n"
    },
    {
      "commit": "02683ffdf655b4ae15245376ba6fea6d9e5829a6",
      "tree": "9b66a97df10db3d09be94e90b90f1e3b6eaa4934",
      "parents": [
        "a6030fcc608bd333c80eab3bfc72f63906476c61"
      ],
      "author": {
        "name": "Andrew G. Harvey",
        "email": "agh@cisco.com",
        "time": "Wed Sep 24 01:10:02 2008 +0200"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Thu Oct 16 09:24:54 2008 -0700"
      },
      "message": "UIO: Fix mapping of logical and virtual memory\n\nmmap() doesn\u0027t work as expected for UIO_MEM_LOGICAL or UIO_MEM_VIRTUAL\nmappings. The offset into the memory needs to be added, otherwise\nuio_vma_fault always returns the first page only. Note that for UIO\nuserspace calls mmap() with offset \u003d N * getpagesize() to access\nmapping N. This must be compensated when calculating the offset. A\ncomment was added to explain this since it is not obvious.\n\nSigned-off-by: Andrew G. Harvey \u003cagh@cisco.com\u003e\nSigned-off-by: Hans J. Koch \u003chjk@linutronix.de\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "e2b39df119712ea5184562a6a14696a5cea8ef18",
      "tree": "b855a7b4e8893df122c96c69976d37a1a563492e",
      "parents": [
        "99178b036c97293a65004ff5ec5cff9f833aaecd"
      ],
      "author": {
        "name": "Hans J. Koch",
        "email": "hjk@linutronix.de",
        "time": "Thu Sep 18 23:53:18 2008 +0200"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Thu Oct 16 09:24:53 2008 -0700"
      },
      "message": "UIO: Add alignment warnings for uio-mem\n\nThis patch adds an \"offset\" attribute for UIO mappings. It shows the\ndifference between the actual start address of the memory and the start\naddress of the page.\n\nSigned-off-by: Hans J. Koch \u003chjk@linutronix.de\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "a9b12619f7b6f19c871437ec24a088787a04b1de",
      "tree": "ff1b11e7affedccfd69fc20e14876d0821f6e555",
      "parents": [
        "91bd418fdc8526ee70a0e8f7970b584c8870ae10"
      ],
      "author": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Mon Jul 21 20:03:34 2008 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Thu Oct 16 09:24:43 2008 -0700"
      },
      "message": "device create: misc: convert device_create_drvdata to device_create\n\nNow that device_create() has been audited, rename things back to the\noriginal call to be sane.\n\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "328a14e70e7f46997cb50d4258dd93d5377f98c6",
      "tree": "7cc64b122fc45af454d4dde9f561b329d9f2b0c4",
      "parents": [
        "934da4766e5f72797118f7c014efaef567a812fc"
      ],
      "author": {
        "name": "Hans J. Koch",
        "email": "hjk@linutronix.de",
        "time": "Fri May 23 13:50:14 2008 +0200"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Mon Jul 21 21:54:55 2008 -0700"
      },
      "message": "UIO: Add write function to allow irq masking\n\nSometimes it is necessary to enable/disable the interrupt of a UIO device\nfrom the userspace part of the driver. With this patch, the UIO kernel driver\ncan implement an \"irqcontrol()\" function that does this. Userspace can write\nan s32 value to /dev/uioX (usually 0 or 1 to turn the irq off or on). The\nUIO core will then call the driver\u0027s irqcontrol function.\n\nSigned-off-by: Hans J. Koch \u003chjk@linutronix.de\u003e\nAcked-by: Uwe Kleine-König \u003cUwe.Kleine-Koenig@digi.com\u003e\nAcked-by: Magnus Damm \u003cdamm@igel.co.jp\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "2fceef397f9880b212a74c418290ce69e7ac00eb",
      "tree": "d9cc09ab992825ef7fede4a688103503e3caf655",
      "parents": [
        "feae1ef116ed381625d3731c5ae4f4ebcb3fa302",
        "bce7f793daec3e65ec5c5705d2457b81fe7b5725"
      ],
      "author": {
        "name": "Jonathan Corbet",
        "email": "corbet@lwn.net",
        "time": "Mon Jul 14 15:29:34 2008 -0600"
      },
      "committer": {
        "name": "Jonathan Corbet",
        "email": "corbet@lwn.net",
        "time": "Mon Jul 14 15:29:34 2008 -0600"
      },
      "message": "Merge commit \u0027v2.6.26\u0027 into bkl-removal\n"
    },
    {
      "commit": "fbc8a81d66bbbce3f0b4d5752f8bc8bb3c1fc439",
      "tree": "7a96eba56ea94a4b2a6ce95f4ad4d8ced0960ed9",
      "parents": [
        "2edbf8537edc62c9b0ef75e7025d01e8b6a48707"
      ],
      "author": {
        "name": "Jonathan Corbet",
        "email": "corbet@lwn.net",
        "time": "Thu May 15 10:39:37 2008 -0600"
      },
      "committer": {
        "name": "Jonathan Corbet",
        "email": "corbet@lwn.net",
        "time": "Fri Jun 20 14:05:47 2008 -0600"
      },
      "message": "UIO: cdev lock_kernel() pushdown\n\nSigned-off-by: Jonathan Corbet \u003ccorbet@lwn.net\u003e\n"
    },
    {
      "commit": "43691da4cefcf0d0dd6432f9e7e0dba902b59597",
      "tree": "515f8f2088b674f4e71d7286746a7e7f0e9317e1",
      "parents": [
        "54d29ad33e3483bcc7ca433a21cf294854e5154a"
      ],
      "author": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Fri May 16 17:55:12 2008 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Tue May 20 13:31:55 2008 -0700"
      },
      "message": "UIO: fix race in device_create\n\nThere is a race from when a device is created with device_create() and\nthen the drvdata is set with a call to dev_set_drvdata() in which a\nsysfs file could be open, yet the drvdata will be NULL, causing all\nsorts of bad things to happen.\n\nThis patch fixes the problem by using the new function,\ndevice_create_drvdata().\n\nCc: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nCc: Hans J. Koch \u003chjk@linutronix.de\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "610ad5064cb90aec35f5837bbde3d316fe02aca7",
      "tree": "7c254ffa06ebd33b5a5b40dc28147eeba615d374",
      "parents": [
        "b54f2863a26d2b7c002d96abcde149940733c8e6"
      ],
      "author": {
        "name": "Uwe Kleine-König",
        "email": "Uwe.Kleine-Koenig@digi.com",
        "time": "Fri Apr 11 11:07:39 2008 +0200"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Sat Apr 19 19:10:18 2008 -0700"
      },
      "message": "UIO: hold a reference to the device\u0027s owner while the device is open\n\nOtherwise the device might just disappear while /dev/uioX is being used\nwhich results in an Oops.\n\nSigned-off-by: Uwe Kleine-König \u003cUwe.Kleine-Koenig@digi.com\u003e\nSigned-off-by: Hans J Koch \u003chjk@linutronix.de\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "c9698d6b1a90929e427a165bd8283f803f57d9bd",
      "tree": "d73c313d4fb05014ce5cf593c97d0ee44cdc5cd3",
      "parents": [
        "7c12c92fba4bd985ed6d909e5537468b268dcaa4"
      ],
      "author": {
        "name": "Jean-Samuel Chenard",
        "email": "jsamch@gmail.com",
        "time": "Fri Mar 14 11:28:36 2008 +0100"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Mon Mar 24 22:33:49 2008 -0700"
      },
      "message": "UIO: add pgprot_noncached() to UIO mmap code\n\nMapping of physical memory in UIO needs pgprot_noncached() to ensure\nthat IO memory is not cached. Without pgprot_noncached(), it (accidentally)\nworks on x86 and arm, but fails on PPC.\n\nSigned-off-by: Jean-Samuel Chenard \u003cjsamch@gmail.com\u003e\nSigned-off-by: Hans J Koch \u003chjk@linutronix.de\u003e\nCc: stable \u003cstable@kernel.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "4f808bcdf8dcf1f1ecd028f6d5c5347db4cddc54",
      "tree": "5b0e9e6a543ae3911ddba263a64864d05e14e235",
      "parents": [
        "46cdf871d9970b9252469531f9efd4a17243bb0b"
      ],
      "author": {
        "name": "Brandon Philips",
        "email": "brandon@ifup.org",
        "time": "Tue Feb 19 01:55:05 2008 -0800"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Thu Feb 21 15:27:07 2008 -0800"
      },
      "message": "UIO: fix Greg\u0027s stupid changes\n\nThis fixes two bugs with UIO that cropped up recently in -rc1\n\n1) WARNING: at fs/sysfs/file.c:334 sysfs_open_file when trying to open\n   a map addr/size file - complaining about missing sysfs_ops for ktype\n\n2) Permission denied when reading uio/uio0/maps/map0/{addr,size} when\n   files are mode S_IRUGO\n\nAlso fix a typo: attr_attribute -\u003e addr_attribute\n\nSigned-off-by: Brandon Philips \u003cbphilips@suse.de\u003e\nSigned-off-by: Hans J. Koch \u003chjk@linutronix.de\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "a18b630d1becdf1a087de644fea080c1977bcf10",
      "tree": "1972b084c14bfe46eeba0c05270aa45b3225619c",
      "parents": [
        "a1e096129bff79ae551592539bef19bfb5c9efa1"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Wed Feb 06 01:37:35 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Feb 06 10:41:07 2008 -0800"
      },
      "message": "uio: nopage\n\nConvert uio from nopage to fault.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nAcked-by: Hans J Koch \u003chjk@linutronix.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4f0146919be6bff47b5ea97252bcec0286e4dd19",
      "tree": "f7c8f8fe40b81451e4fda1289984a41e96438cce",
      "parents": [
        "ae72cddb2338bc36b991674a56a7bf70ae104d9e"
      ],
      "author": {
        "name": "Jan Engelhardt",
        "email": "jengelh@computergmbh.de",
        "time": "Tue Jan 22 20:50:54 2008 +0100"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Thu Jan 24 20:40:43 2008 -0800"
      },
      "message": "UIO: constify function pointer tables\n\nSigned-off-by: Jan Engelhardt \u003cjengelh@computergmbh.de\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "c10997f6575f476ff38442fa18fd4a0d80345f9d",
      "tree": "9b2bb7e647bd39fb80f23d7a6b34bf2587d660a7",
      "parents": [
        "38a382ae5dd4f4d04e3046816b0a41836094e538"
      ],
      "author": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Thu Dec 20 08:13:05 2007 -0800"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Thu Jan 24 20:40:40 2008 -0800"
      },
      "message": "Kobject: convert drivers/* from kobject_unregister() to kobject_put()\n\nThere is no need for kobject_unregister() anymore, thanks to Kay\u0027s\nkobject cleanup changes, so replace all instances of it with\nkobject_put().\n\n\nCc: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "f9cb074bff8e762ef24c44678a5a7d907f82fbeb",
      "tree": "50438fc90b8f6170dd8eb5d43712c61719a16304",
      "parents": [
        "e1543ddf739b22a8c4218716ad50c26b3e147403"
      ],
      "author": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Mon Dec 17 23:05:35 2007 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Thu Jan 24 20:40:38 2008 -0800"
      },
      "message": "Kobject: rename kobject_init_ng() to kobject_init()\n\nNow that the old kobject_init() function is gone, rename\nkobject_init_ng() to kobject_init() to clean up the namespace.\n\nCc: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "b2d6db5878a0832659ed58476357eea2db915550",
      "tree": "c7c9e98431078ca7b0405e8003bd905ab62df7c4",
      "parents": [
        "9e7bbccd0290e720e0874443932869c55f63d5a8"
      ],
      "author": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Mon Dec 17 23:05:35 2007 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Thu Jan 24 20:40:38 2008 -0800"
      },
      "message": "Kobject: rename kobject_add_ng() to kobject_add()\n\nNow that the old kobject_add() function is gone, rename kobject_add_ng()\nto kobject_add() to clean up the namespace.\n\nCc: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "81e7c6a636c81d9eeaeaa732bfbace44535fab00",
      "tree": "fecb19e67acb96c2c9a11194ebebca63f0139f02",
      "parents": [
        "9f66fa2a4690a16da0dbaae2f44ddfc313802504"
      ],
      "author": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Tue Dec 04 22:41:54 2007 +0000"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Thu Jan 24 20:40:26 2008 -0800"
      },
      "message": "UIO: fix kobject usage\n\nThe uio kobject code is \"wierd\".  This patch should hopefully fix it up\nto be sane and not leak memory anymore.\n\n\nCc: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Benedikt Spranger \u003cb.spranger@linutronix.de\u003e\nSigned-off-by: Hans J. Koch \u003chjk@linutronix.de\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "3514faca19a6fdc209734431c509631ea92b094e",
      "tree": "f6d102e6dec276f8e8d1044b47c74a02b901554f",
      "parents": [
        "c11c4154e7ff4cebfadad849b1e22689d759c3f4"
      ],
      "author": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Tue Oct 16 10:11:44 2007 -0600"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Thu Jan 24 20:40:10 2008 -0800"
      },
      "message": "kobject: remove struct kobj_type from struct kset\n\nWe don\u0027t need a \"default\" ktype for a kset.  We should set this\nexplicitly every time for each kset.  This change is needed so that we\ncan make ksets dynamic, and cleans up one of the odd, undocumented\nassumption that the kset/kobject/ktype model has.\n\nThis patch is based on a lot of help from Kay Sievers.\n\nNasty bug in the block code was found by Dave Young\n\u003chidave.darkstar@gmail.com\u003e\n\nCc: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nCc: Dave Young \u003chidave.darkstar@gmail.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "beafc54c4e2fba24e1ca45cdb7f79d9aa83e3db1",
      "tree": "9f2d4060e4ab29b1483124fa398be30f72696b34",
      "parents": [
        "5bae7ac9feba925fd0099057f6b23d7be80b7b41"
      ],
      "author": {
        "name": "Hans J. Koch",
        "email": "hjk@linutronix.de",
        "time": "Thu Dec 07 10:58:29 2006 +0100"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Jul 18 15:57:15 2007 -0700"
      },
      "message": "UIO: Add the User IO core code\n\nThis interface allows the ability to write the majority of a driver in\nuserspace with only a very small shell of a driver in the kernel itself.\nIt uses a char device and sysfs to interact with a userspace process to\nprocess interrupts and control memory accesses.\n\nSee the docbook documentation for more details on how to use this\ninterface.\n\nFrom: Hans J. Koch \u003chjk@linutronix.de\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Benedikt Spranger \u003cb.spranger@linutronix.de\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    }
  ]
}
