)]}'
{
  "log": [
    {
      "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": "e53e841d451a2d0da094b8fea4a7f22b296234f6",
      "tree": "0245ff3ec452966a3addc610c67f31b17dd7936c",
      "parents": [
        "925ce689bb31960c839804c19ef38d676f1939b9"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Mon Jul 12 13:50:13 2010 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Tue Aug 10 14:35:39 2010 -0700"
      },
      "message": "USB: usb-skeleton: Remove unnecessary casts of private_data\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "997ea58eb92f9970b8af7aae48800d0ef43b9423",
      "tree": "65e021973e5a48ad7290d5be1f441940566468ad",
      "parents": [
        "48679c6d772b1459a2945729e3a1256ac78fcabf"
      ],
      "author": {
        "name": "Daniel Mack",
        "email": "daniel@caiaq.de",
        "time": "Mon Apr 12 13:17:25 2010 +0200"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Thu May 20 13:21:38 2010 -0700"
      },
      "message": "USB: rename usb_buffer_alloc() and usb_buffer_free() users\n\nFor more clearance what the functions actually do,\n\n  usb_buffer_alloc() is renamed to usb_alloc_coherent()\n  usb_buffer_free()  is renamed to usb_free_coherent()\n\nThey should only be used in code which really needs DMA coherency.\n\nAll call sites have been changed accordingly, except for staging\ndrivers.\n\nSigned-off-by: Daniel Mack \u003cdaniel@caiaq.de\u003e\nCc: Alan Stern \u003cstern@rowland.harvard.edu\u003e\nCc: Pedro Ribeiro \u003cpedrib@gmail.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "b92a97efe00cf4e3555585f40dbe96512bba8f95",
      "tree": "9cf737ad5ab7f25094e42727de28a15fb52bd341",
      "parents": [
        "c8b492a86d71d43fb32e29282e6405663177b9e4"
      ],
      "author": {
        "name": "Oliver Neukum",
        "email": "oliver@neukum.org",
        "time": "Thu Jan 14 16:08:13 2010 +0100"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Tue Mar 02 14:54:26 2010 -0800"
      },
      "message": "USB: BKL removal: usb-skeleton\n\nBKL not needed at all. Removed without replacement.\n\nSigned-off-by: Oliver Neukum \u003coliver@neukum.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "86266452f80545285c14e20a8024f79c4fb88a86",
      "tree": "ebb0a287f9bf189737d4924536d18b36492fd330",
      "parents": [
        "f9de332ebf9df71892d52f7eb64af101a647349f"
      ],
      "author": {
        "name": "Oliver Neukum",
        "email": "oliver@neukum.org",
        "time": "Wed Jan 13 15:33:15 2010 +0100"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Tue Mar 02 14:54:23 2010 -0800"
      },
      "message": "USB: Push BKL on open down into the drivers\n\nStraightforward push into the drivers to allow\nauditing individual drivers separately\n\nSigned-off-by: Oliver Neukum \u003coliver@neukum.org\u003e\nAcked-by: Mauro Carvalho Chehab \u003cmchehab@redhat.com\u003e\nCc: Jiri Kosina \u003cjkosina@suse.cz\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "1bd4f29d0af5b4b1c022d8fded14665dd5932905",
      "tree": "e296143b340d13de7b76ad01a4b6b782bb8cc8b2",
      "parents": [
        "94089d56e456d2814c379538919180957a254e4a"
      ],
      "author": {
        "name": "Németh Márton",
        "email": "nm127@freemail.hu",
        "time": "Sun Jan 10 15:33:33 2010 +0100"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Tue Mar 02 14:54:15 2010 -0800"
      },
      "message": "USB skeleton: make USB device id constant\n\nThe id_table field of the struct usb_device_id is constant in \u003clinux/usb.h\u003e\nso it is worth to make the initialization data also constant.\n\nThe semantic match that finds this kind of pattern is as follows:\n(http://coccinelle.lip6.fr/)\n\n// \u003csmpl\u003e\n@r@\ndisable decl_init,const_decl_init;\nidentifier I1, I2, x;\n@@\n\tstruct I1 {\n\t  ...\n\t  const struct I2 *x;\n\t  ...\n\t};\n@s@\nidentifier r.I1, y;\nidentifier r.x, E;\n@@\n\tstruct I1 y \u003d {\n\t  .x \u003d E,\n\t};\n@c@\nidentifier r.I2;\nidentifier s.E;\n@@\n\tconst struct I2 E[] \u003d ... ;\n@depends on !c@\nidentifier r.I2;\nidentifier s.E;\n@@\n+\tconst\n\tstruct I2 E[] \u003d ...;\n// \u003c/smpl\u003e\n\nSigned-off-by: Németh Márton \u003cnm127@freemail.hu\u003e\nCc: Julia Lawall \u003cjulia@diku.dk\u003e\nCc: cocci@diku.dk\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "4de84057598599bbf90bf1deae923bc33f571475",
      "tree": "e20aeea1f7fced7d01194ebab24dc3949e013a7e",
      "parents": [
        "f0ad073f043b5ac04620bb80ecfc92114d348044"
      ],
      "author": {
        "name": "Julia Lawall",
        "email": "julia@diku.dk",
        "time": "Sat Sep 19 09:13:43 2009 +0200"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Fri Dec 11 11:55:14 2009 -0800"
      },
      "message": "USB: skeleton: Correct use of ! and \u0026\n\nCorrect priority problem in the use of ! and \u0026.\n\nThe semantic patch that makes this change is as follows:\n(http://coccinelle.lip6.fr/)\n\n// \u003csmpl\u003e\n@@ expression E; constant C; @@\n- !E \u0026 C\n+ !(E \u0026 C)\n// \u003c/smpl\u003e\n\nSigned-off-by: Julia Lawall \u003cjulia@diku.dk\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "3ae9da1c99eda248b469fc10d8d9fcebebc949cf",
      "tree": "27a38dd3a3baaf3fd65ad50c1e12b9382dc88b8d",
      "parents": [
        "8cd01664344e983d73a85ce604f7c23f475cf303"
      ],
      "author": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Fri Sep 11 16:07:30 2009 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Sep 23 06:46:40 2009 -0700"
      },
      "message": "USB: skeleton: fix coding style issues.\n\nThis fixes up the majority of the coding style issues in the\nusb-skeleton driver.\n\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n"
    },
    {
      "commit": "8cd01664344e983d73a85ce604f7c23f475cf303",
      "tree": "6eac7c223c62db18a045cb9b606f59e20b61416a",
      "parents": [
        "798199867385417ba6494472e39c016e3340758c"
      ],
      "author": {
        "name": "Oliver Neukum",
        "email": "oliver@neukum.org",
        "time": "Wed Sep 09 17:08:50 2009 +0200"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Sep 23 06:46:40 2009 -0700"
      },
      "message": "USB: O_NONBLOCK in read path of skeleton\n\nNon blocking IO is supported in the read path of usb-skeleton.\nThis is done by just not blocking. As support for handling signals\nwithout stopping IO is already there, it can be used for O_NONBLOCK, too.\n\nSigned-off-by: Oliver Neukum \u003coliver@neukum.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "798199867385417ba6494472e39c016e3340758c",
      "tree": "0be421533a966075130254d41ba0ae7ea0a25e71",
      "parents": [
        "e7389cc9a7ff7c6e760e741c81a751c834f7d145"
      ],
      "author": {
        "name": "Oliver Neukum",
        "email": "oliver@neukum.org",
        "time": "Wed Sep 09 10:23:35 2009 +0200"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Sep 23 06:46:40 2009 -0700"
      },
      "message": "USB: make usb-skeleton honor O_NONBLOCK in write path\n\nusb:usb-skeleton: honor O_NONBLOCK in write path\n\nnonblocking writes are allowed by using down_trylock if necessary\nto reserve an URB\n\nSigned-off-by: Oliver Neukum \u003coliver@neukum.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "e7389cc9a7ff7c6e760e741c81a751c834f7d145",
      "tree": "c32bb55858fd792ac10b90a2a0539d163ad46136",
      "parents": [
        "b356b7c7696b289dda99022d71e3979c6134af52"
      ],
      "author": {
        "name": "Oliver Neukum",
        "email": "oliver@neukum.org",
        "time": "Wed Sep 09 17:06:53 2009 +0200"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Sep 23 06:46:40 2009 -0700"
      },
      "message": "USB: skel_read really sucks royally\n\nThe read code path of the skeleton driver really sucks\n\n - skel_read works only for devices which always send data\n - the timeout comes out of thin air\n - it blocks signals for the duration of the timeout\n - it disallows nonblocking IO by design\n\nThis patch fixes it by using a real urb, a completion and interruptible waits.\n\nSigned-off-by: Oliver Neukum \u003coliver@neukum.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n\n"
    },
    {
      "commit": "a5f5ea230d70f5dde4d787208855fa3c3cd7b31e",
      "tree": "690c07ad1d7d1fe70af40980590ca99836d2973e",
      "parents": [
        "0eb526b96ced3759e7d4445fc55204f314e33d8c"
      ],
      "author": {
        "name": "Matt Kraai",
        "email": "kraai@ftbfs.org",
        "time": "Fri Feb 06 19:38:51 2009 -0800"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Tue Mar 24 16:20:30 2009 -0700"
      },
      "message": "USB: skeleton: Use dev_info instead of info\n\n338b67b0c1a97ca705023a8189cf41aa0828d294 removed the info macro and\nreplaced its uses with dev_info.  This patch does so for\nusb-skeleton.c, which was missed.\n\nSigned-off-by: Matt Kraai \u003ckraai@ftbfs.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "cdc97792289179974af6dda781c855696358d307",
      "tree": "d633d7e5bd0b14b7581e20790c1a83baadfad80c",
      "parents": [
        "a5b6f60c5a30c494017c7a2d11c4067f90d3d0df"
      ],
      "author": {
        "name": "Ming Lei",
        "email": "tom.leiming@gmail.com",
        "time": "Sun Feb 24 18:41:47 2008 +0800"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Thu Apr 24 21:16:55 2008 -0700"
      },
      "message": "USB: remove unnecessary type casting of urb-\u003econtext\n\nurb-\u003econtext code cleanup\n\nSigned-off-by: Ming Lei \u003ctom.leiming@gmail.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "441b62c1edb986827154768d89bbac0ba779984f",
      "tree": "13724c22d1b190a36f0ddbba38554e6c66bea6af",
      "parents": [
        "14722ef4acedc643f0b78b7165ceff2d300dae4d"
      ],
      "author": {
        "name": "Harvey Harrison",
        "email": "harvey.harrison@gmail.com",
        "time": "Mon Mar 03 16:08:34 2008 -0800"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Thu Apr 24 21:16:55 2008 -0700"
      },
      "message": "USB: replace remaining __FUNCTION__ occurrences\n\n__FUNCTION__ is gcc-specific, use __func__\n\nSigned-off-by: Harvey Harrison \u003charvey.harrison@gmail.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "f7294055a7a5bf1ea7da16dffb0cb0f7a282c04b",
      "tree": "3b296fd7b8c1a73e9c7d0944cb7bb7b56061bdfc",
      "parents": [
        "6840d2555afd66290be7a39b400b5e66a840b82d"
      ],
      "author": {
        "name": "Mark Gross",
        "email": "mgross@linux.intel.com",
        "time": "Mon Sep 24 09:28:14 2007 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Fri Oct 12 14:55:26 2007 -0700"
      },
      "message": "USB: usb-skeleton leaking locks on open\n\nThis weekend I was hacking around with a trivial USB driver for talking\nto the boot load firmware of a USB Bit Whacker.  It\u0027s running the\nMicroChip Pic18 boot loader firmware and I\u0027m putting together a flash\nprogram for writing new FW to the thing.\n\nAnyway in my use of the usb-skeleton.c as my starting point I discovered\nmy test program was getting hung up after attempting to write a buffer.\nThe application and driver where hung in a way that required me to\nreboot to get it to clean up so I could try again.\n\nIt turned out the code path through skel_open can grap the driver\u0027s\nio_mutex lock and forget to release it.\n\nThe following patch fixes the problem for me.\n\nSigned-off-by: Mark Gross \u003cmgross@linux.intel.com\u003e\nCc: Oliver Neukum \u003coliver@neukum.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "87d093e25d73249ae92b28ae88db92eaea7df70f",
      "tree": "355861f143061c1de47ce6c41d1c5b8b0be438d7",
      "parents": [
        "758f7e161b1da3039368bf7180b9d9f4c33453da"
      ],
      "author": {
        "name": "Oliver Neukum",
        "email": "oneukum@suse.de",
        "time": "Mon Jun 11 14:55:51 2007 +0200"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Thu Jul 12 16:34:37 2007 -0700"
      },
      "message": "USB: usb-skeleton: use anchors in pre/post reset\n\nuse anchors in pre/post_reset\n\nSigned-off-by: Oliver Neukum \u003coneukum@suse.de\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "758f7e161b1da3039368bf7180b9d9f4c33453da",
      "tree": "490a6eb7c88bcf5f56d6758bb3b01dd2a227c1dc",
      "parents": [
        "e73c7247b8e10a74cbf6b7430585e02c7cc05444"
      ],
      "author": {
        "name": "Oliver Neukum",
        "email": "oneukum@suse.de",
        "time": "Mon Jun 11 14:55:08 2007 +0200"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Thu Jul 12 16:34:37 2007 -0700"
      },
      "message": "USB: usb-skeleton\" use anchors in suspend/resume handling\n\nuse anchors in suspend/resume handling\n\nSigned-off-by: Oliver Neukum \u003coneukum@suse.de\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "e73c7247b8e10a74cbf6b7430585e02c7cc05444",
      "tree": "ffa5f1b29a6fe97887c778555762b18b7ba113b5",
      "parents": [
        "a6ea438b6d38689b7f876093bcba4505fe1995d1"
      ],
      "author": {
        "name": "Oliver Neukum",
        "email": "oneukum@suse.de",
        "time": "Mon Jun 11 14:54:02 2007 +0200"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Thu Jul 12 16:34:37 2007 -0700"
      },
      "message": "USB: usb-skeleton: use anchors in disconnect handling\n\nuse anchors in disconnect handling\n\nSigned-off-by: Oliver Neukum \u003coneukum@suse.de\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "403dfb58c3134a339e415fba9f6d45b51c6ee357",
      "tree": "65055125aca69e2e8c0d55a4f5221bd8693cfe7b",
      "parents": [
        "51a2f077c44e559841b09de6da605b4d3ae40dad"
      ],
      "author": {
        "name": "Oliver Neukum",
        "email": "oneukum@suse.de",
        "time": "Fri May 25 13:42:56 2007 +0200"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Thu Jul 12 16:34:28 2007 -0700"
      },
      "message": "USB: usb-skeleton: usb anchor to implement flush\n\nThis patch set introduces usb_anchor and uses it to implement all modern\nAPIs in the skeleton driver.\n\n- proper error reporting in the skeleton driver\n- implementation of flush()\n\nSigned-off-by: Oliver Neukum \u003coneukum@suse.de\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "d4ead16f50f9ad30bdc7276ec8fee7a24c72f294",
      "tree": "e1905abbc393cc4d73180dd7b9e1cf860378b590",
      "parents": [
        "55e5fdfa541ec7bf1b1613624ed4dd8cdacaa841"
      ],
      "author": {
        "name": "Alan Stern",
        "email": "stern@rowland.harvard.edu",
        "time": "Tue May 22 11:46:41 2007 -0400"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Thu Jul 12 16:29:48 2007 -0700"
      },
      "message": "USB: prevent char device open/deregister race\n\nThis patch (as908) adds central protection in usbcore for the\nprototypical race between opening and unregistering a char device.\nThe spinlock used to protect the minor-numbers array is replaced with\nan rwsem, which can remain locked across a call to a driver\u0027s open()\nmethod.  This guarantees that open() and deregister() will be mutually\nexclusive.\n\nThe private locks currently used in several individual drivers for\nthis purpose are no longer necessary, and the patch removes them.  The\nfollowing USB drivers are affected: usblcd, idmouse, auerswald,\nlegousbtower, sisusbvga/sisusb, ldusb, adutux, iowarrior, and\nusb-skeleton.\n\nAs a side effect of this change, usb_deregister_dev() must not be\ncalled while holding a lock that is acquired by open().  Unfortunately\na number of drivers do this, but luckily the solution is simple: call\nusb_deregister_dev() before acquiring the lock.\n\nIn addition to these changes (and their consequent code\nsimplifications), the patch fixes a use-after-free bug in adutux and a\nrace between open() and release() in iowarrior.\n\nSigned-off-by: Alan Stern \u003cstern@rowland.harvard.edu\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "5d9b89b33f3ed19479dc5240986b0fedda08b82c",
      "tree": "52313ec3d8b5af45d9f4c1b23a568d170f83c11b",
      "parents": [
        "ba35e02bdcbd3a25238421a7e20efdb69436d3cf"
      ],
      "author": {
        "name": "Oliver Neukum",
        "email": "oneukum@suse.de",
        "time": "Thu Mar 01 23:07:32 2007 +0100"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Fri Apr 27 13:28:33 2007 -0700"
      },
      "message": "USB: kill BKL in skeleton driver\n\nIet\u0027s kill BKL where we can. This is relative to the last patch to the\nskeleton driver.\n\nSigned-off-by: Oliver Neukum \u003coneukum@suse.de\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "ba35e02bdcbd3a25238421a7e20efdb69436d3cf",
      "tree": "06432c0c28b762b8df2d55f76d4a0d3d0be9881b",
      "parents": [
        "08a78cbb410032a025e0323bcfb12b348fc7a389"
      ],
      "author": {
        "name": "Oliver Neukum",
        "email": "oneukum@suse.de",
        "time": "Thu Mar 01 14:31:02 2007 +0100"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Fri Apr 27 13:28:33 2007 -0700"
      },
      "message": "USB: fix skeleton driver\n\ncompilation of the skeleton driver is currently broken. It doesn\u0027t compile.\nSo while I am it:\n\n- fix typo\n- add comments to answer common questions\n- actually allow autosuspend in the driver struct\n- increase paralellism by restricting code under locks\n\nSigned-off-by: Oliver Neukum \u003coneukum@suse.de\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "5b06470816fb5e658e81db2a55b530ff2ba711c9",
      "tree": "f43ea87c2808916a5f9f27238d82fd4481383cf2",
      "parents": [
        "57e4f041bfffa191a318dab44eb991d79a6a9d5c"
      ],
      "author": {
        "name": "Oliver Neukum",
        "email": "oneukum@suse.de",
        "time": "Thu Feb 08 15:42:53 2007 +0100"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Fri Feb 16 15:32:19 2007 -0800"
      },
      "message": "USB: fix autosuspend race in skeleton driver\n\nas the skeleton driver was made ready for autosuspend a race condition\nwas introduced. The reference to get device must be gotten before the\nautosuspend counter is upped, as this operation may sleep, dropping BKL.\nDropping BKL means that the pointer to the device may become invalid.\nHere\u0027s the fix.\n\nSigned-off-by: Oliver Neukum \u003coneukum@suse.de\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n"
    },
    {
      "commit": "7d12e780e003f93433d49ce78cfedf4b4c52adc5",
      "tree": "6748550400445c11a306b132009f3001e3525df8",
      "parents": [
        "da482792a6d1a3fbaaa25fae867b343fb4db3246"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Thu Oct 05 14:55:46 2006 +0100"
      },
      "committer": {
        "name": "David Howells",
        "email": "dhowells@warthog.cambridge.redhat.com",
        "time": "Thu Oct 05 15:10:12 2006 +0100"
      },
      "message": "IRQ: Maintain regs pointer globally rather than passing to IRQ handlers\n\nMaintain a per-CPU global \"struct pt_regs *\" variable which can be used instead\nof passing regs around manually through all ~1800 interrupt handlers in the\nLinux kernel.\n\nThe regs pointer is used in few places, but it potentially costs both stack\nspace and code to pass it around.  On the FRV arch, removing the regs parameter\nfrom all the genirq function results in a 20% speed up of the IRQ exit path\n(ie: from leaving timer_interrupt() to leaving do_IRQ()).\n\nWhere appropriate, an arch may override the generic storage facility and do\nsomething different with the variable.  On FRV, for instance, the address is\nmaintained in GR28 at all times inside the kernel as part of general exception\nhandling.\n\nHaving looked over the code, it appears that the parameter may be handed down\nthrough up to twenty or so layers of functions.  Consider a USB character\ndevice attached to a USB hub, attached to a USB controller that posts its\ninterrupts through a cascaded auxiliary interrupt controller.  A character\ndevice driver may want to pass regs to the sysrq handler through the input\nlayer which adds another few layers of parameter passing.\n\nI\u0027ve build this code with allyesconfig for x86_64 and i386.  I\u0027ve runtested the\nmain part of the code on FRV and i386, though I can\u0027t test most of the drivers.\nI\u0027ve also done partial conversion for powerpc and MIPS - these at least compile\nwith minimal configurations.\n\nThis will affect all archs.  Mostly the changes should be relatively easy.\nTake do_IRQ(), store the regs pointer at the beginning, saving the old one:\n\n\tstruct pt_regs *old_regs \u003d set_irq_regs(regs);\n\nAnd put the old one back at the end:\n\n\tset_irq_regs(old_regs);\n\nDon\u0027t pass regs through to generic_handle_irq() or __do_IRQ().\n\nIn timer_interrupt(), this sort of change will be necessary:\n\n\t-\tupdate_process_times(user_mode(regs));\n\t-\tprofile_tick(CPU_PROFILING, regs);\n\t+\tupdate_process_times(user_mode(get_irq_regs()));\n\t+\tprofile_tick(CPU_PROFILING);\n\nI\u0027d like to move update_process_times()\u0027s use of get_irq_regs() into itself,\nexcept that i386, alone of the archs, uses something other than user_mode().\n\nSome notes on the interrupt handling in the drivers:\n\n (*) input_dev() is now gone entirely.  The regs pointer is no longer stored in\n     the input_dev struct.\n\n (*) finish_unlinks() in drivers/usb/host/ohci-q.c needs checking.  It does\n     something different depending on whether it\u0027s been supplied with a regs\n     pointer or not.\n\n (*) Various IRQ handler function pointers have been moved to type\n     irq_handler_t.\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\n(cherry picked from 1b16e7ac850969f38b375e511e3fa2f474a33867 commit)\n"
    },
    {
      "commit": "01d883d44a1ca8dc77486635d428cba63e7fdadf",
      "tree": "447a4293b2ec4dfa1b3d03a46a3a33498809f0e8",
      "parents": [
        "645daaab0b6adc35c1838df2a82f9d729fdb1767"
      ],
      "author": {
        "name": "Alan Stern",
        "email": "stern@rowland.harvard.edu",
        "time": "Wed Aug 30 15:47:18 2006 -0400"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Sep 27 11:58:57 2006 -0700"
      },
      "message": "usbcore: non-hub-specific uses of autosuspend\n\nThis patch (as741) makes the non-hub parts of usbcore actually use the\nautosuspend facilities added by an earlier patch.\n\n\tDevices opened through usbfs are autoresumed and then\n\tautosuspended upon close.\n\n\tLikewise for usb-skeleton.\n\n\tDevices are autoresumed for usb_set_configuration.\n\n\nSigned-off-by: Alan Stern \u003cstern@rowland.harvard.edu\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "c07045412f21c5bb344244e8ec45671529e411bd",
      "tree": "2e4e988a86a112e73b8ad3de74d140809a75fa5c",
      "parents": [
        "d5cbad4b8b37acfde3e63d31b92561b87288ad0f"
      ],
      "author": {
        "name": "Luiz Fernando N. Capitulino",
        "email": "lcapitulino@mandriva.com.br",
        "time": "Mon Aug 14 22:44:29 2006 -0300"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Sep 27 11:58:54 2006 -0700"
      },
      "message": "usb-skeleton: small update\n\no CodingStyle fixes\no Removes trailing spaces\no Do not make not needed initialiation of automatic variables\no Use usb_endpoint_* functions\no If we get an error in the write URB callback print an error message instead\n  of a debug one\n\n(Pretty unrelated changes, but spliting this up doesn\u0027t pay off as our main\nchanges are just CodingStyle fixes).\n\nSigned-off-by: Luiz Fernando N. Capitulino \u003clcapitulino@mandriva.com.br\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "066202dd48cf3296b6cc22b5fcf89aef33fa0efc",
      "tree": "1730104f5b1634e0dca42c5ea7a331fb1c773813",
      "parents": [
        "f2ebf92c9e1930a8f79b7eb49a32122931929014"
      ],
      "author": {
        "name": "Luiz Fernando N. Capitulino",
        "email": "lcapitulino@mandriva.com.br",
        "time": "Sat Aug 05 20:37:11 2006 -0300"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Sep 27 11:58:52 2006 -0700"
      },
      "message": "USB: Make file operations structs in drivers/usb const.\n\nMaking structs const prevents accidental bugs and with the proper debug\noptions they\u0027re protected against corruption.\n\nSigned-off-by: Luiz Fernando N. Capitulino \u003clcapitulino@mandriva.com.br\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "121e287cb554f3d3402c85a1950d852691b08f5c",
      "tree": "fa05e0d622e5f3d339004c4708223a24088ee574",
      "parents": [
        "349710c3a79c0405911b8b604953f0c665e17756"
      ],
      "author": {
        "name": "Alan Stern",
        "email": "stern@rowland.harvard.edu",
        "time": "Sat Jul 01 22:06:36 2006 -0400"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Sep 27 11:58:49 2006 -0700"
      },
      "message": "usb-skeleton: don\u0027t submit URBs after disconnection\n\nThis patch (as712b) is a slight revision of one submitted earlier.  It\nfixes the usb-skeleton example driver so that it won\u0027t try to submit\nURBs after skel_disconnect() has returned.  This could cause errors, if\nthe driver was unbound and then a different driver was bound to the\ndevice.  It also fixes a couple of small bugs in the skel_write()\nroutine.\n\nThe revised patch uses a slightly different test, suggested by Dave\nBrownell, for determining whether to free a transfer buffer.  It\u0027s a\nlittle clearer than the earlier version.\n\n\nSigned-off-by: Alan Stern \u003cstern@rowland.harvard.edu\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "6ab3d5624e172c553004ecc862bfeac16d9d68b7",
      "tree": "6d98881fe91fd9583c109208d5c27131b93fa248",
      "parents": [
        "e02169b682bc448ccdc819dc8639ed34a23cedd8"
      ],
      "author": {
        "name": "Jörn Engel",
        "email": "joern@wohnheim.fh-wedel.de",
        "time": "Fri Jun 30 19:25:36 2006 +0200"
      },
      "committer": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Fri Jun 30 19:25:36 2006 +0200"
      },
      "message": "Remove obsolete #include \u003clinux/config.h\u003e\n\nSigned-off-by: Jörn Engel \u003cjoern@wohnheim.fh-wedel.de\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\n"
    },
    {
      "commit": "595b14cbccb2f9122bccfa6b55f2d9a380e9adeb",
      "tree": "88f6a554b47f4a5676a11805a4b6496e39987b46",
      "parents": [
        "630aa3cfd5f0bae9547fe7dff175d7323d60140d"
      ],
      "author": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Jan 18 17:36:58 2006 -0500"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Tue Jan 31 17:23:41 2006 -0800"
      },
      "message": "[PATCH] USB: remove some left over devfs droppings hanging around in the usb drivers\n\nAs there is no more usb devfs support, these bits would just confuse\npeople.\n\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n"
    },
    {
      "commit": "c8dd7709c534ab0d713aa698c99132b6c812b57c",
      "tree": "30daa90dfdf17ef397efe4230f6dfb03060d669d",
      "parents": [
        "cb5b3f6950b4fbad9d8d41756f49aba792804b5b"
      ],
      "author": {
        "name": "Sam Bishop",
        "email": "sam@bishop.dhs.org",
        "time": "Thu Dec 22 17:11:02 2005 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Jan 04 13:51:45 2006 -0800"
      },
      "message": "[PATCH] USB: fix usb-skeleton limit resource usage patch.\n\nPrevents a compiler warning and uses down_interruptible() instead of down() in\nprocess context.\n\nSigned-off-by: Sam Bishop \u003csam@bishop.dhs.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n"
    },
    {
      "commit": "cb5b3f6950b4fbad9d8d41756f49aba792804b5b",
      "tree": "52359251d2f32767be54ab9e0e5fe2ad69f9a9f1",
      "parents": [
        "f5691d70d4aeec0ac9cff11f0cabb7d5a1735705"
      ],
      "author": {
        "name": "Olav Kongas",
        "email": "ok@artecdesign.ee",
        "time": "Thu Dec 22 12:44:52 2005 +0200"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Jan 04 13:51:45 2006 -0800"
      },
      "message": "[PATCH] USB: fix buffer size limiting in skeleton driver\n\nFix buffer size limiting.\n\nSigned-off-by: Olav Kongas \u003cok@artecdesign.ee\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n"
    },
    {
      "commit": "ff90651883093576de2d60bebaae39b0dd2e62f6",
      "tree": "8029f0742384a7f22fbd4175cf9a73194eee33d6",
      "parents": [
        "aafbf24a1129480157af7ee780eddcea9b76ee5c"
      ],
      "author": {
        "name": "Oliver Neukum",
        "email": "oliver@neukum.org",
        "time": "Wed Dec 21 19:27:29 2005 +0100"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Jan 04 13:51:44 2006 -0800"
      },
      "message": "[PATCH] USB: Limiting of resource use in skeleton driver\n\nthis introduces limits whose lack in the skeleton driver someone recently\ncomplained about.\n\nSigned-off-by: Oliver Neukum \u003coliver@neukum.name\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n"
    },
    {
      "commit": "75318d2d7cab77b14c5d3dbd5e69f2680a769e16",
      "tree": "13098167bd41d7dd0b0d3f678534a6daa29b4005",
      "parents": [
        "2143acc6dc79bdbff812f02a7dc5ab9d4fc81fc8"
      ],
      "author": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Mon Nov 21 14:53:03 2005 -0800"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Jan 04 13:48:34 2006 -0800"
      },
      "message": "[PATCH] USB: remove .owner field from struct usb_driver\n\nIt is no longer needed, so let\u0027s remove it, saving a bit of memory.\n\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n"
    },
    {
      "commit": "d6e5bcf4a7ebbe258124a931f1449338340a99b5",
      "tree": "e36249673c11e20f90ad837831c104b1dfce9947",
      "parents": [
        "094f1649577dfc7f2c7407a8380e05a506b31f7f"
      ],
      "author": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Mon Jun 20 21:15:16 2005 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Fri Oct 28 16:47:37 2005 -0700"
      },
      "message": "[PATCH] devfs: Remove the mode field from usb_class_driver as it\u0027s no longer needed\n\nAlso fixes all drivers that set this field, and removes some other devfs\nspecfic USB logic.\n\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n drivers/usb/class/usblp.c           |    3 +--\n drivers/usb/core/file.c             |   19 ++++---------------\n drivers/usb/image/mdc800.c          |    3 +--\n drivers/usb/input/aiptek.c          |    2 +-\n drivers/usb/input/hiddev.c          |    3 +--\n drivers/usb/media/dabusb.c          |    3 +--\n drivers/usb/misc/auerswald.c        |    3 +--\n drivers/usb/misc/idmouse.c          |    5 ++---\n drivers/usb/misc/legousbtower.c     |    5 ++---\n drivers/usb/misc/rio500.c           |    3 +--\n drivers/usb/misc/sisusbvga/sisusb.c |    5 -----\n drivers/usb/misc/usblcd.c           |    9 ++++-----\n drivers/usb/usb-skeleton.c          |    3 +--\n include/linux/usb.h                 |    7 ++-----\n 14 files changed, 22 insertions(+), 51 deletions(-)\n"
    },
    {
      "commit": "6b216df87cb5f3bb7d47a33f1cd955ebc7b84dfd",
      "tree": "47be6973ba2f07151b742f49f1c859ed8a6bd901",
      "parents": [
        "3eb0c5f4b539873ca88f8597db6a49e83ddfd7e2"
      ],
      "author": {
        "name": "Conger, Chris A",
        "email": "CHRIS.A.CONGER@saic.com",
        "time": "Fri Jul 29 12:18:23 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jul 29 13:12:54 2005 -0700"
      },
      "message": "[PATCH] USB: fix Bug in usb-skeleton.c\n\nCompare endpoint address to USB_ENDPOINT_DIR_MASK to determine endpoint\ndirection...\n\nFrom: \"Conger, Chris A.\" \u003cCHRIS.A.CONGER@saic.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "1da177e4c3f41524e886b7f1b8a0c1fc7321cac2",
      "tree": "0bba044c4ce775e45a88a51686b5d9f90697ea9d",
      "parents": [],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "message": "Linux-2.6.12-rc2\n\nInitial git repository build. I\u0027m not bothering with the full history,\neven though we have it. We can create a separate \"historical\" git\narchive of that later if we want to, and in the meantime it\u0027s about\n3.2GB when imported into git - space that would just make the early\ngit days unnecessarily complicated, when we don\u0027t have a lot of good\ninfrastructure for it.\n\nLet it rip!\n"
    }
  ]
}
