)]}'
{
  "log": [
    {
      "commit": "bcdddfb66cc998252d34758ce4109cedc0d24a5c",
      "tree": "8cea3d0275dce00f12b8b4ac853fac6841a1c6b9",
      "parents": [
        "0f2452855d86901ba3766826ccb5606ea4e15ab9"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Jan 30 14:11:12 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Jan 30 14:11:12 2007 -0800"
      },
      "message": "Revert \"net: ifb error path loop fix\"\n\nThis reverts commit 0c0b3ae68ec93b1db5c637d294647d1cca0df763.\n\nQuoth David:\n\n  \"Jeff, please revert\n\n   It\u0027s wrong.  We had a lengthy analysis of this piece of code\n   several months ago, and it is correct.\n\n   Consider, if we run the loop and we get an error\n   the following happens:\n\n   1) attempt of ifb_init_one(i) fails, therefore we should\n      not try to \"ifb_free_one()\" on \"i\" since it failed\n   2) the loop iteration first increments \"i\", then it\n      check for error\n\n   Therefore we must decrement \"i\" twice before the first\n   free during the cleanup.  One to \"undo\" the for() loop\n   increment, and one to \"skip\" the ifb_init_one() case which\n   failed.\"\n\nReported-by: David Miller \u003cdavem@davemloft.net\u003e\nAcked-by: Jeff Garzik \u003cjgarzik@pobox.com\u003e\nCc: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0c0b3ae68ec93b1db5c637d294647d1cca0df763",
      "tree": "d865c12ab25c8eb235342c46bfd3ad60c1bfb384",
      "parents": [
        "5fc7d61aee1a7f7d3448f8fbccaa93371ebeecb0"
      ],
      "author": {
        "name": "Mariusz Kozlowski",
        "email": "m.kozlowski@tuxland.pl",
        "time": "Sat Jan 27 00:00:01 2007 -0800"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Tue Jan 30 09:36:01 2007 -0500"
      },
      "message": "net: ifb error path loop fix\n\nOn error we should start freeing resources at [i-1] not [i-2].\n\nSigned-off-by: Mariusz Kozlowski \u003cm.kozlowski@tuxland.pl\u003e\nCc: Jeff Garzik \u003cjeff@garzik.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "3136dcb3cd6e5b4ed4bd34d422f8cdeec4da6836",
      "tree": "2afcd5f1c69b046ed6d3da7ba6c47bc47da61c43",
      "parents": [
        "a7ec3f5289681e9d63b65db5f56857f998812b4b"
      ],
      "author": {
        "name": "dean gaudet",
        "email": "dean@arctic.org",
        "time": "Mon Jan 01 19:39:09 2007 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Jan 03 18:38:08 2007 -0800"
      },
      "message": "[NET]: ifb double-counts packets\n\nSigned-off-by: dean gaudet \u003cdean@arctic.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "8057de64fd4734ae3e70cf76deb77f1c19958494",
      "tree": "a59f48c1f314be6a7537d9eb54850af96bd624fe",
      "parents": [
        "cb7cf57a6196a4b27e5d2f71debefc80a2fa1725"
      ],
      "author": {
        "name": "Zach Brown",
        "email": "zach.brown@oracle.com",
        "time": "Tue Oct 03 01:16:10 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Oct 03 08:04:19 2006 -0700"
      },
      "message": "[PATCH] pr_debug: ifb: replace missing comma to separate pr_debug arguments\n\nifb: replace missing comma to separate pr_debug arguments\n\nSigned-off-by: Zach Brown \u003czach.brown@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "6aa20a2235535605db6d6d2bd850298b2fe7f31e",
      "tree": "df0b855043407b831d57f2f2c271f8aab48444f4",
      "parents": [
        "7a291083225af6e22ffaa46b3d91cfc1a1ccaab4"
      ],
      "author": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Wed Sep 13 13:24:59 2006 -0400"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Wed Sep 13 13:24:59 2006 -0400"
      },
      "message": "drivers/net: Trim trailing whitespace\n\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "4a9c74e5830444c1c3235848e06402c1d2ece1ea",
      "tree": "7a2e828379c30b31b5a458dc4b533c8dc71a19ba",
      "parents": [
        "53c4b2cc7a05c034fd21d104d2ab43ea8cc0e075"
      ],
      "author": {
        "name": "Nicolas Dichtel",
        "email": "nicolas.dichtel@6wind.com",
        "time": "Fri Jul 21 14:56:02 2006 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jul 21 14:56:02 2006 -0700"
      },
      "message": "[IFB] After ifb_init_one() failed, i is increased. Decrease\n\nIt before entering in the loop for freeing the other ifb devices.\n\nSigned-off-by: Nicolas Dichtel \u003cnicolas.dichtel@6wind.com\u003e\nAcked-by: Jamal Hadi Salim \u003chadi@cyberus.ca\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\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": "932ff279a43ab7257942cddff2595acd541cc49b",
      "tree": "e60130673a20d71becdac858c2589d8dfbf3ae1f",
      "parents": [
        "bf0857ea32addb6bc8b46383604b218b8ec09f19"
      ],
      "author": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Fri Jun 09 12:20:56 2006 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Sat Jun 17 21:30:14 2006 -0700"
      },
      "message": "[NET]: Add netif_tx_lock\n\nVarious drivers use xmit_lock internally to synchronise with their\ntransmission routines.  They do so without setting xmit_lock_owner.\nThis is fine as long as netpoll is not in use.\n\nWith netpoll it is possible for deadlocks to occur if xmit_lock_owner\nisn\u0027t set.  This is because if a printk occurs while xmit_lock is held\nand xmit_lock_owner is not set can cause netpoll to attempt to take\nxmit_lock recursively.\n\nWhile it is possible to resolve this by getting netpoll to use\ntrylock, it is suboptimal because netpoll\u0027s sole objective is to\nmaximise the chance of getting the printk out on the wire.  So\ndelaying or dropping the message is to be avoided as much as possible.\n\nSo the only alternative is to always set xmit_lock_owner.  The\nfollowing patch does this by introducing the netif_tx_lock family of\nfunctions that take care of setting/unsetting xmit_lock_owner.\n\nI renamed xmit_lock to _xmit_lock to indicate that it should not be\nused directly.  I didn\u0027t provide irq versions of the netif_tx_lock\nfunctions since xmit_lock is meant to be a BH-disabling lock.\n\nThis is pretty much a straight text substitution except for a small\nbug fix in winbond.  It currently uses\nnetif_stop_queue/spin_unlock_wait to stop transmission.  This is\nunsafe as an IRQ can potentially wake up the queue.  So it is safer to\nuse netif_tx_disable.\n\nThe hamradio bits used spin_lock_irq but it is unnecessary as\nxmit_lock must never be taken in an IRQ handler.\n\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "35eaa31e5d6b0653c11b5661572152295b45b7a7",
      "tree": "fa62ae77e50253a558fdf39e66fb6cb750774f2e",
      "parents": [
        "4da3089f2b582b21e1374ccc6df722d4361eb915"
      ],
      "author": {
        "name": "Richard Lucassen",
        "email": "spamtrap@lucassen.org",
        "time": "Thu Feb 23 16:23:51 2006 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Feb 23 16:23:51 2006 -0800"
      },
      "message": "[NET]: Increase default IFB device count.\n\nThe most usable number of ifb devices is 2. Change the default to 2.\n\nSigned-off-by: Richard Lucassen \u003cspamtrap@lucassen.org\u003e\nSigned-off-by: Jamal Hadi Salim \u003chadi@cyberus.ca\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "253af4235d24ddfcd9f5403485e9273b33d8fa5e",
      "tree": "65f93e5606e22b0608db2b7beb87fce22089ad52",
      "parents": [
        "c1854ebc7f13b23c3d6a6e641a1a1db1116ca998"
      ],
      "author": {
        "name": "Jamal Hadi Salim",
        "email": "hadi@cyberus.ca",
        "time": "Sun Jan 08 22:34:25 2006 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Mon Jan 09 14:16:23 2006 -0800"
      },
      "message": "[NET]: Add IFB (Intermediate Functional Block) network device.\n\nA new device to do intermidiate functional block in a system shared\nmanner.  To use the new functionality, you need to turn on\nqos/classifier actions.\n\nThe new functionality can be grouped as:\n\n1) qdiscs/policies that are per device as opposed to system wide.  ifb\nallows for a device which can be redirected to thus providing an\nimpression of sharing.\n\n2) Allows for queueing incoming traffic for shaping instead of\ndropping.\n\nPackets are redirected to this device using tc/action mirred redirect\nconstruct. If they are sent to it by plain routing instead then they\nwill merely be dropped and the stats would indicate that.\n\nSigned-off-by: Jamal Hadi Salim \u003chadi@cyberus.ca\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    }
  ]
}
