)]}'
{
  "log": [
    {
      "commit": "8b3f6af86378d0a10ca2f1ded1da124aef13b62c",
      "tree": "de6ca90295730343c495be8d98be8efa322140ef",
      "parents": [
        "139d6065c83071d5f66cd013a274a43699f8e2c1",
        "94e0fb086fc5663c38bbc0fe86d698be8314f82f"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Sep 24 15:13:11 2009 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Sep 24 15:13:11 2009 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of /home/davem/src/GIT/linux-2.6/\n\nConflicts:\n\tdrivers/staging/Kconfig\n\tdrivers/staging/Makefile\n\tdrivers/staging/cpc-usb/TODO\n\tdrivers/staging/cpc-usb/cpc-usb_drv.c\n\tdrivers/staging/cpc-usb/cpc.h\n\tdrivers/staging/cpc-usb/cpc_int.h\n\tdrivers/staging/cpc-usb/cpcusb.h\n"
    },
    {
      "commit": "36989b90879c785f95b877bdcf65a2527dadd893",
      "tree": "d9ee451eca172d28112e092bac53dca927f98044",
      "parents": [
        "9cc4085585a011179caf86a6408225626f6c2263"
      ],
      "author": {
        "name": "Kusanagi Kouichi",
        "email": "slash@ma.neweb.ne.jp",
        "time": "Wed Sep 16 21:36:13 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Sep 22 14:00:16 2009 -0700"
      },
      "message": "tun: Return -EINVAL if neither IFF_TUN nor IFF_TAP is set.\n\nAfter commit 2b980dbd77d229eb60588802162c9659726b11f4\n(\"lsm: Add hooks to the TUN driver\") tun_set_iff doesn\u0027t\nreturn -EINVAL though neither IFF_TUN nor IFF_TAP is set.\n\nSigned-off-by: Kusanagi Kouichi \u003cslash@ma.neweb.ne.jp\u003e\nReviewed-by: Paul Moore \u003cpaul.moore@hp.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "e454cea20bdcff10ee698d11b8882662a0153a47",
      "tree": "f44581fe57787aef0a4f4dc00993a90ea8e688f6",
      "parents": [
        "78f28b7c555359c67c2a0d23f7436e915329421e"
      ],
      "author": {
        "name": "Kay Sievers",
        "email": "kay.sievers@vrfy.org",
        "time": "Fri Sep 18 23:01:12 2009 +0200"
      },
      "committer": {
        "name": "Live-CD User",
        "email": "linux@linux.site",
        "time": "Sat Sep 19 12:50:38 2009 -0700"
      },
      "message": "Driver-Core: extend devnode callbacks to provide permissions\n\nThis allows subsytems to provide devtmpfs with non-default permissions\nfor the device node. Instead of the default mode of 0600, null, zero,\nrandom, urandom, full, tty, ptmx now have a mode of 0666, which allows\nnon-privileged processes to access standard device nodes in case no\nother userspace process applies the expected permissions.\n\nThis also fixes a wrong assignment in pktcdvd and a checkpatch.pl complain.\n\nSigned-off-by: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n"
    },
    {
      "commit": "d7e9660ad9d5e0845f52848bce31bcf5cdcdea6b",
      "tree": "c6c67d145771187b194d79d603742b31090a59d6",
      "parents": [
        "b8cb48aae1b8c50b37dcb7710363aa69a7a0d9ca",
        "13af7a6ea502fcdd4c0e3d7de6e332b102309491"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Sep 14 10:37:28 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Sep 14 10:37:28 2009 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6: (1623 commits)\n  netxen: update copyright\n  netxen: fix tx timeout recovery\n  netxen: fix file firmware leak\n  netxen: improve pci memory access\n  netxen: change firmware write size\n  tg3: Fix return ring size breakage\n  netxen: build fix for INET\u003dn\n  cdc-phonet: autoconfigure Phonet address\n  Phonet: back-end for autoconfigured addresses\n  Phonet: fix netlink address dump error handling\n  ipv6: Add IFA_F_DADFAILED flag\n  net: Add DEVTYPE support for Ethernet based devices\n  mv643xx_eth.c: remove unused txq_set_wrr()\n  ucc_geth: Fix hangs after switching from full to half duplex\n  ucc_geth: Rearrange some code to avoid forward declarations\n  phy/marvell: Make non-aneg speed/duplex forcing work for 88E1111 PHYs\n  drivers/net/phy: introduce missing kfree\n  drivers/net/wan: introduce missing kfree\n  net: force bridge module(s) to be GPL\n  Subject: [PATCH] appletalk: Fix skb leak when ipddp interface is not loaded\n  ...\n\nFixed up trivial conflicts:\n\n - arch/x86/include/asm/socket.h\n\n   converted to \u003casm-generic/socket.h\u003e in the x86 tree.  The generic\n   header has the same new #define\u0027s, so that works out fine.\n\n - drivers/net/tun.c\n\n   fix conflict between 89f56d1e9 (\"tun: reuse struct sock fields\") that\n   switched over to using \u0027tun-\u003esocket.sk\u0027 instead of the redundantly\n   available (and thus removed) \u0027tun-\u003esk\u0027, and 2b980dbd (\"lsm: Add hooks\n   to the TUN driver\") which added a new \u0027tun-\u003esk\u0027 use.\n\n   Noted in \u0027next\u0027 by Stephen Rothwell.\n"
    },
    {
      "commit": "89f56d1e91cfa535ccc6cc60e9e12e02682fd972",
      "tree": "21231979479b0e2e0c7b4666f709bd657a89849a",
      "parents": [
        "86393e52c3f1e2f6be18383f6ecdbcdc5727d545"
      ],
      "author": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Sun Aug 30 07:04:42 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Sep 01 17:40:33 2009 -0700"
      },
      "message": "tun: reuse struct sock fields\n\nAs tun always has an embeedded struct sock,\nuse sk and sk_receive_queue fields instead of\nduplicating them in tun_struct.\n\nSigned-off-by: Michael S. Tsirkin \u003cmst@redhat.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "424efe9caf6047ffbcd6b383ff4d2347254aabf1",
      "tree": "d0ed516baa5b452ed8bc3a88fbd061f6e415bfb9",
      "parents": [
        "6518bbb803fe02b15a3211c8db2afdff0ac4f808"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Mon Aug 31 19:50:51 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Sep 01 01:13:40 2009 -0700"
      },
      "message": "netdev: convert pseudo drivers to netdev_tx_t\n\nThese are all drivers that don\u0027t touch real hardware.\n\nSigned-off-by: Stephen Hemminger \u003cshemminger@vyatta.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "2b980dbd77d229eb60588802162c9659726b11f4",
      "tree": "78a7f734d0721029e4b4c961ca61d35abe9e6dbc",
      "parents": [
        "d8e180dcd5bbbab9cd3ff2e779efcf70692ef541"
      ],
      "author": {
        "name": "Paul Moore",
        "email": "paul.moore@hp.com",
        "time": "Fri Aug 28 18:12:43 2009 -0400"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Tue Sep 01 08:29:48 2009 +1000"
      },
      "message": "lsm: Add hooks to the TUN driver\n\nThe TUN driver lacks any LSM hooks which makes it difficult for LSM modules,\nsuch as SELinux, to enforce access controls on network traffic generated by\nTUN users; this is particularly problematic for virtualization apps such as\nQEMU and KVM.  This patch adds three new LSM hooks designed to control the\ncreation and attachment of TUN devices, the hooks are:\n\n * security_tun_dev_create()\n   Provides access control for the creation of new TUN devices\n\n * security_tun_dev_post_create()\n   Provides the ability to create the necessary socket LSM state for newly\n   created TUN devices\n\n * security_tun_dev_attach()\n   Provides access control for attaching to existing, persistent TUN devices\n   and the ability to update the TUN device\u0027s socket LSM state as necessary\n\nSigned-off-by: Paul Moore \u003cpaul.moore@hp.com\u003e\nAcked-by: Eric Paris \u003ceparis@parisplace.org\u003e\nAcked-by: Serge Hallyn \u003cserue@us.ibm.com\u003e\nAcked-by: David S. Miller \u003cdavem@davemloft.net\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "aa11d958d1a6572eda08214d7c6a735804fe48a5",
      "tree": "d025b05270ad1e010660d17eeadc6ac3c1abbd7d",
      "parents": [
        "07f6642ee9418e962e54cbc07471cfe2e559c568",
        "9799218ae36910af50f002a5db1802d576fffb43"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Aug 12 17:44:53 2009 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Aug 12 17:44:53 2009 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6\n\nConflicts:\n\tarch/microblaze/include/asm/socket.h\n"
    },
    {
      "commit": "876bfd4d0f18cd1f698249870c7e7fb944de1c26",
      "tree": "62959754494fb97f48d7c4f811d913321b046554",
      "parents": [
        "9555b31e8c29d2000e1e1f569f6f242ebd596e47"
      ],
      "author": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Thu Aug 06 14:22:44 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Aug 09 21:45:35 2009 -0700"
      },
      "message": "tun: Extend RTNL lock coverage over whole ioctl\n\nAs it is, parts of the ioctl runs under the RTNL and parts of\nit do not.  The unlocked section is still protected by the BKL,\nbut there can be subtle races.  For example, Eric Biederman and\nPaul Moore observed that if two threads tried to create two tun\ndevices on the same file descriptor, then unexpected results\nmay occur.\n\nAs there isn\u0027t anything in the ioctl that is expected to sleep\nindefinitely, we can prevent this from occurring by extending\nthe RTNL lock coverage.\n\nThis also allows to get rid of the BKL.\n\nFinally, I changed tun_get_iff to take a tun device in order to\navoid calling tun_put which would dead-lock as it also tries to\ntake the RTNL lock.\n\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "e36aa25a533962b08402530e8443ac804a454e27",
      "tree": "2b61eba6b8cac10487467d1dec8f1d9072a75621",
      "parents": [
        "5c5167515d80f78f6bb538492c423adcae31ad65"
      ],
      "author": {
        "name": "Sridhar Samudrala",
        "email": "sri@us.ibm.com",
        "time": "Tue Jul 14 14:21:04 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jul 17 10:11:00 2009 -0700"
      },
      "message": "tun: Allow tap device to send/receive UFO packets.\n\n- Allow setting UFO on tap device and handle UFO packets.\n\nSigned-off-by: Sridhar Samudrala \u003csri@us.ibm.com\u003e\n\n---------------------------------------------------------\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "e5a8a896f5180f2950695d2d0b79db348d200ca4",
      "tree": "04adc57ae51a6d30a89ffae970770b81ee81fc23",
      "parents": [
        "bff38771e1065c7fc3de87e47ba366151eea573c",
        "e594e96e8a14101a6decabf6746bd5186287debc"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Jul 09 20:18:24 2009 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Jul 09 20:18:24 2009 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6\n"
    },
    {
      "commit": "460deefae62db4472e8bd16b21c7d70f3c7fd785",
      "tree": "870d0b16f5ba309e57ce224112d1a965bc2d9153",
      "parents": [
        "50f238fdf38e37f0350be17c36e3ec0fd298cc40"
      ],
      "author": {
        "name": "Paul Moore",
        "email": "paul.moore@hp.com",
        "time": "Tue Jul 07 08:11:33 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jul 07 19:22:11 2009 -0700"
      },
      "message": "tun: Remove a dead line of code\n\nRemove an unnecessary assignment.\n\nSigned-off-by: Paul Moore \u003cpaul.moore@hp.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "3c8a9c63d5fd738c261bd0ceece04d9c8357ca13",
      "tree": "7c60ab7e391f73ffcbcb98613ee454f843d7b3d1",
      "parents": [
        "1ded3f59f35a2642852b3e2a1c0fa8a97777e9af"
      ],
      "author": {
        "name": "Mariusz Kozlowski",
        "email": "m.kozlowski@tuxland.pl",
        "time": "Sun Jul 05 19:48:35 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jul 06 12:47:07 2009 -0700"
      },
      "message": "tun/tap: Fix crashes if open() /dev/net/tun and then poll() it.\n\nFix NULL pointer dereference in tun_chr_pool() introduced by commit\n33dccbb050bbe35b88ca8cf1228dcf3e4d4b3554 (\"tun: Limit amount of queued\npackets per device\") and triggered by this code:\n\n\tint fd;\n\tstruct pollfd pfd;\n\tfd \u003d open(\"/dev/net/tun\", O_RDWR);\n\tpfd.fd \u003d fd;\n\tpfd.events \u003d POLLIN | POLLOUT;\n\tpoll(\u0026pfd, 1, 0);\n\nReported-by: Eugene Kapun \u003cabacabadabacaba@gmail.com\u003e\nSigned-off-by: Mariusz Kozlowski \u003cm.kozlowski@tuxland.pl\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "6ed106549d17474ca17a16057f4c0ed4eba5a7ca",
      "tree": "b98c09081509b3a9757339b6b66779e4126dfa29",
      "parents": [
        "0e8635a8e1f2d4a9e1bfc6c3b21419a5921e674f"
      ],
      "author": {
        "name": "Patrick McHardy",
        "email": "kaber@trash.net",
        "time": "Tue Jun 23 06:03:08 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Jul 05 19:16:04 2009 -0700"
      },
      "message": "net: use NETDEV_TX_OK instead of 0 in ndo_start_xmit() functions\n\nThis patch is the result of an automatic spatch transformation to convert\nall ndo_start_xmit() return values of 0 to NETDEV_TX_OK.\n\nSome occurences are missed by the automatic conversion, those will be\nhandled in a seperate patch.\n\nSigned-off-by: Patrick McHardy \u003ckaber@trash.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "d23e43658aed286b885d398ff0810f04f6aae97f",
      "tree": "49449c308390dc319fc83378dbd357041c7f27ea",
      "parents": [
        "c001c213b109c8baeeb6d012b422bf059b18368f"
      ],
      "author": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Thu Jul 02 23:03:55 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Jul 05 18:03:18 2009 -0700"
      },
      "message": "tun: Fix device unregister race\n\nIt is currently possible for an asynchronous device unregister\nto cause the same tun device to be unregistered twice.  This\nis because the unregister in tun_chr_close only checks whether\n__tun_get(tfile) !\u003d NULL.  This however has nothing to do with\nwhether the device has already been unregistered.  All it tells\nyou is whether __tun_detach has been called.\n\nThis patch fixes this by using the most obvious thing to test\nwhether the device has been unregistered.\n\nIt also moves __tun_detach outside of rtnl_unlock since nothing\nthat it does requires that lock.\n\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "d405640539555b601e52f7d18f1f0b1345d18bf5",
      "tree": "6a748c0acea0fa72c732d2f188e57153418395e0",
      "parents": [
        "6fcf53acccf85b4b0d0260e66c692a341760f464"
      ],
      "author": {
        "name": "Kay Sievers",
        "email": "kay.sievers@vrfy.org",
        "time": "Thu Apr 30 15:23:42 2009 +0200"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Mon Jun 15 21:30:25 2009 -0700"
      },
      "message": "Driver Core: misc: add nodename support for misc devices.\n\nThis adds support for misc devices to report their requested nodename to\nuserspace.  It also updates a number of misc drivers to provide the\nneeded subdirectory and device name to be used for them.\n\nSigned-off-by: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nSigned-off-by: Jan Blunck \u003cjblunck@suse.de\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "f0a4d0e5b5bfd271e6737f7c095994835b70d450",
      "tree": "a3ee9afad29dd6e01d7fe36c45ec1cca8d052ab9",
      "parents": [
        "ef681ce1e8b3e63317cd724c200b2fd39286c005"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@aristanetworks.com",
        "time": "Mon Jun 08 00:44:31 2009 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jun 08 00:44:31 2009 -0700"
      },
      "message": "tun: Fix unregister race\n\nIt is possible for tun_chr_close to race with dellink on the\na tun device.  In which case if __tun_get runs before dellink\nbut dellink runs before tun_chr_close calls unregister_netdevice\nwe will attempt to unregister the netdevice after it is already\ngone.  \n\nThe two cases are already serialized on the rtnl_lock, so I have\ngone for the cheap simple fix of moving rtnl_lock to cover __tun_get\nin tun_chr_close.  Eliminating the possibility of the tun device\nbeing unregistered between __tun_get and unregister_netdevice in\ntun_chr_close.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@aristanetworks.com\u003e\nTested-by: David Woodhouse \u003cDavid.Woodhouse@intel.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "6f536f403979d37021508c5804509a379d853788",
      "tree": "d64d26d4e2c2c0bd2a487d9c5db77a4fe8b40969",
      "parents": [
        "2faef52b72958b8b1c08e927b9b0691c314cf6f4"
      ],
      "author": {
        "name": "Sridhar Samudrala",
        "email": "sri@us.ibm.com",
        "time": "Mon Jun 08 00:27:28 2009 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jun 08 00:27:28 2009 -0700"
      },
      "message": "tun: Fix copy/paste error in tun_get_user\n\nUse the right structure while incrementing the offset in tun_get_user.\n\nSigned-off-by: Sridhar Samudrala \u003csri@us.ibm.com\u003e\nAcked-by: Michael S. Tsirkin \u003cmst@redhat.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "4909122fb8350e70c347f1201256908a92058044",
      "tree": "ce87843cec44a1671bacff61b2c4fd25960efa6a",
      "parents": [
        "b82f08ea162edeee6c2c70c6c4321bea4763fa35"
      ],
      "author": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Mon Jun 08 00:20:01 2009 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jun 08 00:20:01 2009 -0700"
      },
      "message": "tun: Optimise handling of bogus gso-\u003ehdr_len\n\nAs all current versions of virtio_net generate a value for the\nheader length that\u0027s too small, we should optimise this so that\nwe don\u0027t copy it twice.  This can be done by ensuring that it is\nat least as large as the place where we\u0027ll write the checksum.\n\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "c722c625dbe2758d53365c0ed7d401b0e286f2cf",
      "tree": "4b73bc0edf80e3b5652c35512fbdb19f472b557a",
      "parents": [
        "a8c617eae4dc2ea9f3d64472233f2d3dc3c9993c"
      ],
      "author": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Wed Jun 03 21:45:55 2009 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jun 03 21:45:55 2009 -0700"
      },
      "message": "tun: Only wake up writers\n\nWhen I added socket accounting to tun I inadvertently introduced\nspurious wake-up events that kills qemu performance.  The problem\noccurs when qemu polls on the tun fd for read, and then transmits\npackets.  For each packet transmitted, we will wake up qemu even\nif it only cares about read events.\n\nNow this affects all sockets, but it is only a new problem for\ntun.  So this patch tries to fix it for tun first and we can then\nlook at the problem in general.\n \nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "980c9e8ceeb69ac4c921173d0d06323f5c678647",
      "tree": "6dc3a40501bf94177f40009cea3327dcb70462cb",
      "parents": [
        "ed9b58bc443a1210b5be1ded6421b17e015bf985"
      ],
      "author": {
        "name": "David Woodhouse",
        "email": "David.Woodhouse@intel.com",
        "time": "Sat May 09 22:54:21 2009 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat May 09 22:54:21 2009 -0700"
      },
      "message": "tun: add tun_flags, owner, group attributes in sysfs\n\nThis patch adds three attribute files in /sys/class/net/$dev/ for tun\ndevices; allowing userspace to obtain the information which TUNGETIFF\noffers, and more, but without having to attach to the device in question\n(which may not be possible if it\u0027s in use).\n\nIt also fixes a bug which has been present in the TUNGETIFF ioctl since\nits inception, where it would never set IFF_TUN or IFF_TAP according to\nthe device type. (Look carefully at the code which I remove from\ntun_get_iff() and how the new tun_flags() helper is subtly different).\n\nSigned-off-by: David Woodhouse \u003cDavid.Woodhouse@intel.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "f85ba78068ac137fe9c1f50d25405d2783d75c77",
      "tree": "68325fa489b07db5cf7311b79e9e245ed02e5d9a",
      "parents": [
        "0456b4f8b742006c2b79fcbe6b0736aa1ad39180"
      ],
      "author": {
        "name": "David Woodhouse",
        "email": "David.Woodhouse@intel.com",
        "time": "Mon Apr 27 03:23:54 2009 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Apr 27 03:23:54 2009 -0700"
      },
      "message": "tun: add IFF_TUN_EXCL flag to avoid opening a persistent device.\n\nWhen creating a certain types of VPN, NetworkManager will first attempt\nto find an available tun device by iterating through \u0027vpn%d\u0027 until it\nfinds one that isn\u0027t already busy. Then it\u0027ll set that to be persistent\nand owned by the otherwise unprivileged user that the VPN dæmon itself\nruns as.\n\nThere\u0027s a race condition here -- during the period where the vpn%d\ndevice is created and we\u0027re waiting for the VPN dæmon to actually\nconnect and use it, if we try to create _another_ device we could end up\nre-using the same one -- because trying to open it again doesn\u0027t get\n-EBUSY as it would while it\u0027s _actually_ busy.\n\nSo solve this, we add an IFF_TUN_EXCL flag which causes tun_set_iff() to\nfail if it would be opening an existing persistent tundevice -- so that\nwe can make sure we\u0027re getting an entirely _new_ device.\n\nSigned-off-by: David Woodhouse \u003cDavid.Woodhouse@intel.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "6f26c9a7555e5bcca3560919db9b852015077dae",
      "tree": "9ca7509cd0cbbdae158b752c234cb23add8370f0",
      "parents": [
        "43b39dcdbdf823a1c0ac1f2aa2d76bd2f210adc8"
      ],
      "author": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Mon Apr 20 01:26:11 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Apr 21 05:42:46 2009 -0700"
      },
      "message": "tun: fix tun_chr_aio_write so that aio works\n\naio_write gets const struct iovec * but tun_chr_aio_write casts this to struct\niovec * and modifies the iovec. As a result, attempts to use io_submit\nto send packets to a tun device fail with weird errors such as EINVAL.\n\nSince tun is the only user of skb_copy_datagram_from_iovec, we can\nfix this simply by changing the later so that it does not\ntouch the iovec passed to it.\n\nSigned-off-by: Michael S. Tsirkin \u003cmst@redhat.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "43b39dcdbdf823a1c0ac1f2aa2d76bd2f210adc8",
      "tree": "117c9b756380b59c8c29955f02c4d9ff504b047a",
      "parents": [
        "0a1ec07a67bd8b0033dace237249654d015efa21"
      ],
      "author": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Mon Apr 20 01:25:59 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Apr 21 05:42:45 2009 -0700"
      },
      "message": "tun: fix tun_chr_aio_read so that aio works\n\naio_read gets const struct iovec * but tun_chr_aio_read casts this to struct\niovec * and modifies the iovec. As a result, attempts to use io_submit\nto get packets from a tun device fail with weird errors such as EINVAL.\n\nFix by using the new skb_copy_datagram_const_iovec.\n\nSigned-off-by: Michael S. Tsirkin \u003cmst@redhat.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "c40af84a6726f63e35740d26f841992e8f31f92c",
      "tree": "dbb8271908d537817915814735cfc2a86130e2f6",
      "parents": [
        "9c3fea6ab04a7bd9298e635bf29b4a5379f6c476"
      ],
      "author": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Sun Apr 19 22:35:50 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Apr 20 03:01:48 2009 -0700"
      },
      "message": "tun: Fix sk_sleep races when attaching/detaching\n\nAs the sk_sleep wait queue actually lives in tfile, which may be\ndetached from the tun device, bad things will happen when we use\nsk_sleep after detaching.\n\nSince the tun device is the persistent data structure here (when\nrequested by the user), it makes much more sense to have the wait\nqueue live there.  There is no reason to have it in tfile at all\nsince the only time we can wait is if we have a tun attached.\nIn fact we already have a wait queue in tun_struct, so we might\nas well use it.\n\nReported-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nTested-by: Christian Borntraeger \u003cborntraeger@de.ibm.com\u003e\nTested-by: Patrick McHardy \u003ckaber@trash.net\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "9c3fea6ab04a7bd9298e635bf29b4a5379f6c476",
      "tree": "2b9977d85dc5f4de230a2d556e692cb30a6d945a",
      "parents": [
        "5db8765a86a4cbaf45adaf8c231cf9a6ca2dcfaf"
      ],
      "author": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Sat Apr 18 14:15:52 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Apr 20 03:01:47 2009 -0700"
      },
      "message": "tun: Only free a netdev when all tun descriptors are closed\n\nThe commit c70f182940f988448f3c12a209d18b1edc276e33 (\"tun: Fix\nraces between tun_net_close and free_netdev\") fixed a race where\nan asynchronous deletion of a tun device can hose a poll(2) on\na tun fd attached to that device.\n\nHowever, this came at the cost of moving the tun wait queue into\nthe tun file data structure.  The problem with this is that it\nimposes restrictions on when and where the tun device can access\nthe wait queue since the tun file may change at any time due to\ndetaching and reattaching.\n\nIn particular, now that we need to use the wait queue on the\nreceive path it becomes difficult to properly synchronise this\nwith the detachment of the tun device.\n\nThis patch solves the original race in a different way.  Since\nthe race is only because the underlying memory gets freed, we\ncan prevent it simply by ensuring that we don\u0027t do that until\nall tun descriptors ever attached to the device (even if they\nhave since be detached because they may still be sitting in poll)\nhave been closed.\n\nThis is done by using reference counting the attached tun file\ndescriptors.  The refcount in tun-\u003esk has been reappropriated\nfor this purpose since it was already being used for that, albeit\nfrom the opposite angle.\n\nNote that we no longer zero tfile-\u003etun since tun_get will return\nNULL anyway after the refcount on tfile hits zero.  Instead it\nrepresents whether this device has ever been attached to a device.\n\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "0eca93bcf73e5939053a94f7c48f8d6fe6199e00",
      "tree": "b4a95f8442b99cea946bfc8a4767489c0107feca",
      "parents": [
        "86bcebafc5e7f5163ccf828792fe694b112ed6fa"
      ],
      "author": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Tue Apr 14 02:09:43 2009 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Apr 14 02:09:43 2009 -0700"
      },
      "message": "tun: Fix crash with non-GSO users\n\nWhen I made the tun driver use non-linear packets as the preferred\noption, it broke non-GSO users because they would end up allocating\na completely non-linear packet, which triggers a crash when we call\neth_type_trans.\n\nThis patch reverts non-GSO users to using linear packets and adds\na check to ensure that GSO users can\u0027t cause crashes in the same\nway.\n\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "ab46d779661d7a03b7aa00279eead5dc3f0b3901",
      "tree": "a236f027cec78999581e84b56eae0c27bce31e42",
      "parents": [
        "ce3dd39595d9d64f4ba6ee8dd24c6269a3b56b6a"
      ],
      "author": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Sat Feb 14 20:46:39 2009 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Feb 14 20:46:39 2009 -0800"
      },
      "message": "tun: Fix merge error\n\nWhen forward-porting the tun accounting patch I managed to break\nthe send path compltely by dropping the tun_get call.\n\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "0ecc103aec454288cbaa5a33d8960ab3467e8a11",
      "tree": "d911ae41c303a575913b8aca2a49f4acaaf0fc93",
      "parents": [
        "0012985d184b7b9d4513eacd35771715471e06ef",
        "4906f9985e310fc01f956256b0d58ac28b0dcb19"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Feb 09 23:22:21 2009 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Feb 09 23:22:21 2009 -0800"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6\n\nConflicts:\n\tdrivers/net/gianfar.c\n"
    },
    {
      "commit": "cfbf84fcbcda98bb91ada683a8dc8e6901a83ebd",
      "tree": "abc699128c7579183a7d493ca88807d9ba3d710a",
      "parents": [
        "23b904f35128f3c596831cc3320bab1f2db81f60"
      ],
      "author": {
        "name": "Alex Williamson",
        "email": "alex.williamson@hp.com",
        "time": "Sun Feb 08 17:49:17 2009 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Feb 08 17:49:17 2009 -0800"
      },
      "message": "tun: Fix unicast filter overflow\n\nTap devices can make use of a small MAC filter set via the\nTUNSETTXFILTER ioctl.  The filter has a set of exact matches\nplus a hash for imperfect filtering of additional multicast\naddresses.  The current code is unbalanced, adding unicast\naddresses to the multicast hash, but only checking the hash\nagainst multicast addresses.  This results in the filter\ndropping unicast addresses that overflow the exact filter.\nThe fix is simply to disable the filter by leaving count set\nto zero if we find non-multicast addresses after the exact\nmatch table is filled.\n\nSigned-off-by: Alex Williamson \u003calex.williamson@hp.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "33dccbb050bbe35b88ca8cf1228dcf3e4d4b3554",
      "tree": "19435e330ac81b77c59a56ceea6c66d7efc0bc97",
      "parents": [
        "4cc7f68d65558f683c702d4fe3a5aac4c5227b97"
      ],
      "author": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Thu Feb 05 21:25:32 2009 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Feb 05 21:25:32 2009 -0800"
      },
      "message": "tun: Limit amount of queued packets per device\n\nUnlike a normal socket path, the tuntap device send path does\nnot have any accounting.  This means that the user-space sender\nmay be able to pin down arbitrary amounts of kernel memory by\ncontinuing to send data to an end-point that is congested.\n\nEven when this isn\u0027t an issue because of limited queueing at\nmost end points, this can also be a problem because its only\nresponse to congestion is packet loss.  That is, when those\nlocal queues at the end-point fills up, the tuntap device will\nstart wasting system time because it will continue to send\ndata there which simply gets dropped straight away.\n\nOf course one could argue that everybody should do congestion\ncontrol end-to-end, unfortunately there are people in this world\nstill hooked on UDP, and they don\u0027t appear to be going away\nanywhere fast.  In fact, we\u0027ve always helped them by performing\naccounting in our UDP code, the sole purpose of which is to\nprovide congestion feedback other than through packet loss.\n\nThis patch attempts to apply the same bandaid to the tuntap device.\nIt creates a pseudo-socket object which is used to account our\npackets just as a normal socket does for UDP.  Of course things\nare a little complex because we\u0027re actually reinjecting traffic\nback into the stack rather than out of the stack.\n\nThe stack complexities however should have been resolved by preceding\npatches.  So this one can simply start using skb_set_owner_w.\n\nFor now the accounting is essentially disabled by default for\nbackwards compatibility.  In particular, we set the cap to INT_MAX.\nThis is so that existing applications don\u0027t get confused by the\nsudden arrival EAGAIN errors.\n\nIn future we may wish (or be forced to) do this by default.\n\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "1bded710a574f20d41bc9e7fb531301db282d623",
      "tree": "02153d39ee525edaee35953c663926cb57075757",
      "parents": [
        "1a5645bc901aea6f3f446888061b2b084bbf1ba6"
      ],
      "author": {
        "name": "Michael Tokarev",
        "email": "mjt@tls.msk.ru",
        "time": "Mon Feb 02 23:34:56 2009 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Feb 02 23:34:56 2009 -0800"
      },
      "message": "tun: Check supplemental groups in TUN/TAP driver.\n\nMichael Tokarev wrote:\n[]\n\u003e 2, and this is the main one: How about supplementary groups?\n\u003e\n\u003e Here I have a valid usage case: a group of testers running various\n\u003e versions of windows using KVM (kernel virtual machine), 1 at a time,\n\u003e to test some software.  kvm is set up to use bridge with a tap device\n\u003e (there should be a way to connect to the machine).  Anyone on that group\n\u003e has to be able to start/stop the virtual machines.\n\u003e\n\u003e My first attempt - pretty obvious when I saw -g option of tunctl - is\n\u003e to add group ownership for the tun device and add a supplementary group\n\u003e to each user (their primary group should be different).  But that fails,\n\u003e since kernel only checks for egid, not any other group ids.\n\u003e\n\u003e What\u0027s the reasoning to not allow supplementary groups and to only check\n\u003e for egid?\n\nSigned-off-by: Michael Tokarev \u003cmjt@tls.msk.ru\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "09640e6365c679b5642b1c41b6d7078f51689ddf",
      "tree": "a2b80c153bd23fe59db8c6994fda29923819fcea",
      "parents": [
        "ee437770c42088b9b653e8b3bf28a61fa647f84e"
      ],
      "author": {
        "name": "Harvey Harrison",
        "email": "harvey.harrison@gmail.com",
        "time": "Sun Feb 01 00:45:17 2009 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Feb 01 00:45:17 2009 -0800"
      },
      "message": "net: replace uses of __constant_{endian}\n\nBase versions handle constant folding now.\n\nSigned-off-by: Harvey Harrison \u003charvey.harrison@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "f019a7a594d951f085eb3878c3d825556d447efe",
      "tree": "9abbe6c51ef39a4b9ab3b06dbc71c415ca443b4e",
      "parents": [
        "aec191aa2a04b082238156dc9690fff8ce95dd6b"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@aristanetworks.com",
        "time": "Wed Jan 21 16:02:16 2009 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jan 21 16:02:16 2009 -0800"
      },
      "message": "tun: Implement ip link del tunXXX\n\nThis greatly simplifies testing to verify I have fixed the problems\nwith a tun device disappearing when the tun file descriptor is still\nheld open.\n\nFurther it allows removal network namespace operations for the tun\ndriver.  Reducing the network namespace handling in the driver to the\nminimum.  i.e. When we are creating a tun device.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@aristanetworks.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "aec191aa2a04b082238156dc9690fff8ce95dd6b",
      "tree": "c854088cd3c8308a4f83d836ec94cf89d8d9fcd0",
      "parents": [
        "c70f182940f988448f3c12a209d18b1edc276e33"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Tue Jan 20 11:08:46 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jan 21 16:00:47 2009 -0800"
      },
      "message": "tun: There is no longer any need to deny changing network namespaces\n\nWith the awkward case between free_netdev and dev_chr_close fixed\nthere is no longer any need to limit tun and tap devices to the\nnetwork namespace they were created in.  So remove the\nNETIF_F_NETNS_LOCAL flag on the network device.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@aristanetworks.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "c70f182940f988448f3c12a209d18b1edc276e33",
      "tree": "6469d90befb657f4ef37cc40c03b97de992dba80",
      "parents": [
        "b2430de37ef0bc0799ffba7b5219d38ca417eb76"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Tue Jan 20 11:07:17 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jan 21 16:00:46 2009 -0800"
      },
      "message": "tun: Fix races between tun_net_close and free_netdev.\n\nThe tun code does not cope gracefully if the network device goes away before\nthe tun file descriptor is closed.  It looks like we can trigger this with\nrmmod, and moving tun devices between network namespaces will allow this\nto be triggered when network namespaces exit.\n\nTo fix this I introduce an intermediate data structure tun_file which\nholds a count of users and a pointer to the struct tun_struct.  tun_get\nincrements that reference count if it is greater than 0.  tun_put decrements\nthat reference count and detaches from the network device if the count is 0.\n\nWhile we have a file attached to the network device I hold a reference\nto the network device keeping it from going away completely.\n\nWhen a network device is unregistered I decrement the count of the\nattached tun_file and if that was the last user I detach the tun_file,\nand all processes on read_wait are woken up to ensure they do not\nsleep indefinitely. As some of those sleeps happen with the count on\nthe tun device elevated waking up the read waiters ensures that\ntun_file will be detached in a timely manner.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@aristanetworks.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "b2430de37ef0bc0799ffba7b5219d38ca417eb76",
      "tree": "19a5a5103ed2227f230aa06f87dc7807e871d5b5",
      "parents": [
        "38231b7a8d1b74c920822640d1ce8eb8046377fb"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Tue Jan 20 11:03:21 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jan 21 16:00:46 2009 -0800"
      },
      "message": "tun: Move read_wait into tun_file\n\nThe poll interface requires that the waitqueue exist while the struct\nfile is open.  In the rare case when a tun device disappears before\nthe tun file closes we fail to provide this property, so move\nread_wait.\n\nThis is safe now that tun_net_xmit is atomic with tun_detach.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@aristanetworks.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "38231b7a8d1b74c920822640d1ce8eb8046377fb",
      "tree": "fc7f1c3cc8ef34a64a740a2938934dbd598f0d93",
      "parents": [
        "36b50bab53207daf34be63ca62fb8b0b08dc6e6b"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Tue Jan 20 11:02:28 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jan 21 16:00:45 2009 -0800"
      },
      "message": "tun: Make tun_net_xmit atomic wrt tun_attach \u0026\u0026 tun_detach\n\nCurrently this small race allows for a packet to be received when we\ndetach from an tun device and still be enqueued.  Not especially\nimportant but not what the code is trying to do.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@aristanetworks.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "36b50bab53207daf34be63ca62fb8b0b08dc6e6b",
      "tree": "6363b239732a1ad8d9fd516993c8c6c093dc63a2",
      "parents": [
        "631ab46b79559d6fed784fd7883c0cda4d8cfcfa"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Tue Jan 20 11:01:48 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jan 21 16:00:45 2009 -0800"
      },
      "message": "tun: Grab the netns in open.\n\nGrabbing namespaces in open, and putting them in close always seems to\nbe the cleanest approach with the fewest surprises.\n\nSo now that we have tun_file so we have somepleace to put the network\nnamespace, let\u0027s grab the network namespace on file open and put on\nfile close.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@aristanetworks.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "631ab46b79559d6fed784fd7883c0cda4d8cfcfa",
      "tree": "8f78e43c4b5adf223254da3315f4957ac629a38a",
      "parents": [
        "eac9e902658dab1e097b8ef064e9e3d16c152cc9"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Tue Jan 20 11:00:40 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jan 21 16:00:44 2009 -0800"
      },
      "message": "tun: Introduce tun_file\n\nCurrently the tun code suffers from only having a single word of\ndata that exists for the entire life of the tun file descriptor.\n\nThis results in peculiar holding of references to the network namespace\nas well as races between free_netdevice and tun_chr_close.\n\nFix this by introducing tun_file which will hold the per file state.\nFor the moment it still holds just a single word so the differences\nare all logic changes with no changes in semantics.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@aristanetworks.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "eac9e902658dab1e097b8ef064e9e3d16c152cc9",
      "tree": "a4e9d99cd65a41be06e2740b2d86fdc67bb7bc7d",
      "parents": [
        "a7385ba21102a90f902055f9f185ca02bf62fa43"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Tue Jan 20 10:59:05 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jan 21 16:00:44 2009 -0800"
      },
      "message": "tun: Use POLLERR not EBADF in tun_chr_poll\n\nEBADF is meaningless in the context of a poll mask so use POLLERR\ninstead.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@aristanetworks.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "a7385ba21102a90f902055f9f185ca02bf62fa43",
      "tree": "93aa0f83a70f704e33ed378b2ad4636533bd7bde",
      "parents": [
        "74a3e5a71c9b54c63bff978e9cafbcef67600f0b"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Tue Jan 20 10:57:48 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jan 21 16:00:43 2009 -0800"
      },
      "message": "tun: Fix races in tun_set_iff\n\nIt is possible for two different tasks with access to the same file\ndescriptor to call tun_set_iff on it at the same time and race to\nattach to a tap device.  Prevent this by placing all of the logic to\nattach to a file descriptor in one function and testing the file\ndescriptor to be certain it is not already attached to another tun\ndevice.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@aristanetworks.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "74a3e5a71c9b54c63bff978e9cafbcef67600f0b",
      "tree": "b6c3c043a40e62e5ba0e922c90545ee2a986616f",
      "parents": [
        "f5882c30508c1e3c4fbbdaa9ca08d0922c5fb071"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Tue Jan 20 10:56:20 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jan 21 16:00:43 2009 -0800"
      },
      "message": "tun: Remove unnecessary tun_get_by_name\n\nCurrently the tun driver keeps a private list of tun devices for what\nappears to be a small gain in performance when reconnecting a file\ndescriptor to an existing tun or tap device.  So simplify the code by\nremoving it.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@aristanetworks.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "745417e20684e4951afcabfe74583a3884e54980",
      "tree": "c9691a508557edd2a912207bb03b357ae24e957b",
      "parents": [
        "f26251eb68ea766a98fed922593c154d15127621"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Sun Jan 04 17:14:46 2009 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Jan 04 17:14:46 2009 -0800"
      },
      "message": "tun: Eliminate sparse signedness warning\n\nregister_pernet_gen_device() expects \u0027int*\u0027, found via sparse.\n\n CHECK   drivers/net/tun.c\n drivers/net/tun.c:1245:36: warning: incorrect type in argument 1 (different signedness)\n drivers/net/tun.c:1245:36:    expected int *id\n drivers/net/tun.c:1245:36:    got unsigned int static [toplevel] *\u003cnoident\u003e\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "7a0a9608e4459afdf2e4a7831c1cbeb41353adf6",
      "tree": "4f67fafa9ab6532dedbce1c7830a450a5e274bb0",
      "parents": [
        "36f8b9238373751b684650871fd161546b10116c"
      ],
      "author": {
        "name": "Kusanagi Kouichi",
        "email": "slash@ma.neweb.ne.jp",
        "time": "Mon Dec 29 18:23:28 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Dec 29 18:23:28 2008 -0800"
      },
      "message": "tun: Fix SIOCSIFHWADDR error.\n\nSet proper operations.\n\nSigned-off-by: Kusanagi Kouichi \u003cslash@ma.neweb.ne.jp\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "0191b625ca5a46206d2fb862bb08f36f2fcb3b31",
      "tree": "454d1842b1833d976da62abcbd5c47521ebe9bd7",
      "parents": [
        "54a696bd07c14d3b1192d03ce7269bc59b45209a",
        "eb56092fc168bf5af199d47af50c0d84a96db898"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Dec 28 12:49:40 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Dec 28 12:49:40 2008 -0800"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6: (1429 commits)\n  net: Allow dependancies of FDDI \u0026 Tokenring to be modular.\n  igb: Fix build warning when DCA is disabled.\n  net: Fix warning fallout from recent NAPI interface changes.\n  gro: Fix potential use after free\n  sfc: If AN is enabled, always read speed/duplex from the AN advertising bits\n  sfc: When disabling the NIC, close the device rather than unregistering it\n  sfc: SFT9001: Add cable diagnostics\n  sfc: Add support for multiple PHY self-tests\n  sfc: Merge top-level functions for self-tests\n  sfc: Clean up PHY mode management in loopback self-test\n  sfc: Fix unreliable link detection in some loopback modes\n  sfc: Generate unique names for per-NIC workqueues\n  802.3ad: use standard ethhdr instead of ad_header\n  802.3ad: generalize out mac address initializer\n  802.3ad: initialize ports LACPDU from const initializer\n  802.3ad: remove typedef around ad_system\n  802.3ad: turn ports is_individual into a bool\n  802.3ad: turn ports is_enabled into a bool\n  802.3ad: make ntt bool\n  ixgbe: Fix set_ringparam in ixgbe to use the same memory pools.\n  ...\n\nFixed trivial IPv4/6 address printing conflicts in fs/cifs/connect.c due\nto the conversion to %pI (in this networking merge) and the addition of\ndoing IPv6 addresses (from the earlier merge of CIFS).\n"
    },
    {
      "commit": "008298231abbeb91bc7be9e8b078607b816d1a4a",
      "tree": "8cb0c17720086ef97c614b96241f06aa63ce8511",
      "parents": [
        "6ab33d51713d6d60c7677c0d020910a8cb37e513"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Thu Nov 20 20:14:53 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Nov 20 20:14:53 2008 -0800"
      },
      "message": "netdev: add more functions to netdevice ops\n\nThis patch moves neigh_setup and hard_start_xmit into the network device ops\nstructure. For bisection, fix all the previously converted drivers as well.\nBonding driver took the biggest hit on this.\n\nAdded a prefetch of the hard_start_xmit in the fast path to try and reduce\nany impact this would have.\n\nSigned-off-by: Stephen Hemminger \u003cshemminger@vyatta.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "758e43b74c903ad368ceced31601ba5d96f31238",
      "tree": "6942bc3aae54bd1d46067dc9462f8b0eb4dc9c77",
      "parents": [
        "48dfcde46ef23cfad1e0c0f13d4eae15c7f46efc"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Wed Nov 19 22:10:37 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Nov 19 22:42:47 2008 -0800"
      },
      "message": "tun: convert to net_device_ops\n\nConvert the TUN/TAP tunnel driver to net_device_ops.\nSplit the ops in two, and retain compatability.\n\nSigned-off-by: Stephen Hemminger \u003cshemminger@vyatta.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "86a264abe542cfececb4df129bc45a0338d8cdb9",
      "tree": "30152f04ba847f311028d5ca697f864c16c7ebb3",
      "parents": [
        "f1752eec6145c97163dbce62d17cf5d928e28a27"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Nov 14 10:39:18 2008 +1100"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Fri Nov 14 10:39:18 2008 +1100"
      },
      "message": "CRED: Wrap current-\u003ecred and a few other accessors\n\nWrap current-\u003ecred and a few other accessors to hide their actual\nimplementation.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: James Morris \u003cjmorris@namei.org\u003e\nAcked-by: Serge Hallyn \u003cserue@us.ibm.com\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "ee9785ada3573700efe77b78c03d4e26a4e1bf26",
      "tree": "8e7ed03fa61a04c3a35b99cab0835b99d41488ea",
      "parents": [
        "0e164b685cab357546a9a09ef234922b82ecbfaf"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Nov 14 10:38:43 2008 +1100"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Fri Nov 14 10:38:43 2008 +1100"
      },
      "message": "CRED: Wrap task credential accesses in the network device drivers\n\nWrap access to task credentials so that they can be separated more easily from\nthe task_struct during the introduction of COW creds.\n\nChange most current-\u003e(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id().\n\nChange some task-\u003ee?[ug]id to task_e?[ug]id().  In some places it makes more\nsense to use RCU directly rather than a convenient wrapper; these will be\naddressed by later patches.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nReviewed-by: James Morris \u003cjmorris@namei.org\u003e\nAcked-by: Serge Hallyn \u003cserue@us.ibm.com\u003e\nCc: netdev@vger.kernel.org\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "9eeda9abd1faf489f3df9a1f557975f4c8650363",
      "tree": "3e0a58e25b776cfbee193195460324dccb1886c7",
      "parents": [
        "61c9eaf90081cbe6dc4f389e0056bff76eca19ec",
        "4bab0ea1d42dd1927af9df6fbf0003fc00617c50"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Nov 06 22:43:03 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Nov 06 22:43:03 2008 -0800"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6\n\nConflicts:\n\n\tdrivers/net/wireless/ath5k/base.c\n\tnet/8021q/vlan_core.c\n"
    },
    {
      "commit": "babcda74e9d96bb58fd9c6c5112dbdbff169e695",
      "tree": "fcbe5e70f1fff01ad49504171e964c387a5ad7f8",
      "parents": [
        "ab2910921064b657610a3b501358a305e13087ea"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Nov 03 21:11:17 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Nov 03 21:11:17 2008 -0800"
      },
      "message": "drivers/net: Kill now superfluous -\u003elast_rx stores.\n\nThe generic packet receive code takes care of setting\nnetdev-\u003elast_rx when necessary, for the sake of the\nbonding ARP monitor.\n\nDrivers need not do it any more.\n\nSome cases had to be skipped over because the drivers\nwere making use of the -\u003elast_rx value themselves.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\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": "e174961ca1a0b28f7abf0be47973ad57cb74e5f0",
      "tree": "e8f74ecd420a0e380a71670e5aec5c2a0c15640a",
      "parents": [
        "0c68ae2605dbcf67414d8d1f19af93be44b355fb"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes@sipsolutions.net",
        "time": "Mon Oct 27 15:59:26 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Oct 27 17:06:18 2008 -0700"
      },
      "message": "net: convert print_mac to %pM\n\nThis converts pretty much everything to print_mac. There were\na few things that had conflicts which I have just dropped for\nnow, no harm done.\n\nI\u0027ve built an allyesconfig with this and looked at the files\nthat weren\u0027t built very carefully, but it\u0027s a huge patch.\n\nSigned-off-by: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "f42157cb568c1eb02eca7df4da67553a9edae24a",
      "tree": "f8c104a73ae5558e104a07e254a9eafd7839269d",
      "parents": [
        "db543c1f973cd1d557cc32ceee76737c1e4d2898"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Aug 15 15:15:10 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Aug 15 19:52:31 2008 -0700"
      },
      "message": "tun: fallback if skb_alloc() fails on big packets\n\nskb_alloc produces linear packets (using kmalloc()).  That can fail,\nso should we fall back to making paged skbs.\n\nMy original version of this patch always allocate paged skbs for big\npackets.  But that made performance drop from 8.4 seconds to 8.8\nseconds on 1G lguest-\u003eHost TCP xmit.  So now we only do that as a\nfallback.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nAcked-by: Max Krasnyansky \u003cmaxk@qualcomm.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "e3b99556975907530aeb9745e7b3945a0da48f17",
      "tree": "97f764e5c8587efcba64ad8d0edce9fee094e143",
      "parents": [
        "04a0551c87363f100b04d28d7a15a632b70e18e7"
      ],
      "author": {
        "name": "Mark McLoughlin",
        "email": "markmc@redhat.com",
        "time": "Fri Aug 15 15:09:56 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Aug 15 19:52:19 2008 -0700"
      },
      "message": "tun: TUNGETIFF interface to query name and flags\n\nAdd a TUNGETIFF interface so that userspace can query a\ntun/tap descriptor for its name and flags.\n\nThis is needed because it is common for one app to create\na tap interface, exec another app and pass it the file\ndescriptor for the interface. Without TUNGETIFF the spawned\napp has no way of detecting wheter the interface has e.g.\nIFF_VNET_HDR set.\n\nSigned-off-by: Mark McLoughlin \u003cmarkmc@redhat.com\u003e\nAcked-by: Max Krasnyansky \u003cmaxk@qualcomm.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "c0e5a8c21bb9bb222917c36eba503ae88af52c34",
      "tree": "9bcbd5d424b18a8f1984963b9c570fbb1960615b",
      "parents": [
        "25ac3c24839002298e9329a5fda305e5383b1dc7"
      ],
      "author": {
        "name": "Harvey Harrison",
        "email": "harvey.harrison@gmail.com",
        "time": "Wed Jul 16 12:45:34 2008 -0700"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Tue Jul 22 17:54:17 2008 -0400"
      },
      "message": "net: tun.c fix cast\n\nSigned-off-by: Harvey Harrison \u003charvey.harrison@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "49997d75152b3d23c53b0fa730599f2f74c92c65",
      "tree": "46e93126170d02cfec9505172e545732c1b69656",
      "parents": [
        "a0c80b80e0fb48129e4e9d6a9ede914f9ff1850d",
        "5b664cb235e97afbf34db9c4d77f08ebd725335e"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jul 18 02:39:39 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jul 18 02:39:39 2008 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/torvalds/linux-2.6\n\nConflicts:\n\n\tDocumentation/powerpc/booting-without-of.txt\n\tdrivers/atm/Makefile\n\tdrivers/net/fs_enet/fs_enet-main.c\n\tdrivers/pci/pci-acpi.c\n\tnet/8021q/vlan.c\n\tnet/iucv/iucv.c\n"
    },
    {
      "commit": "f271b2cc78f09c93ccd00a2056d3237134bf994c",
      "tree": "25b379fa23a84627992c197d2e18793fd90c2a7e",
      "parents": [
        "89146504cbfeb120dd08ec7f9f8314c4986189b8"
      ],
      "author": {
        "name": "Max Krasnyansky",
        "email": "maxk@qualcomm.com",
        "time": "Mon Jul 14 22:18:19 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jul 14 22:18:19 2008 -0700"
      },
      "message": "tun: Fix/rewrite packet filtering logic\n\nPlease see the following thread to get some context on this\n\thttp://marc.info/?l\u003dlinux-netdev\u0026m\u003d121564433018903\u0026w\u003d2\n\nBasically the issue is that current multi-cast filtering stuff in\nthe TUN/TAP driver is seriously broken.\nOriginal patch went in without proper review and ACK. It was broken and\nconfusing to start with and subsequent patches broke it completely.\nTo give you an idea of what\u0027s broken here are some of the issues:\n\n- Very confusing comments throughout the code that imply that the\ncharacter device is a network interface in its own right, and that packets\nare passed between the two nics. Which is completely wrong.\n\n- Wrong set of ioctls is used for setting up filters. They look like\nshortcuts for manipulating state of the tun/tap network interface but\nin reality manipulate the state of the TX filter.\n\n- ioctls that were originally used for setting address of the the TX filter\ngot \"fixed\" and now set the address of the network interface itself. Which\nmade filter totaly useless.\n\n- Filtering is done too late. Instead of filtering early on, to avoid\nunnecessary wakeups, filtering is done in the read() call.\n\nThe list goes on and on :)\n\nSo the patch cleans all that up. It introduces simple and clean interface for\nsetting up TX filters (TUNSETTXFILTER + tun_filter spec) and does filtering\nbefore enqueuing the packets.\n\nTX filtering is useful in the scenarios where TAP is part of a bridge, in\nwhich case it gets all broadcast, multicast and potentially other packets when\nthe bridge is learning. So for example Ethernet tunnelling app may want to\nsetup TX filters to avoid tunnelling multicast traffic. QEMU and other\nhypervisors can push RX filtering that is currently done in the guest into the\nhost context therefore saving wakeups and unnecessary data transfer.\n\nSigned-off-by: Max Krasnyansky \u003cmaxk@qualcomm.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "2aec609fb45e84d65bc8eabc7b650bbecb1cc179",
      "tree": "eb3e8a79604113392d0ee74b19dbc1dfce579c11",
      "parents": [
        "4c8894980010536915c4f5513ee180e3614aeca9",
        "9076689ab07974a6f5d230fc241448f7a77e9078"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jul 14 20:23:54 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jul 14 20:23:54 2008 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6\n\nConflicts:\n\n\tnet/netfilter/nf_conntrack_proto_tcp.c\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": "e35259a95331ae4a9146cc03ab49aad641cab957",
      "tree": "703ee0018e29c07215e2bb3f3bc0b9040d2ce6fe",
      "parents": [
        "ccf9b3b83d0e56fbf20c00a08b15031ce13204a7"
      ],
      "author": {
        "name": "Max Krasnyansky",
        "email": "maxk@qualcomm.com",
        "time": "Thu Jul 10 16:59:11 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Jul 10 16:59:11 2008 -0700"
      },
      "message": "tun: Persistent devices can get stuck in xoff state\n\nThe scenario goes like this. App stops reading from tun/tap.\nTX queue gets full and driver does netif_stop_queue().\nApp closes fd and TX queue gets flushed as part of the cleanup.\nNext time the app opens tun/tap and starts reading from it but\nthe xoff state is not cleared. We\u0027re stuck.\nNormally xoff state is cleared when netdev is brought up. But\nin the case of persistent devices this happens only during\ninitial setup.\n\nThe fix is trivial. If device is already up when an app opens\nit we clear xoff state and that gets things moving again.\n\nSigned-off-by: Max Krasnyansky \u003cmaxk@qualcomm.com\u003e\nTested-by: Christian Borntraeger \u003cborntraeger@de.ibm.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "f43798c27684ab925adde7d8acc34c78c6e50df8",
      "tree": "21e952a07534dd382835246d02245d5e776c4d8b",
      "parents": [
        "5228ddc98fa49b3cedab4024e269d62410a0d806"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Jul 03 03:48:02 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Jul 03 03:48:02 2008 -0700"
      },
      "message": "tun: Allow GSO using virtio_net_hdr\n\nAdd a IFF_VNET_HDR flag.  This uses the same ABI as virtio_net\n(ie. prepending struct virtio_net_hdr to packets) to indicate GSO and\nchecksum information.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nAcked-by: Max Krasnyansky \u003cmaxk@qualcomm.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "5228ddc98fa49b3cedab4024e269d62410a0d806",
      "tree": "0d3cceeac55ec09b0fa593666bc03373954b3d9a",
      "parents": [
        "07240fd0902c872f044f523893364a1a24c9f278"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Jul 03 03:46:16 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Jul 03 03:46:16 2008 -0700"
      },
      "message": "tun: TUNSETFEATURES to set gso features.\n\nethtool is useful for setting (some) device fields, but it\u0027s\nroot-only.  Finer feature control is available through a tun-specific\nioctl.\n\n(Includes Mark McLoughlin \u003cmarkmc@redhat.com\u003e\u0027s fix to hold rtnl sem).\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nAcked-by: Max Krasnyansky \u003cmaxk@qualcomm.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "07240fd0902c872f044f523893364a1a24c9f278",
      "tree": "096286005c0b1a19c23011b3c7418710704b833e",
      "parents": [
        "44d28ab19c64d095314ac66f765d0c747519f4ed"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Jul 03 03:45:32 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Jul 03 03:45:32 2008 -0700"
      },
      "message": "tun: Interface to query tun/tap features.\n\nThe problem with introducing checksum offload and gso to tun is they\nneed to set dev-\u003efeatures to enable GSO and/or checksumming, which is\nsupposed to be done before register_netdevice(), ie. as part of\nTUNSETIFF.\n\nUnfortunately, TUNSETIFF has always just ignored flags it doesn\u0027t\nunderstand, so there\u0027s no good way of detecting whether the kernel\nsupports new IFF_ flags.\n\nThis patch implements a TUNGETFEATURES ioctl which returns all the valid IFF\nflags.  It could be extended later to include other features.\n\nHere\u0027s an example program which uses it:\n\n#include \u003clinux/if_tun.h\u003e\n#include \u003csys/types.h\u003e\n#include \u003csys/ioctl.h\u003e\n#include \u003csys/stat.h\u003e\n#include \u003cfcntl.h\u003e\n#include \u003cerr.h\u003e\n#include \u003cstdio.h\u003e\n\nstatic struct {\n\tunsigned int flag;\n\tconst char *name;\n} known_flags[] \u003d {\n\t{ IFF_TUN, \"TUN\" },\n\t{ IFF_TAP, \"TAP\" },\n\t{ IFF_NO_PI, \"NO_PI\" },\n\t{ IFF_ONE_QUEUE, \"ONE_QUEUE\" },\n};\n\nint main()\n{\n\tunsigned int features, i;\n\n\tint netfd \u003d open(\"/dev/net/tun\", O_RDWR);\n\tif (netfd \u003c 0)\n\t\terr(1, \"Opening /dev/net/tun\");\n\n\tif (ioctl(netfd, TUNGETFEATURES, \u0026features) !\u003d 0) {\n\t\tprintf(\"Kernel does not support TUNGETFEATURES, guessing\\n\");\n\t\tfeatures \u003d (IFF_TUN|IFF_TAP|IFF_NO_PI|IFF_ONE_QUEUE);\n\t}\n\tprintf(\"Available features are: \");\n\tfor (i \u003d 0; i \u003c sizeof(known_flags)/sizeof(known_flags[0]); i++) {\n\t\tif (features \u0026 known_flags[i].flag) {\n\t\t\tfeatures \u0026\u003d ~known_flags[i].flag;\n\t\t\tprintf(\"%s \", known_flags[i].name);\n\t\t}\n\t}\n\tif (features)\n\t\tprintf(\"(UNKNOWN %#x)\", features);\n\tprintf(\"\\n\");\n\treturn 0;\n}\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nAcked-by: Max Krasnyansky \u003cmaxk@qualcomm.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "9d319522576ce0b2fd023a965445f9c3739ee6f1",
      "tree": "c4e2f1634d5f54a4ee3a77adf62cb2556169c239",
      "parents": [
        "743115ee05f09f356d86763316acf627a7f5a6b3"
      ],
      "author": {
        "name": "Jonathan Corbet",
        "email": "corbet@lwn.net",
        "time": "Thu Jun 19 15:50:37 2008 -0600"
      },
      "committer": {
        "name": "Jonathan Corbet",
        "email": "corbet@lwn.net",
        "time": "Wed Jul 02 15:06:27 2008 -0600"
      },
      "message": "tun: fasync BKL pushdown\n\nSigned-off-by: Jonathan Corbet \u003ccorbet@lwn.net\u003e\n"
    },
    {
      "commit": "fd3e05b6c82ebee06f888482975172028e89382d",
      "tree": "e76544e8cf04a629271c04074458ae9b04e86ca4",
      "parents": [
        "db41bc9c4dfeed656dfd63d26883f81abc4005df"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Tue May 20 19:16:24 2008 +0200"
      },
      "committer": {
        "name": "Jonathan Corbet",
        "email": "corbet@lwn.net",
        "time": "Wed Jul 02 15:06:23 2008 -0600"
      },
      "message": "net-tun: BKL pushdown\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\n"
    },
    {
      "commit": "f09f7ee20c867818bacf79426cf491b2749e7eff",
      "tree": "c570f7385827241c45dae25611759b0909ede9ce",
      "parents": [
        "fe833fca2eac6b3d3ad5e35f44ad4638362f1da8"
      ],
      "author": {
        "name": "Ang Way Chuang",
        "email": "wcang@nav6.org",
        "time": "Tue Jun 17 21:10:33 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jun 17 21:10:33 2008 -0700"
      },
      "message": "tun: Proper handling of IPv6 header in tun driver when TUN_NO_PI is set\n\nBy default, tun.c running in TUN_TUN_DEV mode will set the protocol of\npacket to IPv4 if TUN_NO_PI is set. My program failed to work when I\nassumed that the driver will check the first nibble of packet,\ndetermine IP version and set the appropriate protocol.\n\nSigned-off-by: Ang Way Chuang \u003cwcang@nav6.org\u003e\nAcked-by: Max Krasnyansky \u003cmaxk@qualcomm.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "9edb74cc6ccb3a893c3d40727b7003c3c16f85a0",
      "tree": "8f45047eb778c13150809df837c1a1327a3f6c05",
      "parents": [
        "5e659e4cb0eedacdc1f621a61e400a4611ddef8a"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Apr 24 03:44:43 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Apr 24 03:44:43 2008 -0700"
      },
      "message": "tun: Multicast handling in tun_chr_ioctl() needs proper locking.\n\nSince these operations don\u0027t go through the normal\ndevice calls, we have to ensure we synchronize with\nthose paths.\n\nNoticed by Alan Cox.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "48abfe05cd01279afe27159e98d7c7f932598f42",
      "tree": "b2a408b97806ee86003a804734972523453b8164",
      "parents": [
        "8c0469cdd08df4dacabc8ca33256ce20de43d73f"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Apr 23 19:37:58 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Apr 23 19:37:58 2008 -0700"
      },
      "message": "tun: Fix minor race in TUNSETLINK ioctl handling.\n\nNoticed by Alan Cox.\n\nThe IFF_UP test is a bit racey, because other entities\noutside of this driver\u0027s ioctl handler can modify that\nstate, even though this ioctl handler runs under\nlock_kernel().\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "fc54c65853dbfd2f70ff827b73344f9de4e4b501",
      "tree": "eba647feaa75df68b852b2d5d948e5ee5f7dbddf",
      "parents": [
        "d647a591dae06ccc96210cea938aa0342ef935fc"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Wed Apr 16 00:41:53 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Apr 16 00:41:53 2008 -0700"
      },
      "message": "[TUN]: Allow to register tun devices in namespace.\n\nThis is basically means that a net is set for a new device, but\nactually also involves two more steps:\n\n1. mark the tun device as \"local\", i.e. do not allow for it to\n   move across namespaces.\n\nThis is done so, since tun device is most often associated to some\nfile (and thus to some process) and moving the device alone is not\nvalid while keeping the file and the process outside. The need in \nability to move a detached persistent device is to be investigated \nlater.\n\n2. get the tun device\u0027s net when tun becomes attached and put one\n   when it becomes detached.\n\nThis is needed to handle the case when a task owning the tun dies,\nbut a files lives for some more time - in this case we must not\nallow for net to be freed, since its exit hook will spoil that file\u0027s\nprivate data by unregistering the tun from under tun_chr_close.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "d647a591dae06ccc96210cea938aa0342ef935fc",
      "tree": "26bcb08b810e411b73a5f63bf486f1651c27cd2e",
      "parents": [
        "79d1760491a25bfc70aeac363142cadd3f1cda71"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Wed Apr 16 00:41:16 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Apr 16 00:41:16 2008 -0700"
      },
      "message": "[TUN]: Make the tun_dev_list per-net.\n\nRemove the static tun_dev_list and replace its occurrences in\ndriver with per-net one.\n\nIt is used in two places - in tun_set_iff and tun_cleanup. In \nthe first case it\u0027s legal to use current net_ns. In the cleanup\ncall - move the loop, that unregisters all devices in net exit\nhook.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "79d1760491a25bfc70aeac363142cadd3f1cda71",
      "tree": "8c5a2d8f2d1b0f09097013abad7b8c2dc2852494",
      "parents": [
        "17515408a15fa51c553e67c415502e785145cd7f"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Wed Apr 16 00:40:46 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Apr 16 00:40:46 2008 -0700"
      },
      "message": "[TUN]: Introduce the tun_net structure and init/exit net ops.\n\nThis is the first step in making tuntap devices work in net \nnamespaces. The structure mentioned is pointed by generic\nnet pointer with tun_net_id id, and tun driver fills one on \nits load. It will contain only the tun devices list.\n\nSo declare this structure and introduce net init and exit hooks.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "e01bf1c83332c4653ffd30eed20a94a9c83d82b2",
      "tree": "bb39605cba8ced4b5cc3f0aca63b345ec02e29a9",
      "parents": [
        "14daa02139dcb3193b2b0250c0720a23ef610c49"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Sat Apr 12 18:49:30 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Apr 12 18:49:30 2008 -0700"
      },
      "message": "net: check for underlength tap writes\n\nIf the user gives a packet under 14 bytes, we\u0027ll end up reading off the end\nof the skb (not oopsing, just reading off the end).\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nAcked-by: Max Krasnyanskiy \u003cmaxk@qualcomm.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "14daa02139dcb3193b2b0250c0720a23ef610c49",
      "tree": "cc83e98b48f62363f2295c39d03b8a40a180924a",
      "parents": [
        "a40a7d15ba602b547f56b7b19e0282fe4fc3dee3"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Sat Apr 12 18:48:58 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Apr 12 18:48:58 2008 -0700"
      },
      "message": "net: make struct tun_struct private to tun.c\n\nThere\u0027s no reason for this to be in the header, and it just hurts\nrecompile time.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nAcked-by: Max Krasnyanskiy \u003cmaxk@qualcomm.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "401023710d73aaef1191ab4d6a79d39c51add828",
      "tree": "a19260d86b6fa1cdb27a368a3d77335cdfb27dbf",
      "parents": [
        "459eea74104ad85c30e17541c2b30d776445e985"
      ],
      "author": {
        "name": "Kim B. Heino",
        "email": "Kim.Heino@bluegiga.com",
        "time": "Fri Feb 29 12:26:21 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Feb 29 12:26:21 2008 -0800"
      },
      "message": "[TUN]: Fix RTNL-locking in tun/tap driver\n\nCurrent tun/tap driver sets also net device\u0027s hw address when asked to\nchange character device\u0027s hw address. This is a good idea, but it\nmisses RTLN-locking, resulting following error message in 2.6.25-rc3\u0027s\ninetdev_event() function:\n\nRTNL: assertion failed at net/ipv4/devinet.c (1050)\n\nAttached patch fixes this problem.\n\nSigned-off-by: Kim B. Heino \u003cKim.Heino@bluegiga.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "a26af1e08a3a1e0f88e6f2685ac2313d713a59c9",
      "tree": "c4b9cdf04305c094e88e2446ec25f7823d38158e",
      "parents": [
        "cd8d627a6b66d9755637b4dad2083864a9bfce9a"
      ],
      "author": {
        "name": "Nathaniel Filardo",
        "email": "nwfilardo@gmail.com",
        "time": "Tue Feb 05 03:05:07 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Feb 05 03:05:07 2008 -0800"
      },
      "message": "tun: impossible to deassert IFF_ONE_QUEUE or IFF_NO_PI\n\nFrom: \"Nathaniel Filardo\" \u003cnwfilardo@gmail.com\u003e\n\nTaken from http://bugzilla.kernel.org/show_bug.cgi?id\u003d9806\n\nThe TUN/TAP driver only permits one-way transitions of IFF_NO_PI or\nIFF_ONE_QUEUE during the lifetime of a tap/tun interface.  Note that\ntun_set_iff contains\n\n 541         if (ifr-\u003eifr_flags \u0026 IFF_NO_PI)\n 542                 tun-\u003eflags |\u003d TUN_NO_PI;\n 543 \n 544         if (ifr-\u003eifr_flags \u0026 IFF_ONE_QUEUE)\n 545                 tun-\u003eflags |\u003d TUN_ONE_QUEUE;\n\nThis is easily fixed by adding else branches which clear these bits.\n\nSteps to reproduce:\n\nThis is easily reproduced by setting an interface persistant using tunctl then\nattempting to open it as IFF_TAP or IFF_TUN, without asserting the IFF_NO_PI\nflag.  The ioctl() will succeed and the ifr.flags word is not modified, but the\ninterface remains in IFF_NO_PI mode (as it was set by tunctl).\n\nAcked-by: Maxim Krasnyansky \u003cmaxk@qualcomm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "a3edb08311fc559652ffc959e93eb5be9294443f",
      "tree": "5e3795acaf64e34703c006a548f013ff0401e97a",
      "parents": [
        "7eefb04eb0761ce220890975fe33b7c262612c0d"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@ftp.linux.org.uk",
        "time": "Sat Dec 22 17:52:42 2007 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 28 15:07:57 2008 -0800"
      },
      "message": "annotate tun\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "52427c9d11477d5a2633d81050f52523decf9eff",
      "tree": "e4107505fb7f7041344e0ec77a9ac714383f9b4a",
      "parents": [
        "02d45827fa211093202f96bdd58020cc8687929f"
      ],
      "author": {
        "name": "Akinobu Mita",
        "email": "akinobu.mita@gmail.com",
        "time": "Mon Nov 19 22:46:51 2007 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 28 14:54:34 2008 -0800"
      },
      "message": "[TUN]: Use iov_length()\n\nUse iov_length() instead of tun\u0027s homemade iov_total().\n\nSigned-off-by: Akinobu Mita \u003cakinobu.mita@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "c6e991de4bd22dcdf9b9d9035e18b63b0bf2d198",
      "tree": "67589b3e54d7f17e2e23062c3369a0f5f1e1483a",
      "parents": [
        "fae718ddaf2b00e222dddec6717aca023376723c"
      ],
      "author": {
        "name": "Toyo Abe",
        "email": "tabe@miraclelinux.com",
        "time": "Mon Dec 24 21:29:35 2007 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Dec 26 19:36:34 2007 -0800"
      },
      "message": "[TUNTAP]: Fix wrong debug message.\n\nThis is a trivial fix of debug message.\nWhen a persist flag is set, the message should say \"enabled\".\n\nSigned-off-by: Toyo Abe \u003ctabe@miraclelinux.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "0795af5729b18218767fab27c44b1384f72dc9ad",
      "tree": "67c16df84aa6ec219340b8ea1b5cfb0e8150a216",
      "parents": [
        "95ea36275f3c9a1d3d04c217b4b576c657c4e70e"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Wed Oct 03 17:59:30 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Oct 10 16:51:42 2007 -0700"
      },
      "message": "[NET]: Introduce and use print_mac() and DECLARE_MAC_BUF()\n\nThis is nicer than the MAC_FMT stuff.\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "4885a50476b95fa0f4caad179a80783508c2fe86",
      "tree": "55a5b007e593e8ee810e142517854a42b23af6fe",
      "parents": [
        "0b69d4bd263c75b3e2ec94f1c72f338b84be817e"
      ],
      "author": {
        "name": "Ed Swierk",
        "email": "eswierk@arastra.com",
        "time": "Sun Sep 16 12:21:38 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Oct 10 16:51:19 2007 -0700"
      },
      "message": "[TAP]: Configurable interface MTU.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "09f75cd7bf13720738e6a196cc0107ce9a5bd5a0",
      "tree": "4c85b0b395abe7f88c87162fc22570e5de255cb1",
      "parents": [
        "ff8ac60948ba819b89e9c87083e8050fc2f89999"
      ],
      "author": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Wed Oct 03 17:41:50 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Oct 10 16:51:16 2007 -0700"
      },
      "message": "[NET] drivers/net: statistics cleanup #1 -- save memory and shrink code\n\nWe now have struct net_device_stats embedded in struct net_device,\nand the default -\u003eget_stats() hook does the obvious thing for us.\n\nRun through drivers/net/* and remove the driver-local storage of\nstatistics, and driver-local -\u003eget_stats() hook where applicable.\n\nThis was just the low-hanging fruit in drivers/net; plenty more drivers\nremain to be updated.\n\n[ Resolved conflicts with napi_struct changes and fix sunqe build\n  regression... -DaveM ]\n\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "10d024c1b2fd58af8362670d7d6e5ae52fc33353",
      "tree": "dbfb03c539986e2c1270385eb0083aaf0dfca8ab",
      "parents": [
        "596c5c97431eab8465739c169401ea611127b9ad"
      ],
      "author": {
        "name": "Ralf Baechle",
        "email": "ralf@linux-mips.org",
        "time": "Mon Sep 17 13:11:17 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Oct 10 16:51:13 2007 -0700"
      },
      "message": "[NET]: Nuke SET_MODULE_OWNER macro.\n\nIt\u0027s been a useless no-op for long enough in 2.6 so I figured it\u0027s time to\nremove it.  The number of people that could object because they\u0027re\nmaintaining unified 2.4 and 2.6 drivers is probably rather small.\n\n[ Handled drivers added by netdev tree and some missed IRDA cases... -DaveM ]\n\nSigned-off-by: Ralf Baechle \u003cralf@linux-mips.org\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "881d966b48b035ab3f3aeaae0f3d3f9b584f45b2",
      "tree": "c579d59a4107cbbe9e2b85939bc0d496b815c887",
      "parents": [
        "b4b510290b056b86611757ce1175a230f1080f53"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Mon Sep 17 11:56:21 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Oct 10 16:49:10 2007 -0700"
      },
      "message": "[NET]: Make the device list and device lookups per namespace.\n\nThis patch makes most of the generic device layer network\nnamespace safe.  This patch makes dev_base_head a\nnetwork namespace variable, and then it picks up\na few associated variables.  The functions:\ndev_getbyhwaddr\ndev_getfirsthwbytype\ndev_get_by_flags\ndev_get_by_name\n__dev_get_by_name\ndev_get_by_index\n__dev_get_by_index\ndev_ioctl\ndev_ethtool\ndev_load\nwireless_process_ioctl\n\nwere modified to take a network namespace argument, and\ndeal with it.\n\nvlan_ioctl_set and brioctl_set were modified so their\nhooks will receive a network namespace argument.\n\nSo basically anthing in the core of the network stack that was\naffected to by the change of dev_base was modified to handle\nmultiple network namespaces.  The rest of the network stack was\nsimply modified to explicitly use \u0026init_net the initial network\nnamespace.  This can be fixed when those components of the network\nstack are modified to handle multiple network namespaces.\n\nFor now the ifindex generator is left global.\n\nFundametally ifindex numbers are per namespace, or else\nwe will have corner case problems with migration when\nwe get that far.\n\nAt the same time there are assumptions in the network stack\nthat the ifindex of a network device won\u0027t change.  Making\nthe ifindex number global seems a good compromise until\nthe network stack can cope with ifindex changes when\nyou change namespaces, and the like.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "8c644623fe7e41f59fe97cdf666cba3cb7ced7d8",
      "tree": "42ed72e59e73b6ec840aa4ea97a34630f3544093",
      "parents": [
        "0ba48053831d5b89ee2afaefaae1c06eae80cb05"
      ],
      "author": {
        "name": "Guido Guenther",
        "email": "agx@sigxcpu.org",
        "time": "Mon Jul 02 22:50:25 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Tue Jul 10 22:16:42 2007 -0700"
      },
      "message": "[NET]: Allow group ownership of TUN/TAP devices.\n\nIntroduce a new syscall TUNSETGROUP for group ownership setting of tap\ndevices. The user now is allowed to send packages if either his euid or\nhis egid matches the one specified via tunctl (via -u or -g\nrespecitvely). If both, gid and uid, are set via tunctl, both have to\nmatch.\n\nSigned-off-by: Guido Guenther \u003cagx@sigxcpu.org\u003e\nSigned-off-by: Jeff Dike \u003cjdike@linux.intel.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "36226a8ded46b89a94f9de5976f554bb5e02d84c",
      "tree": "44fcfa54c6300dc2a843537cafb4a6f0d7075566",
      "parents": [
        "48491e6bdb8fa73751cc95f740175ec799db5d55"
      ],
      "author": {
        "name": "Brian Braunstein",
        "email": "linuxkernel@bristyle.com",
        "time": "Thu Apr 26 01:00:55 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Apr 26 01:00:55 2007 -0700"
      },
      "message": "[NET] tun/tap: fixed hw address handling\n\nFixed tun/tap driver\u0027s handling of hw addresses.  The hw address is stored\nin both the net_device.dev_addr and tun.dev_addr fields.  These fields were\nnot kept synchronized, and in fact weren\u0027t even initialized to the same\nvalue.  Now during both init and when performing SIOCSIFHWADDR on the tun\ndevice these values are both updated.  However, if SIOCSIFHWADDR is\nperformed on the net device directly (for instance, setting the hw address\nusing ifconfig), the tun device does not get updated.  Perhaps the\ntun.dev_addr field should be removed completely at some point, as it is\nredundant and net_device.dev_addr can be used anywhere it is used.\n\nSigned-off-by: Brian Braunstein \u003clinuxkernel@bristyle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "d626f62b11e00c16e81e4308ab93d3f13551812a",
      "tree": "fac4af6ced853755e12fc709d55f0c2bec51265d",
      "parents": [
        "2a123b86e2b242a4a6db990d2851d45e192f88e5"
      ],
      "author": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@redhat.com",
        "time": "Tue Mar 27 18:55:52 2007 -0300"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Apr 25 22:28:23 2007 -0700"
      },
      "message": "[SK_BUFF]: Introduce skb_copy_from_linear_data{_offset}\n\nTo clearly state the intent of copying from linear sk_buffs, _offset being a\noverly long variant but interesting for the sake of saving some bytes.\n\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\n"
    },
    {
      "commit": "459a98ed881802dee55897441bc7f77af614368e",
      "tree": "b81f76632d8f2e21eb91ec3d885091a98398d93e",
      "parents": [
        "4c13eb6657fe9ef7b4dc8f1a405c902e9e5234e0"
      ],
      "author": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@redhat.com",
        "time": "Mon Mar 19 15:30:44 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Apr 25 22:24:32 2007 -0700"
      },
      "message": "[SK_BUFF]: Introduce skb_reset_mac_header(skb)\n\nFor the common, open coded \u0027skb-\u003emac.raw \u003d skb-\u003edata\u0027 operation, so that we can\nlater turn skb-\u003emac.raw into a offset, reducing the size of struct sk_buff in\n64bit land while possibly keeping it as a pointer on 32bit.\n\nThis one touches just the most simple case, next will handle the slightly more\n\"complex\" cases.\n\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "4c13eb6657fe9ef7b4dc8f1a405c902e9e5234e0",
      "tree": "d338fad7a61824d8c14c079c0be437ea4ad83f01",
      "parents": [
        "029720f15dcd3c6c16824177cfc486083b229411"
      ],
      "author": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@redhat.com",
        "time": "Wed Apr 25 17:40:23 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Apr 25 22:24:30 2007 -0700"
      },
      "message": "[ETH]: Make eth_type_trans set skb-\u003edev like the other *_type_trans\n\nOne less thing for drivers writers to worry about.\n\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "d54b1fdb1d9f82e375a299e22bd366aad52d4c34",
      "tree": "f94768d59702dbbc0beb9a70d9be65dbc5e5108d",
      "parents": [
        "fa027c2a0a0d6d1df6b29ee99048502c93da0dd4"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Mon Feb 12 00:55:34 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Feb 12 09:48:45 2007 -0800"
      },
      "message": "[PATCH] mark struct file_operations const 5\n\nMany struct file_operations in the kernel can be \"const\".  Marking them const\nmoves these to the .rodata section, which avoids false sharing with potential\ndirty data.  In addition it\u0027ll catch accidental writes at compile time to\nthese shared resources.\n\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "609d7fa9565c754428d2520cac2accc9052e1245",
      "tree": "1c5114ec3720166fe99ce3885e8767929a8a84e0",
      "parents": [
        "bde0d2c98bcfc9acc83ac79c33a6ac1335b95a92"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Mon Oct 02 02:17:15 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Oct 02 07:57:14 2006 -0700"
      },
      "message": "[PATCH] file: modify struct fown_struct to use a struct pid\n\nFile handles can be requested to send sigio and sigurg to processes.  By\ntracking the destination processes using struct pid instead of pid_t we make\nthe interface safe from all potential pid wrap around problems.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "ee0b3e671baff681d69fbf0db33b47603c0a8280",
      "tree": "3202ff815b2196c6c353bc5b28d7a2800df273ec",
      "parents": [
        "027445c37282bc1ed26add45e573ad2d3e4860a5"
      ],
      "author": {
        "name": "Badari Pulavarty",
        "email": "pbadari@us.ibm.com",
        "time": "Sat Sep 30 23:28:47 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Oct 01 00:39:28 2006 -0700"
      },
      "message": "[PATCH] Remove readv/writev methods and use aio_read/aio_write instead\n\nThis patch removes readv() and writev() methods and replaces them with\naio_read()/aio_write() methods.\n\nSigned-off-by: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "7282d491ecaee9883233a0e27283c4c79486279a",
      "tree": "172ffa70716f5493db57976ceef7652120b3332f",
      "parents": [
        "76fd85937097a0c2ec8ab23bf21dc10992d1c398"
      ],
      "author": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Wed Sep 13 14:30:00 2006 -0400"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Wed Sep 13 14:30:00 2006 -0400"
      },
      "message": "drivers/net: const-ify ethtool_ops declarations\n\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.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": "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": "96192ff1a9d0c6ef365d21667080259d83ea2f5b",
      "tree": "b13caa3bedb3cde8bd1beecfc3c76bac894df42a",
      "parents": [
        "ff23eca3e8f613034e0d20ff86f6a89b62f5a14e"
      ],
      "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": "Mon Jun 26 12:25:08 2006 -0700"
      },
      "message": "[PATCH] devfs: Remove the miscdevice devfs_name field as it\u0027s no longer needed\n\nAlso fixes all drivers that set this field.\n\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n"
    },
    {
      "commit": "ca6bb5d7ab22ac79f608fe6cbc6b12de6a5a19f0",
      "tree": "7255df98fa5692c498605d2bd80402ec866f134a",
      "parents": [
        "f4b8ea7849544114e9d3d682df4d400180854677"
      ],
      "author": {
        "name": "David Woodhouse",
        "email": "dwmw2@infradead.org",
        "time": "Thu Jun 22 16:07:52 2006 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Fri Jun 23 02:07:44 2006 -0700"
      },
      "message": "[NET]: Require CAP_NET_ADMIN to create tuntap devices.\n\nThe tuntap driver allows an admin to create persistent devices and\nassign ownership of them to individual users. Unfortunately, relaxing\nthe permissions on the /dev/net/tun device node so that they can\nactually use those devices will _also_ allow those users to create\narbitrary new devices of their own. This patch corrects that, and\nadjusts the recommended permissions for the device node accordingly.\n\nSigned-off-By: David Woodhouse \u003cdwmw2@infradead.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "8f22757ee84da64d4f662f1dd03dae95358a1efe",
      "tree": "ebbf96d3c733c5cad9ab002740f1d4b829e07a4e",
      "parents": [
        "535744878e34d01a53f946f26dfbca37186f2cf8"
      ],
      "author": {
        "name": "Dave Jones",
        "email": "davej@redhat.com",
        "time": "Sat Mar 11 18:49:13 2006 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Mar 11 18:49:13 2006 -0800"
      },
      "message": "[TUN]: Fix leak in tun_get_user()\n\nWe\u0027re leaking an skb in a failure path in this function.\n\nCoverity #632\nSigned-off-by: Dave Jones \u003cdavej@redhat.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "ff4cc3ac93e1d0369928fd60ec1fe82417afc576",
      "tree": "c8f9380cfaedfd9f63f8e2eb0fff2d660aa81bab",
      "parents": [
        "80ac2912f846c01d702774bb6aa7100ec71e88b9"
      ],
      "author": {
        "name": "Mike Kershaw",
        "email": "dragorn@kismetwireless.net",
        "time": "Thu Sep 01 17:40:05 2005 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Sep 01 17:40:05 2005 -0700"
      },
      "message": "[TUNTAP]: Allow setting the linktype of the tap device from userspace\n\nCurrently tun/tap only supports the EN10MB ARP type.  For use with\nwireless and other networking types it should be possible to set the\nARP type via an ioctl.\n\nPatch v2: Included check that the tap interface is down before changing the\nlink type out from underneath it\n\nSigned-off-by: Mike Kershaw \u003cdragorn@kismetwireless.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    }
  ],
  "next": "b03efcfb2180289718991bb984044ce6c5b7d1b0"
}
