)]}'
{
  "log": [
    {
      "commit": "11fe883936980fe242869d671092a466cf1db3e3",
      "tree": "14ff24e81eb4326e94eb5aa6432a1dd55cef5ece",
      "parents": [
        "70d4bf6d467a330ccc947df9b2608e329d9e7708",
        "573201f36fd9c7c6d5218cdcd9948cee700b277d"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jul 20 18:25:24 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jul 20 18:25:24 2010 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6\n\nConflicts:\n\tdrivers/vhost/net.c\n\tnet/bridge/br_device.c\n\nFix merge conflict in drivers/vhost/net.c with guidance from\nStephen Rothwell.\n\nRevert the effects of net-2.6 commit 573201f36fd9c7c6d5218cdcd9948cee700b277d\nsince net-next-2.6 has fixes that make bridge netpoll work properly thus\nwe don\u0027t need it disabled.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "45e77d314585869dfe43c82679f7e08c9b35b898",
      "tree": "73c6322600e47a44a8c171abff392a61eac53be9",
      "parents": [
        "b508998f665ee6d6a15eae11be258c3e94c33562"
      ],
      "author": {
        "name": "Ilpo Järvinen",
        "email": "ilpo.jarvinen@helsinki.fi",
        "time": "Mon Jul 19 01:16:18 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jul 19 12:43:49 2010 -0700"
      },
      "message": "tcp: fix crash in tcp_xmit_retransmit_queue\n\nIt can happen that there are no packets in queue while calling\ntcp_xmit_retransmit_queue(). tcp_write_queue_head() then returns\nNULL and that gets deref\u0027ed to get sacked into a local var.\n\nThere is no work to do if no packets are outstanding so we just\nexit early.\n\nThis oops was introduced by 08ebd1721ab8fd (tcp: remove tp-\u003elost_out\nguard to make joining diff nicer).\n\nSigned-off-by: Ilpo Järvinen \u003cilpo.jarvinen@helsinki.fi\u003e\nReported-by: Lennart Schulte \u003clennart.schulte@nets.rwth-aachen.de\u003e\nTested-by: Lennart Schulte \u003clennart.schulte@nets.rwth-aachen.de\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "e40dbc51fbcc3281bb52ecf0f5bec693d36e2aea",
      "tree": "7950aa0bb0e2a338eed7d948c77cd62ec96bf0d8",
      "parents": [
        "b0f77d0eae0c58a5a9691a067ada112ceeae2d00"
      ],
      "author": {
        "name": "Ben Greear",
        "email": "greearb@candelatech.com",
        "time": "Thu Jul 15 13:22:33 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Jul 15 22:38:43 2010 -0700"
      },
      "message": "ipmr: Don\u0027t leak memory if fib lookup fails.\n\nThis was detected using two mcast router tables.  The\npimreg for the second interface did not have a specific\nmrule, so packets received by it were handled by the\ndefault table, which had nothing configured.\n\nThis caused the ipmr_fib_lookup to fail, causing\nthe memory leak.\n\nSigned-off-by: Ben Greear \u003cgreearb@candelatech.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "3a047bf87b1b6f69c62ab9fb28072c639cb7e2fa",
      "tree": "b134b9942d2b378b1afd81b07ffdfb948cd1439e",
      "parents": [
        "d809ec895505e6f35fb1965f0946381ab4eaa474"
      ],
      "author": {
        "name": "Changli Gao",
        "email": "xiaosuo@gmail.com",
        "time": "Mon Jul 12 21:00:12 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jul 14 14:45:15 2010 -0700"
      },
      "message": "rfs: call sock_rps_record_flow() in tcp_splice_read()\n\nrfs: call sock_rps_record_flow() in tcp_splice_read()\n\ncall sock_rps_record_flow() in tcp_splice_read(), so the applications using\nsplice(2) or sendfile(2) can utilize RFS.\n\nSigned-off-by: Changli Gao \u003cxiaosuo@gmail.com\u003e\n----\n net/ipv4/tcp.c |    1 +\n 1 file changed, 1 insertion(+)\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "7ba42910073f8432934d61a6c08b1023c408fb62",
      "tree": "4f74648133eaf6cbea26d59c43d34e7153648f5d",
      "parents": [
        "53d3176b282cc105493babb0fef36c8b873f6201"
      ],
      "author": {
        "name": "Changli Gao",
        "email": "xiaosuo@gmail.com",
        "time": "Sat Jul 10 20:41:55 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jul 12 20:21:46 2010 -0700"
      },
      "message": "inet, inet6: make tcp_sendmsg() and tcp_sendpage() through inet_sendmsg() and inet_sendpage()\n\na new boolean flag no_autobind is added to structure proto to avoid the autobind\ncalls when the protocol is TCP. Then sock_rps_record_flow() is called int the\nTCP\u0027s sendmsg() and sendpage() pathes.\n\nSigned-off-by: Changli Gao \u003cxiaosuo@gmail.com\u003e\n----\n include/net/inet_common.h |    4 ++++\n include/net/sock.h        |    1 +\n include/net/tcp.h         |    8 ++++----\n net/ipv4/af_inet.c        |   15 +++++++++------\n net/ipv4/tcp.c            |   11 +++++------\n net/ipv4/tcp_ipv4.c       |    3 +++\n net/ipv6/af_inet6.c       |    8 ++++----\n net/ipv6/tcp_ipv6.c       |    3 +++\n 8 files changed, 33 insertions(+), 20 deletions(-)\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "4bc2f18ba4f22a90ab593c0a580fc9a19c4777b6",
      "tree": "bb39f427bd468d0e34a73ebc788db726406fa261",
      "parents": [
        "ba80a2522899ea71a5b201bae60bdfd99126af95"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Fri Jul 09 21:22:10 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jul 12 12:57:54 2010 -0700"
      },
      "message": "net/ipv4: EXPORT_SYMBOL cleanups\n\nCodingStyle cleanups\n\nEXPORT_SYMBOL should immediately follow the symbol declaration.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "dd4ba83dc1becbb3bb383851381c10c372e47247",
      "tree": "380fa014b13eb8c04bbea478a1b93081b2a30925",
      "parents": [
        "f5152c908a5b0be48ec9a58d0de8bdadd9385854"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Thu Jul 08 21:35:58 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Jul 08 21:35:58 2010 -0700"
      },
      "message": "gre: propagate ipv6 transport class\n\nThis patch makes IPV6 over IPv4 GRE tunnel propagate the transport\nclass field from the underlying IPV6 header to the IPV4 Type Of Service\nfield. Without the patch, all IPV6 packets in tunnel look the same to QoS.\n\nThis assumes that IPV6 transport class is exactly the same\nas IPv4 TOS. Not sure if that is always the case?  Maybe need\nto mask off some bits.\n\nThe mask and shift to get tclass is copied from ipv6/datagram.c\n\nSigned-off-by: Stephen Hemminger \u003cshemminger@vyatta.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "597e608a8492d662736c9bc6aa507dbf1cadc17d",
      "tree": "6c330cdd0a4809f67dd191b37e34f5b4318cef78",
      "parents": [
        "acbc0f039ff4b93da737c91937b7c70018ded39f",
        "33b665eeeb85956ccbdf31c4c31a4e2a31133c44"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jul 07 15:59:38 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jul 07 15:59:38 2010 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6\n"
    },
    {
      "commit": "49085bd7d498c47d635851cfda22627b085cd9af",
      "tree": "19b20b84dfb32a278fdbb9ced0915231a220108e",
      "parents": [
        "28172739f0a276eb8d6ca917b3974c2edb036da3"
      ],
      "author": {
        "name": "George Kadianakis",
        "email": "desnacked@gmail.com",
        "time": "Tue Jul 06 11:44:12 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jul 07 15:44:59 2010 -0700"
      },
      "message": "net/ipv4/ip_output.c: Removal of unused variable in ip_fragment()\n\nRemoval of unused integer variable in ip_fragment().\n\nSigned-off-by: George Kadianakis \u003cdesnacked@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "fe76cda3081b502986f0c8b28b0cf8bfc27d44d5",
      "tree": "bd45fceb43d838aad7d9dae054979386539abcf7",
      "parents": [
        "a99db196db1166a2159add4a3013e5df0ea126fa"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Thu Jul 01 23:48:22 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jul 05 18:50:56 2010 -0700"
      },
      "message": "ipv4: use skb_dst_copy() in ip_copy_metadata()\n\nAvoid touching dst refcount in ip_fragment().\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "44b451f1633896de15d2d52e1a2bd462e80b7814",
      "tree": "14596f22d672a9b34e017422f772c2a0b967f2f1",
      "parents": [
        "8bd39456bd5ab16d2a956dd3d567dcac9c73a6c0"
      ],
      "author": {
        "name": "Peter Kosyh",
        "email": "p.kosyh@gmail.com",
        "time": "Fri Jul 02 07:47:55 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Jul 04 11:46:07 2010 -0700"
      },
      "message": "xfrm: fix xfrm by MARK logic\n\nWhile using xfrm by MARK feature in\n2.6.34 - 2.6.35 kernels, the mark\nis always cleared in flowi structure via memset in\n_decode_session4 (net/ipv4/xfrm4_policy.c), so\nthe policy lookup fails.\nIPv6 code is affected by this bug too.\n\nSigned-off-by: Peter Kosyh \u003cp.kosyh@gmail.com\u003e\nAcked-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "e490c1defec4236a6a131fe2d13bf7ba787c02f8",
      "tree": "132325ca88cc86a74345a93b2774c5ca284b038a",
      "parents": [
        "0a17d8c744e44617a3c22e7af68b4c5c9c1c5dba",
        "4df53d8bab65cf2c18daebd51a5a4847e03f1943"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jul 02 22:42:06 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jul 02 22:42:06 2010 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/kaber/nf-next-2.6\n"
    },
    {
      "commit": "d6bebca92c663fb216c072193945946f3807ca7f",
      "tree": "fd797f062fa19d2ee470cf33c9b475bff08e2545",
      "parents": [
        "4ce3c183fcade7f4b30a33dae90cd774c3d9e094"
      ],
      "author": {
        "name": "Changli Gao",
        "email": "xiaosuo@gmail.com",
        "time": "Tue Jun 29 04:39:37 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jun 30 13:44:29 2010 -0700"
      },
      "message": "fragment: add fast path for in-order fragments\n\nadd fast path for in-order fragments\n\nAs the fragments are sent in order in most of OSes, such as Windows, Darwin and\nFreeBSD, it is likely the new fragments are at the end of the inet_frag_queue.\nIn the fast path, we check if the skb at the end of the inet_frag_queue is the\nprev we expect.\n\nSigned-off-by: Changli Gao \u003cxiaosuo@gmail.com\u003e\n----\n include/net/inet_frag.h |    1 +\n net/ipv4/ip_fragment.c  |   12 ++++++++++++\n net/ipv6/reassembly.c   |   11 +++++++++++\n 3 files changed, 24 insertions(+)\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "4ce3c183fcade7f4b30a33dae90cd774c3d9e094",
      "tree": "84d5a130da50096fdbeb7fffea596dffe2cebd80",
      "parents": [
        "f3eb62d2cc7da7bea4b394dd06f6bc738aa284e7"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Wed Jun 30 13:31:19 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jun 30 13:31:19 2010 -0700"
      },
      "message": "snmp: 64bit ipstats_mib for all arches\n\n/proc/net/snmp and /proc/net/netstat expose SNMP counters.\n\nWidth of these counters is either 32 or 64 bits, depending on the size\nof \"unsigned long\" in kernel.\n\nThis means user program parsing these files must already be prepared to\ndeal with 64bit values, regardless of user program being 32 or 64 bit.\n\nThis patch introduces 64bit snmp values for IPSTAT mib, where some\ncounters can wrap pretty fast if they are 32bit wide.\n\n# netstat -s|egrep \"InOctets|OutOctets\"\n    InOctets: 244068329096\n    OutOctets: 244069348848\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "c4ead4c595cd54cf7b1a184d4f888ce0d7cce7d4",
      "tree": "a78a70904126106d61d9b16c3179c8cafb16df99",
      "parents": [
        "9618e2ffd78aaa43a5815e1dd456b4dd95f9e53b"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Thu Jun 24 01:00:22 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jun 28 23:24:31 2010 -0700"
      },
      "message": "tcp: tso_fragment() might avoid GFP_ATOMIC\n\nWe can pass a gfp argument to tso_fragment() and avoid GFP_ATOMIC\nallocations sometimes.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "7a9b2d59507d85569b8a456688ef40cf2ac73e48",
      "tree": "436533da6f680a0b4b6860e0219a2e594ac16735",
      "parents": [
        "b6b3ecc71a0664d44ed8d087d583aee98fbf492a"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Thu Jun 24 00:52:37 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jun 28 23:24:29 2010 -0700"
      },
      "message": "net: use this_cpu_ptr()\n\nuse this_cpu_ptr(p) instead of per_cpu_ptr(p, smp_processor_id())\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "7eb9282cd0efac08b8377cbd5037ba297c77e3f7",
      "tree": "7dcb6e149c96e27da69a75ff828de9681c6636f8",
      "parents": [
        "cf377eb4aeded926375d4d0fe0b66ba95f0521e1"
      ],
      "author": {
        "name": "Patrick McHardy",
        "email": "kaber@trash.net",
        "time": "Mon Jun 28 14:16:08 2010 +0200"
      },
      "committer": {
        "name": "Patrick McHardy",
        "email": "kaber@trash.net",
        "time": "Mon Jun 28 14:16:08 2010 +0200"
      },
      "message": "netfilter: ipt_LOG/ip6t_LOG: add option to print decoded MAC header\n\nThe LOG targets print the entire MAC header as one long string, which is not\nreadable very well:\n\nIN\u003deth0 OUT\u003d MAC\u003d00:15:f2:24:91:f8:00:1b:24:dc:61:e6:08:00 ...\n\nAdd an option to decode known header formats (currently just ARPHRD_ETHER devices)\nin their individual fields:\n\nIN\u003deth0 OUT\u003d MACSRC\u003d00:1b:24:dc:61:e6 MACDST\u003d00:15:f2:24:91:f8 MACPROTO\u003d0800 ...\nIN\u003deth0 OUT\u003d MACSRC\u003d00:1b:24:dc:61:e6 MACDST\u003d00:15:f2:24:91:f8 MACPROTO\u003d86dd ...\n\nThe option needs to be explicitly enabled by userspace to avoid breaking\nexisting parsers.\n\nSigned-off-by: Patrick McHardy \u003ckaber@trash.net\u003e\n"
    },
    {
      "commit": "cf377eb4aeded926375d4d0fe0b66ba95f0521e1",
      "tree": "010628b36c81d050f4189fb8e94f0cdec60dc3c0",
      "parents": [
        "d70a011dbbaa6335a19deb63ec3eb613f48faafd"
      ],
      "author": {
        "name": "Patrick McHardy",
        "email": "kaber@trash.net",
        "time": "Mon Jun 28 14:12:41 2010 +0200"
      },
      "committer": {
        "name": "Patrick McHardy",
        "email": "kaber@trash.net",
        "time": "Mon Jun 28 14:12:41 2010 +0200"
      },
      "message": "netfilter: ipt_LOG/ip6t_LOG: remove comparison within loop\n\nRemove the comparison within the loop to print the macheader by prepending\nthe colon to all but the first printk.\n\nBased on suggestion by Jan Engelhardt \u003cjengelh@medozas.de\u003e.\n\nSigned-off-by: Patrick McHardy \u003ckaber@trash.net\u003e\n"
    },
    {
      "commit": "172d69e63c7f1e8300d0e1c1bbd8eb0f630faa15",
      "tree": "c71118ddc86186e235a920b9529c457db5e9aae5",
      "parents": [
        "734f614bc1e7c6bf075d201f6bd9a555b8b4a984"
      ],
      "author": {
        "name": "Florian Westphal",
        "email": "fw@strlen.de",
        "time": "Mon Jun 21 11:48:45 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Jun 26 22:00:03 2010 -0700"
      },
      "message": "syncookies: add support for ECN\n\nAllows use of ECN when syncookies are in effect by encoding ecn_ok\ninto the syn-ack tcp timestamp.\n\nWhile at it, remove a uneeded #ifdef CONFIG_SYN_COOKIES.\nWith CONFIG_SYN_COOKIES\u003dnm want_cookie is ifdef\u0027d to 0 and gcc\nremoves the \"if (0)\".\n\nSigned-off-by: Florian Westphal \u003cfw@strlen.de\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "734f614bc1e7c6bf075d201f6bd9a555b8b4a984",
      "tree": "f5602e98d4088b1b667e286a1ead644122cd77e8",
      "parents": [
        "9587c6ddd452314e8ed5707ad832a507a030ef57"
      ],
      "author": {
        "name": "Florian Westphal",
        "email": "fw@strlen.de",
        "time": "Mon Jun 21 11:48:44 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Jun 26 22:00:03 2010 -0700"
      },
      "message": "syncookies: do not store rcv_wscale in tcp timestamp\n\nAs pointed out by Fernando Gont there is no need to encode rcv_wscale\ninto the cookie.\n\nWe did not use the restored rcv_wscale anyway; it is recomputed\nvia tcp_select_initial_window().\n\nThus we can save 4 bits in the ts option space by removing rcv_wscale.\nIn case window scaling was not supported, we set the (invalid) wscale\nvalue 0xf.\n\nSigned-off-by: Florian Westphal \u003cfw@strlen.de\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "1823e4c80eeae2a774c75569ce3035070e5ee009",
      "tree": "bdc1bdf4a67027193312ad584924ca8a986a064c",
      "parents": [
        "5eaa0bd81f93225b6d1972b373ed00ca763052b2"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Tue Jun 22 20:58:41 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jun 25 21:33:17 2010 -0700"
      },
      "message": "snmp: add align parameter to snmp_mib_init()\n\nIn preparation for 64bit snmp counters for some mibs,\nadd an \u0027align\u0027 parameter to snmp_mib_init(), instead\nof assuming mibs only contain \u0027unsigned long\u0027 fields.\n\nCallers can use __alignof__(type) to provide correct\nalignment.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nCC: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nCC: Arnaldo Carvalho de Melo \u003cacme@ghostprotocols.net\u003e\nCC: Hideaki YOSHIFUJI \u003cyoshfuji@linux-ipv6.org\u003e\nCC: Vlad Yasevich \u003cvladislav.yasevich@hp.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "4b4194c40f4ac8d03a700845f8978cba53246b5a",
      "tree": "11beaa1417395708bc6af1d9fcc1da401b9bc1d6",
      "parents": [
        "59b80802a8a18b64d38b51aa168253684b2649d5"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Tue Jun 22 07:43:15 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jun 25 21:33:16 2010 -0700"
      },
      "message": "arp: RCU change in arp_solicit()\n\nAvoid two atomic ops in arp_solicit()\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "565b7b2d2e632b5792879c0c9cccdd9eecd31195",
      "tree": "f5bbe0e7a2719f6076a567cb3a68ff47f0c4bcb9",
      "parents": [
        "7a938f80264f2cbfb0c0841b450eab42a8093281"
      ],
      "author": {
        "name": "Konstantin Khorenko",
        "email": "khorenko@openvz.org",
        "time": "Thu Jun 24 21:54:58 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Jun 24 21:54:58 2010 -0700"
      },
      "message": "tcp: do not send reset to already closed sockets\n\ni\u0027ve found that tcp_close() can be called for an already closed\nsocket, but still sends reset in this case (tcp_send_active_reset())\nwhich seems to be incorrect.  Moreover, a packet with reset is sent\nwith different source port as original port number has been already\ncleared on socket.  Besides that incrementing stat counter for\nLINUX_MIB_TCPABORTONCLOSE also does not look correct in this case.\n\nInitially this issue was found on 2.6.18-x RHEL5 kernel, but the same\nseems to be true for the current mainstream kernel (checked on\n2.6.35-rc3).  Please, correct me if i missed something.\n\nHow that happens:\n\n1) the server receives a packet for socket in TCP_CLOSE_WAIT state\n   that triggers a tcp_reset():\n\nCall Trace:\n \u003cIRQ\u003e  [\u003cffffffff8025b9b9\u003e] tcp_reset+0x12f/0x1e8\n [\u003cffffffff80046125\u003e] tcp_rcv_state_process+0x1c0/0xa08\n [\u003cffffffff8003eb22\u003e] tcp_v4_do_rcv+0x310/0x37a\n [\u003cffffffff80028bea\u003e] tcp_v4_rcv+0x74d/0xb43\n [\u003cffffffff8024ef4c\u003e] ip_local_deliver_finish+0x0/0x259\n [\u003cffffffff80037131\u003e] ip_local_deliver+0x200/0x2f4\n [\u003cffffffff8003843c\u003e] ip_rcv+0x64c/0x69f\n [\u003cffffffff80021d89\u003e] netif_receive_skb+0x4c4/0x4fa\n [\u003cffffffff80032eca\u003e] process_backlog+0x90/0xec\n [\u003cffffffff8000cc50\u003e] net_rx_action+0xbb/0x1f1\n [\u003cffffffff80012d3a\u003e] __do_softirq+0xf5/0x1ce\n [\u003cffffffff8001147a\u003e] handle_IRQ_event+0x56/0xb0\n [\u003cffffffff8006334c\u003e] call_softirq+0x1c/0x28\n [\u003cffffffff80070476\u003e] do_softirq+0x2c/0x85\n [\u003cffffffff80070441\u003e] do_IRQ+0x149/0x152\n [\u003cffffffff80062665\u003e] ret_from_intr+0x0/0xa\n \u003cEOI\u003e  [\u003cffffffff80008a2e\u003e] __handle_mm_fault+0x6cd/0x1303\n [\u003cffffffff80008903\u003e] __handle_mm_fault+0x5a2/0x1303\n [\u003cffffffff80033a9d\u003e] cache_free_debugcheck+0x21f/0x22e\n [\u003cffffffff8006a263\u003e] do_page_fault+0x49a/0x7dc\n [\u003cffffffff80066487\u003e] thread_return+0x89/0x174\n [\u003cffffffff800c5aee\u003e] audit_syscall_exit+0x341/0x35c\n [\u003cffffffff80062e39\u003e] error_exit+0x0/0x84\n\ntcp_rcv_state_process()\n...  // (sk_state \u003d\u003d TCP_CLOSE_WAIT here)\n...\n        /* step 2: check RST bit */\n        if(th-\u003erst) {\n                tcp_reset(sk);\n                goto discard;\n        }\n...\n---------------------------------\ntcp_rcv_state_process\n tcp_reset\n  tcp_done\n   tcp_set_state(sk, TCP_CLOSE);\n     inet_put_port\n      __inet_put_port\n       inet_sk(sk)-\u003enum \u003d 0;\n\n   sk-\u003esk_shutdown \u003d SHUTDOWN_MASK;\n\n2) After that the process (socket owner) tries to write something to\n   that socket and \"inet_autobind\" sets a _new_ (which differs from\n   the original!) port number for the socket:\n\n Call Trace:\n  [\u003cffffffff80255a12\u003e] inet_bind_hash+0x33/0x5f\n  [\u003cffffffff80257180\u003e] inet_csk_get_port+0x216/0x268\n  [\u003cffffffff8026bcc9\u003e] inet_autobind+0x22/0x8f\n  [\u003cffffffff80049140\u003e] inet_sendmsg+0x27/0x57\n  [\u003cffffffff8003a9d9\u003e] do_sock_write+0xae/0xea\n  [\u003cffffffff80226ac7\u003e] sock_writev+0xdc/0xf6\n  [\u003cffffffff800680c7\u003e] _spin_lock_irqsave+0x9/0xe\n  [\u003cffffffff8001fb49\u003e] __pollwait+0x0/0xdd\n  [\u003cffffffff8008d533\u003e] default_wake_function+0x0/0xe\n  [\u003cffffffff800a4f10\u003e] autoremove_wake_function+0x0/0x2e\n  [\u003cffffffff800f0b49\u003e] do_readv_writev+0x163/0x274\n  [\u003cffffffff80066538\u003e] thread_return+0x13a/0x174\n  [\u003cffffffff800145d8\u003e] tcp_poll+0x0/0x1c9\n  [\u003cffffffff800c56d3\u003e] audit_syscall_entry+0x180/0x1b3\n  [\u003cffffffff800f0dd0\u003e] sys_writev+0x49/0xe4\n  [\u003cffffffff800622dd\u003e] tracesys+0xd5/0xe0\n\n3) sendmsg fails at last with -EPIPE (\u003d\u003e \u0027write\u0027 returns -EPIPE in userspace):\n\nF: tcp_sendmsg1 -EPIPE: sk\u003dffff81000bda00d0, sport\u003d49847, old_state\u003d7, new_state\u003d7, sk_err\u003d0, sk_shutdown\u003d3\n\nCall Trace:\n [\u003cffffffff80027557\u003e] tcp_sendmsg+0xcb/0xe87\n [\u003cffffffff80033300\u003e] release_sock+0x10/0xae\n [\u003cffffffff8016f20f\u003e] vgacon_cursor+0x0/0x1a7\n [\u003cffffffff8026bd32\u003e] inet_autobind+0x8b/0x8f\n [\u003cffffffff8003a9d9\u003e] do_sock_write+0xae/0xea\n [\u003cffffffff80226ac7\u003e] sock_writev+0xdc/0xf6\n [\u003cffffffff800680c7\u003e] _spin_lock_irqsave+0x9/0xe\n [\u003cffffffff8001fb49\u003e] __pollwait+0x0/0xdd\n [\u003cffffffff8008d533\u003e] default_wake_function+0x0/0xe\n [\u003cffffffff800a4f10\u003e] autoremove_wake_function+0x0/0x2e\n [\u003cffffffff800f0b49\u003e] do_readv_writev+0x163/0x274\n [\u003cffffffff80066538\u003e] thread_return+0x13a/0x174\n [\u003cffffffff800145d8\u003e] tcp_poll+0x0/0x1c9\n [\u003cffffffff800c56d3\u003e] audit_syscall_entry+0x180/0x1b3\n [\u003cffffffff800f0dd0\u003e] sys_writev+0x49/0xe4\n [\u003cffffffff800622dd\u003e] tracesys+0xd5/0xe0\n\ntcp_sendmsg()\n...\n        /* Wait for a connection to finish. */\n        if ((1 \u003c\u003c sk-\u003esk_state) \u0026 ~(TCPF_ESTABLISHED | TCPF_CLOSE_WAIT)) {\n                int old_state \u003d sk-\u003esk_state;\n                if ((err \u003d sk_stream_wait_connect(sk, \u0026timeo)) !\u003d 0) {\nif (f_d \u0026\u0026 (err \u003d\u003d -EPIPE)) {\n        printk(\"F: tcp_sendmsg1 -EPIPE: sk\u003d%p, sport\u003d%u, old_state\u003d%d, new_state\u003d%d, \"\n                \"sk_err\u003d%d, sk_shutdown\u003d%d\\n\",\n                sk, ntohs(inet_sk(sk)-\u003esport), old_state, sk-\u003esk_state,\n                sk-\u003esk_err, sk-\u003esk_shutdown);\n        dump_stack();\n}\n                        goto out_err;\n                }\n        }\n...\n\n4) Then the process (socket owner) understands that it\u0027s time to close\n   that socket and does that (and thus triggers sending reset packet):\n\nCall Trace:\n...\n [\u003cffffffff80032077\u003e] dev_queue_xmit+0x343/0x3d6\n [\u003cffffffff80034698\u003e] ip_output+0x351/0x384\n [\u003cffffffff80251ae9\u003e] dst_output+0x0/0xe\n [\u003cffffffff80036ec6\u003e] ip_queue_xmit+0x567/0x5d2\n [\u003cffffffff80095700\u003e] vprintk+0x21/0x33\n [\u003cffffffff800070f0\u003e] check_poison_obj+0x2e/0x206\n [\u003cffffffff80013587\u003e] poison_obj+0x36/0x45\n [\u003cffffffff8025dea6\u003e] tcp_send_active_reset+0x15/0x14d\n [\u003cffffffff80023481\u003e] dbg_redzone1+0x1c/0x25\n [\u003cffffffff8025dea6\u003e] tcp_send_active_reset+0x15/0x14d\n [\u003cffffffff8000ca94\u003e] cache_alloc_debugcheck_after+0x189/0x1c8\n [\u003cffffffff80023405\u003e] tcp_transmit_skb+0x764/0x786\n [\u003cffffffff8025df8a\u003e] tcp_send_active_reset+0xf9/0x14d\n [\u003cffffffff80258ff1\u003e] tcp_close+0x39a/0x960\n [\u003cffffffff8026be12\u003e] inet_release+0x69/0x80\n [\u003cffffffff80059b31\u003e] sock_release+0x4f/0xcf\n [\u003cffffffff80059d4c\u003e] sock_close+0x2c/0x30\n [\u003cffffffff800133c9\u003e] __fput+0xac/0x197\n [\u003cffffffff800252bc\u003e] filp_close+0x59/0x61\n [\u003cffffffff8001eff6\u003e] sys_close+0x85/0xc7\n [\u003cffffffff800622dd\u003e] tracesys+0xd5/0xe0\n\nSo, in brief:\n\n* a received packet for socket in TCP_CLOSE_WAIT state triggers\n  tcp_reset() which clears inet_sk(sk)-\u003enum and put socket into\n  TCP_CLOSE state\n\n* an attempt to write to that socket forces inet_autobind() to get a\n  new port (but the write itself fails with -EPIPE)\n\n* tcp_close() called for socket in TCP_CLOSE state sends an active\n  reset via socket with newly allocated port\n\nThis adds an additional check in tcp_close() for already closed\nsockets. We do not want to send anything to closed sockets.\n\nSigned-off-by: Konstantin Khorenko \u003ckhorenko@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "8244132ea89cdd128003f5b9980fab50d8d36d72",
      "tree": "c6cf9327cf9b6bab5bb830bbf389a514f4d7bb95",
      "parents": [
        "7b2ff18ee7b0ec4bc3162f821e221781aaca48bd",
        "38000a94a902e94ca8b5498f7871c6316de8957a"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jun 23 18:26:27 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jun 23 18:26:27 2010 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6\n\nConflicts:\n\tnet/ipv4/ip_output.c\n"
    },
    {
      "commit": "7b2ff18ee7b0ec4bc3162f821e221781aaca48bd",
      "tree": "eed7535663f6333a1dc68861d8cd7b98d8050d4d",
      "parents": [
        "01fc3e86c6379cc4c78c529a1bad1b8179b726aa"
      ],
      "author": {
        "name": "Jiri Olsa",
        "email": "jolsa@redhat.com",
        "time": "Tue Jun 15 01:07:31 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jun 23 13:16:38 2010 -0700"
      },
      "message": "net - IP_NODEFRAG option for IPv4 socket\n\nthis patch is implementing IP_NODEFRAG option for IPv4 socket.\nThe reason is, there\u0027s no other way to send out the packet with user\ncustomized header of the reassembly part.\n\nSigned-off-by: Jiri Olsa \u003cjolsa@redhat.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "26cde9f7e2747b6d254b704594eed87ab959afa5",
      "tree": "ebb84a0ca60dd14801e9d398ee950c2527260c16",
      "parents": [
        "13fea6d4f73942e6961aec97ba4c593619d18f6f"
      ],
      "author": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Tue Jun 15 01:52:25 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jun 21 13:57:34 2010 -0700"
      },
      "message": "udp: Fix bogus UFO packet generation\n\nIt has been reported that the new UFO software fallback path\nfails under certain conditions with NFS.  I tracked the problem\ndown to the generation of UFO packets that are smaller than the\nMTU.  The software fallback path simply discards these packets.\n\nThis patch fixes the problem by not generating such packets on\nthe UFO path.\n\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nReviewed-by: Michael S. Tsirkin \u003cmst@redhat.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "c68cd6cc21eb329c47ff020ff7412bf58176984e",
      "tree": "2e49be79c66d550b37fc494e22b5e31b39a8bc38",
      "parents": [
        "f9181f4ffc71d7b7dd1906c9a11d51d6659220ae"
      ],
      "author": {
        "name": "Patrick McHardy",
        "email": "kaber@trash.net",
        "time": "Thu Jun 17 06:12:26 2010 +0200"
      },
      "committer": {
        "name": "Patrick McHardy",
        "email": "kaber@trash.net",
        "time": "Thu Jun 17 06:12:26 2010 +0200"
      },
      "message": "netfilter: nf_nat: support user-specified SNAT rules in LOCAL_IN\n\n2.6.34 introduced \u0027conntrack zones\u0027 to deal with cases where packets\nfrom multiple identical networks are handled by conntrack/NAT. Packets\nare looped through veth devices, during which they are NATed to private\naddresses, after which they can continue normally through the stack\nand possibly have NAT rules applied a second time.\n\nThis works well, but is needlessly complicated for cases where only\na single SNAT/DNAT mapping needs to be applied to these packets. In that\ncase, all that needs to be done is to assign each network to a seperate\nzone and perform NAT as usual. However this doesn\u0027t work for packets\ndestined for the machine performing NAT itself since its corrently not\npossible to configure SNAT mappings for the LOCAL_IN chain.\n\nThis patch adds a new INPUT chain to the NAT table and changes the\ntargets performing SNAT to be usable in that chain.\n\nExample usage with two identical networks (192.168.0.0/24) on eth0/eth1:\n\niptables -t raw -A PREROUTING -i eth0 -j CT --zone 1\niptables -t raw -A PREROUTING -i eth0 -j MARK --set-mark 1\niptables -t raw -A PREROUTING -i eth1 -j CT --zone 2\niptabels -t raw -A PREROUTING -i eth1 -j MARK --set-mark 2\n\niptables -t nat -A INPUT       -m mark --mark 1 -j NETMAP --to 10.0.0.0/24\niptables -t nat -A POSTROUTING -m mark --mark 1 -j NETMAP --to 10.0.0.0/24\niptables -t nat -A INPUT       -m mark --mark 2 -j NETMAP --to 10.0.1.0/24\niptables -t nat -A POSTROUTING -m mark --mark 2 -j NETMAP --to 10.0.1.0/24\n\niptables -t raw -A PREROUTING -d 10.0.0.0/24 -j CT --zone 1\niptables -t raw -A OUTPUT     -d 10.0.0.0/24 -j CT --zone 1\niptables -t raw -A PREROUTING -d 10.0.1.0/24 -j CT --zone 2\niptables -t raw -A OUTPUT     -d 10.0.1.0/24 -j CT --zone 2\n\niptables -t nat -A PREROUTING -d 10.0.0.0/24 -j NETMAP --to 192.168.0.0/24\niptables -t nat -A OUTPUT     -d 10.0.0.0/24 -j NETMAP --to 192.168.0.0/24\niptables -t nat -A PREROUTING -d 10.0.1.0/24 -j NETMAP --to 192.168.0.0/24\niptables -t nat -A OUTPUT     -d 10.0.1.0/24 -j NETMAP --to 192.168.0.0/24\n\nSigned-off-by: Patrick McHardy \u003ckaber@trash.net\u003e\n"
    },
    {
      "commit": "8c76368174ed2359739f1b7b8a9c042b1ef839c4",
      "tree": "143aa28c9438b24154bc3d1e36b432a534eca50c",
      "parents": [
        "317fe0e6c5dc9448bcef41a2e31fecfd3dba7f55"
      ],
      "author": {
        "name": "Florian Westphal",
        "email": "fw@strlen.de",
        "time": "Wed Jun 16 14:42:15 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jun 16 14:42:15 2010 -0700"
      },
      "message": "syncookies: check decoded options against sysctl settings\n\nDiscard the ACK if we find options that do not match current sysctl\nsettings.\n\nPreviously it was possible to create a connection with sack, wscale,\netc. enabled even if the feature was disabled via sysctl.\n\nAlso remove an unneeded call to tcp_sack_reset() in\ncookie_check_timestamp: Both call sites (cookie_v4_check,\ncookie_v6_check) zero \"struct tcp_options_received\", hand it to\ntcp_parse_options() (which does not change tcp_opt-\u003enum_sacks/dsack)\nand then call cookie_check_timestamp().\n\nEven if num_sacks/dsacks were changed, the structure is allocated on\nthe stack and after cookie_check_timestamp returns only a few selected\nmembers are copied to the inet_request_sock.\n\nSigned-off-by: Florian Westphal \u003cfw@strlen.de\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "317fe0e6c5dc9448bcef41a2e31fecfd3dba7f55",
      "tree": "c2a042e1c8bb96b7fdeadf658309ead1b6e8dabc",
      "parents": [
        "fdb93f8ac39aa5902f3d264edd50dffcabfdd13b"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Wed Jun 16 04:52:13 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jun 16 11:55:39 2010 -0700"
      },
      "message": "inetpeer: restore small inet_peer structures\n\nAddition of rcu_head to struct inet_peer added 16bytes on 64bit arches.\n\nThats a bit unfortunate, since old size was exactly 64 bytes.\n\nThis can be solved, using an union between this rcu_head an four fields,\nthat are normally used only when a refcount is taken on inet_peer.\nrcu_head is used only when refcnt\u003d-1, right before structure freeing.\n\nAdd a inet_peer_refcheck() function to check this assertion for a while.\n\nWe can bring back SLAB_HWCACHE_ALIGN qualifier in kmem cache creation.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "5f2f89209500623ccb4713ec4af7de86fd30a9e4",
      "tree": "6a48b8183ac6d60d8ce6a9c907de1ea35c1ca918",
      "parents": [
        "d5f31fbfd8fa3836a918592032853c41d1797c3d"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Tue Jun 15 21:47:39 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jun 15 21:47:39 2010 -0700"
      },
      "message": "inetpeer: do not use zero refcnt for freed entries\n\nFollowup of commit aa1039e73cc2 (inetpeer: RCU conversion)\n\nUnused inet_peer entries have a null refcnt.\n\nUsing atomic_inc_not_zero() in rcu lookups is not going to work for\nthem, and slow path is taken.\n\nFix this using -1 marker instead of 0 for deleted entries.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "a95d8c88bea0c93505e1d143d075f112be2b25e3",
      "tree": "7a94017d691ef50b2ce69e389019620bd8d44077",
      "parents": [
        "d27f9b35827ec91d71d3561c127a0a8135fb470d"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Sun Jun 13 23:22:43 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jun 15 18:12:44 2010 -0700"
      },
      "message": "ipfrag : frag_kfree_skb() cleanup\n\nThird param (work) is unused, remove it.\n\nRemove __inline__ and inline qualifiers.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "d27f9b35827ec91d71d3561c127a0a8135fb470d",
      "tree": "a6a9c67628bf3b807d8bf24375fe6c075b25af32",
      "parents": [
        "2bbdf389a9432270147c8e8e35b021ad61772f65"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Sun Jun 13 23:02:24 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jun 15 18:12:44 2010 -0700"
      },
      "message": "ip_frag: Remove some atomic ops\n\nInstead of doing one atomic operation per frag, we can factorize them.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "aa1039e73cc2cf834e99c09d2033d5d2675357b9",
      "tree": "0db06e4adddaf0f77b4e8de170710b74a17375e4",
      "parents": [
        "7b34a4644b4342896e0c1967b8f953213ea4a990"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Tue Jun 15 08:23:14 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jun 15 14:23:38 2010 -0700"
      },
      "message": "inetpeer: RCU conversion\n\ninetpeer currently uses an AVL tree protected by an rwlock.\n\nIt\u0027s possible to make most lookups use RCU\n\n1) Add a struct rcu_head to struct inet_peer\n\n2) add a lookup_rcu_bh() helper to perform lockless and opportunistic\nlookup. This is a normal function, not a macro like lookup().\n\n3) Add a limit to number of links followed by lookup_rcu_bh(). This is\nneeded in case we fall in a loop.\n\n4) add an smp_wmb() in link_to_pool() right before node insert.\n\n5) make unlink_from_pool() use atomic_cmpxchg() to make sure it can take\nlast reference to an inet_peer, since lockless readers could increase\nrefcount, even while we hold peers.lock.\n\n6) Delay struct inet_peer freeing after rcu grace period so that\nlookup_rcu_bh() cannot crash.\n\n7) inet_getpeer() first attempts lockless lookup.\n   Note this lookup can fail even if target is in AVL tree, but a\nconcurrent writer can let tree in a non correct form.\n   If this attemps fails, lock is taken a regular lookup is performed\nagain.\n\n8) convert peers.lock from rwlock to a spinlock\n\n9) Remove SLAB_HWCACHE_ALIGN when peer_cachep is created, because\nrcu_head adds 16 bytes on 64bit arches, doubling effective size (64 -\u003e\n128 bytes)\nIn a future patch, this is probably possible to revert this part, if rcu\nfield is put in an union to share space with rid, ip_id_count, tcp_ts \u0026\ntcp_ts_stamp. These fields being manipulated only with refcnt \u003e 0.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "16fb62b6b4d57339a0ec931b3fb8c8d0ca6414e8",
      "tree": "a1041342f31a626baf3a08d09d5c81a65dd8ef28",
      "parents": [
        "a3433f35a55f7604742cae620c6dc6edfc70db6a",
        "f9181f4ffc71d7b7dd1906c9a11d51d6659220ae"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jun 15 13:49:24 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jun 15 13:49:24 2010 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/kaber/nf-next-2.6\n"
    },
    {
      "commit": "a3433f35a55f7604742cae620c6dc6edfc70db6a",
      "tree": "4ce6d169e402c03a48319a9db4055cc31df00d42",
      "parents": [
        "f350a0a87374418635689471606454abc7beaa3a"
      ],
      "author": {
        "name": "Changli Gao",
        "email": "xiaosuo@gmail.com",
        "time": "Sat Jun 12 14:01:43 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jun 15 11:56:19 2010 -0700"
      },
      "message": "tcp: unify tcp flag macros\n\nunify tcp flag macros: TCPHDR_FIN, TCPHDR_SYN, TCPHDR_RST, TCPHDR_PSH,\nTCPHDR_ACK, TCPHDR_URG, TCPHDR_ECE and TCPHDR_CWR. TCBCB_FLAG_* are replaced\nwith the corresponding TCPHDR_*.\n\nSigned-off-by: Changli Gao \u003cxiaosuo@gmail.com\u003e\n----\n include/net/tcp.h                      |   24 ++++++-------\n net/ipv4/tcp.c                         |    8 ++--\n net/ipv4/tcp_input.c                   |    2 -\n net/ipv4/tcp_output.c                  |   59 ++++++++++++++++-----------------\n net/netfilter/nf_conntrack_proto_tcp.c |   32 ++++++-----------\n net/netfilter/xt_TCPMSS.c              |    4 --\n 6 files changed, 58 insertions(+), 71 deletions(-)\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "f9181f4ffc71d7b7dd1906c9a11d51d6659220ae",
      "tree": "194f22e8216a1b9ee2c0dd019142202d73a7dc87",
      "parents": [
        "0902b469bd25065aa0688c3cee6f11744c817e7c",
        "1ab6c163dee279559e3a62d774af7e4c4c9b4c67"
      ],
      "author": {
        "name": "Patrick McHardy",
        "email": "kaber@trash.net",
        "time": "Tue Jun 15 17:31:06 2010 +0200"
      },
      "committer": {
        "name": "Patrick McHardy",
        "email": "kaber@trash.net",
        "time": "Tue Jun 15 17:31:06 2010 +0200"
      },
      "message": "Merge branch \u0027master\u0027 of /repos/git/net-next-2.6\n\nConflicts:\n\tinclude/net/netfilter/xt_rateest.h\n\tnet/bridge/br_netfilter.c\n\tnet/netfilter/nf_conntrack_core.c\n\nSigned-off-by: Patrick McHardy \u003ckaber@trash.net\u003e\n"
    },
    {
      "commit": "d73f33b168831e53972fbf7c85db87950a41436c",
      "tree": "5a3b5837b12728bc74fdf20505ffc1770b2a885e",
      "parents": [
        "0b041f8d1e6fb11a6134d37230da8c2182f99110"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Tue Jun 15 13:08:51 2010 +0200"
      },
      "committer": {
        "name": "Patrick McHardy",
        "email": "kaber@trash.net",
        "time": "Tue Jun 15 13:08:51 2010 +0200"
      },
      "message": "netfilter: CLUSTERIP: RCU conversion\n\n- clusterip_lock becomes a spinlock\n- lockless lookups\n- kfree() deferred after RCU grace period\n- rcu_barrier_bh() inserted in clusterip_tg_exit()\n\nv2)\n- As Patrick pointed out, we use atomic_inc_not_zero() in\nclusterip_config_find_get().\n- list_add_rcu() and list_del_rcu() variants are used.\n- atomic_dec_and_lock() used in clusterip_config_entry_put()\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: Patrick McHardy \u003ckaber@trash.net\u003e\n"
    },
    {
      "commit": "d6cc1d642de9284cb26488ea390d915b50ee2504",
      "tree": "7652471f541c11f63f54e282a04a9cba614e8d5e",
      "parents": [
        "6b10de38f0ef4e921a1f6e5cba2b6c92d6b46ecd"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Mon Jun 14 19:35:21 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jun 14 23:13:08 2010 -0700"
      },
      "message": "inetpeer: various changes\n\nTry to reduce cache line contentions in peer management, to reduce IP\ndefragmentation overhead.\n\n- peer_fake_node is marked \u0027const\u0027 to make sure its not modified.\n  (tested with CONFIG_DEBUG_RODATA\u003dy)\n\n- Group variables in two structures to reduce number of dirtied cache\nlines. One named \"peers\" for avl tree root, its number of entries, and\nassociated lock. (candidate for RCU conversion)\n\n- A second one named \"unused_peers\" for unused list and its lock\n\n- Add a !list_empty() test in unlink_from_unused() to avoid taking lock\nwhen entry is not unused.\n\n- Use atomic_dec_and_lock() in inet_putpeer() to avoid taking lock in\nsome cases.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "c86ee67c7c4bbab2818f653eb00a70671821624a",
      "tree": "9891e77244749ee9d3dea22a948c80e554a27788",
      "parents": [
        "f5c5440d40a24c5dc8030cde0a03debe87de4afb"
      ],
      "author": {
        "name": "Shan Wei",
        "email": "shanwei@cn.fujitsu.com",
        "time": "Mon Jun 14 16:20:02 2010 +0200"
      },
      "committer": {
        "name": "Patrick McHardy",
        "email": "kaber@trash.net",
        "time": "Mon Jun 14 16:20:02 2010 +0200"
      },
      "message": "netfilter: kill redundant check code in which setting ip_summed value\n\nIf the returned csum value is 0, We has set ip_summed with\nCHECKSUM_UNNECESSARY flag in __skb_checksum_complete_head().\n\nSo this patch kills the check and changes to return to upper\ncaller directly.\n\nSigned-off-by: Shan Wei \u003cshanwei@cn.fujitsu.com\u003e\nSigned-off-by: Patrick McHardy \u003ckaber@trash.net\u003e\n"
    },
    {
      "commit": "62522d36d74a843e78d17f2dffc90468c6762803",
      "tree": "d9d21de6724425c1b0ba12991e0865556aeda6b4",
      "parents": [
        "a71fba97295db924c0b90266e9833e5059fead24",
        "e79aa8671033535c2e9ffc0a68010ae49ed5734c"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jun 11 13:32:31 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jun 11 13:32:31 2010 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6\n"
    },
    {
      "commit": "d8d1f30b95a635dbd610dcc5eb641aca8f4768cf",
      "tree": "71424d82a96facd5fcf05cc769ef2ba52b584aeb",
      "parents": [
        "592fcb9dfafaa02dd0edc207bf5d3a0ee7a1f8df"
      ],
      "author": {
        "name": "Changli Gao",
        "email": "xiaosuo@gmail.com",
        "time": "Thu Jun 10 23:31:35 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Jun 10 23:31:35 2010 -0700"
      },
      "message": "net-next: remove useless union keyword\n\nremove useless union keyword in rtable, rt6_info and dn_route.\n\nSince there is only one member in a union, the union keyword isn\u0027t useful.\n\nSigned-off-by: Changli Gao \u003cxiaosuo@gmail.com\u003e\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "592fcb9dfafaa02dd0edc207bf5d3a0ee7a1f8df",
      "tree": "3b7bbd5313c7f564cf8087658c36d32a87ca79c4",
      "parents": [
        "96b52e61be1ad4d4f8de39b9deaf253da804ea3b"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Wed Jun 09 16:21:07 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Jun 10 22:47:08 2010 -0700"
      },
      "message": "ip: ip_ra_control() rcu fix\n\ncommit 66018506e15b (ip: Router Alert RCU conversion) introduced RCU\nlookups to ip_call_ra_chain(). It missed proper deinit phase :\nWhen ip_ra_control() deletes an ip_ra_chain, it should make sure\nip_call_ra_chain() users can not start to use socket during the rcu\ngrace period. It should also delay the sock_put() after the grace\nperiod, or we risk a premature socket freeing and corruptions, as\nraw sockets are not rcu protected yet.\n\nThis delay avoids using expensive atomic_inc_not_zero() in\nip_call_ra_chain().\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "cfa087f689402438e3cb0f077e649d01c871b0e7",
      "tree": "0284b1ef6a086fae77da311cc2f9efd6588a77dc",
      "parents": [
        "88e7594a9775e54dcd421cb246406dce62e48bee"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Mon Jun 07 22:34:35 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jun 09 18:06:13 2010 -0700"
      },
      "message": "icmp: RCU conversion in icmp_address_reply()\n\n- rcu_read_lock() already held by caller\n- use __in_dev_get_rcu() instead of in_dev_get() / in_dev_put()\n- remove goto out;\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "5756d346c7cdefcd84a8ac4901167cdfb5447b69",
      "tree": "4ac2c15adef1bd1e62292815a04ce7c8aefb765a",
      "parents": [
        "2bf074825403e0e0d623bac7573580773b78abef"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Wed Jun 09 15:47:41 2010 +0200"
      },
      "committer": {
        "name": "Patrick McHardy",
        "email": "kaber@trash.net",
        "time": "Wed Jun 09 15:47:41 2010 +0200"
      },
      "message": "netfilter: ip_queue: rwlock to spinlock conversion\n\nConverts queue_lock rwlock to a spinlock.\n\n(readlocked part can be changed by reads of integer values)\n\nOne atomic operation instead of four per ipq_enqueue_packet() call.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: Patrick McHardy \u003ckaber@trash.net\u003e\n"
    },
    {
      "commit": "5bfddbd46a95c978f4d3c992339cbdf4f4b790a3",
      "tree": "9291ba4e1e3c7bf7ae8b5dfa8271e7127a6a6958",
      "parents": [
        "339bb99e4a8ba1f8960eed21d50be808b35ad22a"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Tue Jun 08 16:09:52 2010 +0200"
      },
      "committer": {
        "name": "Patrick McHardy",
        "email": "kaber@trash.net",
        "time": "Tue Jun 08 16:09:52 2010 +0200"
      },
      "message": "netfilter: nf_conntrack: IPS_UNTRACKED bit\n\nNOTRACK makes all cpus share a cache line on nf_conntrack_untracked\ntwice per packet. This is bad for performance.\n__read_mostly annotation is also a bad choice.\n\nThis patch introduces IPS_UNTRACKED bit so that we can use later a\nper_cpu untrack structure more easily.\n\nA new helper, nf_ct_untracked_get() returns a pointer to\nnf_conntrack_untracked.\n\nAnother one, nf_ct_untracked_status_or() is used by nf_nat_init() to add\nIPS_NAT_DONE_MASK bits to untracked status.\n\nnf_ct_is_untracked() prototype is changed to work on a nf_conn pointer.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: Patrick McHardy \u003ckaber@trash.net\u003e\n"
    },
    {
      "commit": "6e8b11b43b0c2e901734e2cdd70c6e325a90c4ef",
      "tree": "867d740b9969f749890dabaa252f78232af467b3",
      "parents": [
        "ed7865a47d4759e85bbd7bed44bee411d868eaad"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Mon Jun 07 03:54:46 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jun 07 21:49:51 2010 -0700"
      },
      "message": "net: avoid two atomic ops in ip_rcv_options()\n\nin_dev_get() -\u003e __in_dev_get_rcu() in a rcu protected function.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "ed7865a47d4759e85bbd7bed44bee411d868eaad",
      "tree": "f0d2bd7d1f6c2c9d962baf84d2041a5b8c1c6b64",
      "parents": [
        "9a57a9d291980302b4a3184fbc47dbddac71903e"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Mon Jun 07 21:49:44 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jun 07 21:49:44 2010 -0700"
      },
      "message": "ipv4: avoid two atomic ops in ip_rt_redirect()\n\nin_dev_get() -\u003e __in_dev_get_rcu() in a rcu protected function.\n\n[ Fix build with CONFIG_IP_ROUTE_VERBOSE disabled. -DaveM ]\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "9a57a9d291980302b4a3184fbc47dbddac71903e",
      "tree": "f7e28ced28e4615074ceaf6ab4750a9630cdba95",
      "parents": [
        "66018506e15bea62de4eefc3298f170b4bfcf5ef"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Mon Jun 07 03:17:10 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jun 07 21:25:21 2010 -0700"
      },
      "message": "igmp: avoid two atomic ops in igmp_rcv()\n\nin_dev_get() -\u003e __in_dev_get_rcu() in a rcu protected function.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "66018506e15bea62de4eefc3298f170b4bfcf5ef",
      "tree": "d2dbf5c06e317b85f75b946a1b63ed0917d0382a",
      "parents": [
        "8b37ef0a1f6c2401fea3536facfa21191936bd6c"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Mon Jun 07 03:12:08 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jun 07 21:25:21 2010 -0700"
      },
      "message": "ip: Router Alert RCU conversion\n\nStraightforward conversion to RCU.\n\nOne rwlock becomes a spinlock, and is static.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "035320d54758e21227987e3aae0d46e7a04f4ddc",
      "tree": "9ad66a45ab0b0d903ebcbe435894d1fb9d5d78f5",
      "parents": [
        "3fd7fa4a89f0b85b9b33e922f15a2289c0fb8499"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Sun Jun 06 23:48:40 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jun 07 02:57:14 2010 -0700"
      },
      "message": "ipmr: dont corrupt lists\n\nipmr_rules_exit() and ip6mr_rules_exit() free a list of items, but\nforget to properly remove these items from list. List head is not\nchanged and still points to freed memory.\n\nThis can trigger a fault later when icmpv6_sk_exit() is called.\n\nFix is to either reinit list, or use list_del() to properly remove items\nfrom list before freeing them.\n\nbugzilla report : https://bugzilla.kernel.org/show_bug.cgi?id\u003d16120\n\nIntroduced by commit d1db275dd3f6e4 (ipv6: ip6mr: support multiple\ntables) and commit f0ad0860d01e (ipv4: ipmr: support multiple tables)\n\nReported-by: Alex Zhavnerchik \u003calex.vizor@gmail.com\u003e\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nCC: Patrick McHardy \u003ckaber@trash.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "1789a640f55658d9a54c1868cc3405e4d85dbd8e",
      "tree": "4ff0efbe06c9f8ab2ff715bfcda91dc31d7c7f65",
      "parents": [
        "fe33147a58e7d1d3086bf823aabfd491d843be82"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Thu Jun 03 22:23:57 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jun 07 01:08:10 2010 -0700"
      },
      "message": "raw: avoid two atomics in xmit\n\nAvoid two atomic ops per raw_send_hdrinc() call\n\nAvoid two atomic ops per raw6_send_hdrinc() call\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "a8b690f98baf9fb1902b8eeab801351ea603fa3a",
      "tree": "b48940354a3236d33e33ca4f1b9169c9545cd551",
      "parents": [
        "83038a2a7062f6cbbdcfaff47284566f060a5af1"
      ],
      "author": {
        "name": "Tom Herbert",
        "email": "therbert@google.com",
        "time": "Mon Jun 07 00:43:42 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jun 07 00:43:42 2010 -0700"
      },
      "message": "tcp: Fix slowness in read /proc/net/tcp\n\nThis patch address a serious performance issue in reading the\nTCP sockets table (/proc/net/tcp).\n\nReading the full table is done by a number of sequential read\noperations.  At each read operation, a seek is done to find the\nlast socket that was previously read.  This seek operation requires\nthat the sockets in the table need to be counted up to the current\nfile position, and to count each of these requires taking a lock for\neach non-empty bucket.  The whole algorithm is O(n^2).\n\nThe fix is to cache the last bucket value, offset within the bucket,\nand the file position returned by the last read operation.   On the\nnext sequential read, the bucket and offset are used to find the\nlast read socket immediately without needing ot scan the previous\nbuckets  the table.  This algorithm t read the whole table is O(n).\n\nThe improvement offered by this patch is easily show by performing\ncat\u0027ing /proc/net/tcp on a machine with a lot of connections.  With\nabout 182K connections in the table, I see the following:\n\n- Without patch\ntime cat /proc/net/tcp \u003e /dev/null\n\nreal\t1m56.729s\nuser\t0m0.214s\nsys\t1m56.344s\n\n- With patch\ntime cat /proc/net/tcp \u003e /dev/null\n\nreal\t0m0.894s\nuser\t0m0.290s\nsys\t0m0.594s\n\nSigned-off-by: Tom Herbert \u003ctherbert@google.com\u003e\nAcked-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "eedc765ca4b19a41cf0b921a492ac08d640060d1",
      "tree": "95c566c6238cc953e1e336115d2daafe8bcb388f",
      "parents": [
        "e59d44df46edaafb6b637e98d046775524b31104",
        "024a07bacf8287a6ddfa83e9d5b951c5e8b4070e"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Jun 06 17:42:02 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Jun 06 17:42:02 2010 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6\n\nConflicts:\n\tdrivers/net/sfc/net_driver.h\n\tdrivers/net/sfc/siena.c\n"
    },
    {
      "commit": "5918e2fb9035b35164002c3a268feaf70b7c04d5",
      "tree": "3a785e4b13971d9b9e9098a339ad005364949852",
      "parents": [
        "af9b4738574b46025de7ccbe75c7b24fd8914379"
      ],
      "author": {
        "name": "Florian Westphal",
        "email": "fw@strlen.de",
        "time": "Thu Jun 03 00:43:57 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Jun 05 02:23:15 2010 -0700"
      },
      "message": "syncookies: update mss tables\n\n- ipv6 msstab: account for ipv6 header size\n- ipv4 msstab: add mss for Jumbograms.\n\nSigned-off-by: Florian Westphal \u003cfw@strlen.de\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "af9b4738574b46025de7ccbe75c7b24fd8914379",
      "tree": "6d05b82261ce76e6ecf00131c667292b62d16adf",
      "parents": [
        "2a1d4bd46047efff513600d7ff422bc344f540a6"
      ],
      "author": {
        "name": "Florian Westphal",
        "email": "fw@strlen.de",
        "time": "Thu Jun 03 00:43:44 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Jun 05 02:23:14 2010 -0700"
      },
      "message": "syncookies: avoid unneeded tcp header flag double check\n\ncaller: if (!th-\u003erst \u0026\u0026 !th-\u003esyn \u0026\u0026 th-\u003eack)\ncallee: if (!th-\u003eack)\n\nmake the caller only check for !syn (common for 3whs), and move\nthe !rst / ack test to the callee.\n\nSigned-off-by: Florian Westphal \u003cfw@strlen.de\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "2a1d4bd46047efff513600d7ff422bc344f540a6",
      "tree": "de7fc60152e12530c4159809a00560f60d284b25",
      "parents": [
        "87eb743b943a472eb90ac2cbf7f4a132773de77f"
      ],
      "author": {
        "name": "Florian Westphal",
        "email": "fw@strlen.de",
        "time": "Thu Jun 03 00:43:12 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Jun 05 02:23:14 2010 -0700"
      },
      "message": "syncookies: make v4/v6 synflood warning behaviour the same\n\nboth syn_flood_warning functions print a message, but\nipv4 version only prints a warning if CONFIG_SYN_COOKIES\u003dy.\n\nMake the v4 one behave like the v6 one.\n\nSigned-off-by: Florian Westphal \u003cfw@strlen.de\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "c44649216522cd607a4027d2ebf4a8147d3fa94c",
      "tree": "e46e153f3f3166353d9818e6b719f1c06b60d4be",
      "parents": [
        "ca55158c6ecb7832a6ad80ac44a14d23bab8cdfc"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Thu Jun 03 05:45:47 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jun 04 15:56:03 2010 -0700"
      },
      "message": "tcp: use correct net ns in cookie_v4_check()\n\nIts better to make a route lookup in appropriate namespace.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "ca55158c6ecb7832a6ad80ac44a14d23bab8cdfc",
      "tree": "e701c78b85016247fa5962de0e0793e5b985930e",
      "parents": [
        "536e00e570c87f258554e919c444b81a7002e46d"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Thu Jun 03 09:03:58 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jun 04 15:56:02 2010 -0700"
      },
      "message": "rps: tcp: fix rps_sock_flow_table table updates\n\nI believe a moderate SYN flood attack can corrupt RFS flow table\n(rps_sock_flow_table), making RPS/RFS much less effective.\n\nEven in a normal situation, server handling short lived sessions suffer\nfrom bad steering for the first data packet of a session, if another SYN\npacket is received for another session.\n\nWe do following action in tcp_v4_rcv() :\n\n\tsock_rps_save_rxhash(sk, skb-\u003erxhash);\n\nWe should _not_ do this if sk is a LISTEN socket, as about each\npacket received on a LISTEN socket has a different rxhash than\nprevious one.\n -\u003e RPS_NO_CPU markers are spread all over rps_sock_flow_table.\n\nAlso, it makes sense to protect sk-\u003erxhash field changes with socket\nlock (We currently can change it even if user thread owns the lock\nand might use rxhash)\n\nThis patch moves sock_rps_save_rxhash() to a sock locked section,\nand only for non LISTEN sockets.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "57f1553ee5d9f093660cc49098f494e17ed11668",
      "tree": "95387158da48c4dde7bb17477f87944c13e2456f",
      "parents": [
        "ca739481662137b8f717bc21f16719cda3c33d6b"
      ],
      "author": {
        "name": "Florian Westphal",
        "email": "fw@strlen.de",
        "time": "Thu Jun 03 00:42:30 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jun 04 15:56:01 2010 -0700"
      },
      "message": "syncookies: remove Kconfig text line about disabled-by-default\n\nsyncookies default to on since\ne994b7c901ded7200b525a707c6da71f2cf6d4bb\n(tcp: Don\u0027t make syn cookies initial setting depend on CONFIG_SYSCTL).\n\nSigned-off-by: Florian Westphal \u003cfw@strlen.de\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "e12f8e29a8526172b7715881503bae636d60bdd8",
      "tree": "07a32ce30bf0c8903b9b0941c212939ec04f9c44",
      "parents": [
        "fabf3a85ab88063c10f367cccba7b3a1e59df996"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Fri Jun 04 13:31:29 2010 +0200"
      },
      "committer": {
        "name": "Patrick McHardy",
        "email": "kaber@trash.net",
        "time": "Fri Jun 04 13:31:29 2010 +0200"
      },
      "message": "netfilter: vmalloc_node cleanup\n\nUsing vmalloc_node(size, numa_node_id()) for temporary storage is not\nneeded. vmalloc(size) is more respectful of user NUMA policy.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: Patrick McHardy \u003ckaber@trash.net\u003e\n"
    },
    {
      "commit": "faa9dcf793beba05f7178b63a59eaa3ca5175b6a",
      "tree": "0addd3f98e77ab34a8686eaf6855896efe2f9c4f",
      "parents": [
        "4736022844fe694c4ee971fa2b6c1cb38dadbc78"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Thu Jun 03 04:09:10 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Jun 03 20:01:52 2010 -0700"
      },
      "message": "arp: RCU changes\n\nAvoid two atomic ops in arp_fwd_proxy()\n\nAvoid two atomic ops in arp_process()\n\nValid optims since arp_rcv() is run under rcu_read_lock()\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "4736022844fe694c4ee971fa2b6c1cb38dadbc78",
      "tree": "0eafa36fe68d886c152548bfc367627a57fe4dd5",
      "parents": [
        "bc10502dba37d3b210efd9f3867212298f13b78e"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Thu Jun 03 04:13:21 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Jun 03 20:01:51 2010 -0700"
      },
      "message": "ipv4: RCU changes in __mkroute_input()\n\nAvoid two atomic ops on output device refcount\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "96d362202bfc0e5da78ee59b1645296fbca515f4",
      "tree": "ce3cc34d9a75f8c5d91ea9eb711993657d32af77",
      "parents": [
        "b5f7e7554753e2cc3ef3bef0271fdb32027df2ba"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Wed Jun 02 19:21:31 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Jun 03 03:18:19 2010 -0700"
      },
      "message": "ipv4: RCU conversion of ip_route_input_slow/ip_route_input_mc\n\nAvoid two atomic ops on struct in_device refcount per incoming packet,\nif slow path taken, (or route cache disabled)\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "b5f7e7554753e2cc3ef3bef0271fdb32027df2ba",
      "tree": "e7908b1ccf1cfef6bdeb7cac4c83f6d2ad2be54e",
      "parents": [
        "8cbccbe76168a0c627d2274e4a322116804db30f"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Wed Jun 02 12:05:27 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Jun 03 03:18:19 2010 -0700"
      },
      "message": "ipv4: add LINUX_MIB_IPRPFILTER snmp counter\n\nChristoph Lameter mentioned that packets could be dropped in input path\nbecause of rp_filter settings, without any SNMP counter being\nincremented. System administrator can have a hard time to track the\nproblem.\n\nThis patch introduces a new counter, LINUX_MIB_IPRPFILTER, incremented\neach time we drop a packet because Reverse Path Filter triggers.\n\n(We receive an IPv4 datagram on a given interface, and find the route to\nsend an answer would use another interface)\n\nnetstat -s | grep IPReversePathFilter\n    IPReversePathFilter: 21714\n\nReported-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "edafe502404f3669d364b6e96d79b54067b634b4",
      "tree": "ef3c1a3921e20b2dc40938f2de23e893a6a53c4a",
      "parents": [
        "33c29dde7d04dc0ec0edb649d20ccf1351c13a06"
      ],
      "author": {
        "name": "Daniele Lacamera",
        "email": "root@danielinux.net",
        "time": "Wed Jun 02 02:02:04 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jun 02 07:15:48 2010 -0700"
      },
      "message": "TCP: tcp_hybla: Fix integer overflow in slow start increment\n\nFor large values of rtt, 2^rho operation may overflow u32. Clamp down the increment to 2^16.\n\nSigned-off-by: Daniele Lacamera \u003croot@danielinux.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "130c0f47fdf9c533deb1136cad5136f6cb7020f0",
      "tree": "38ab94d926bf68fc2dd5cb8941777574bcb26a11",
      "parents": [
        "614f60fa9d73a9e8fdff3df83381907fea7c5649"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Sun May 30 17:19:53 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jun 02 07:05:03 2010 -0700"
      },
      "message": "ipconfig: send host-name in DHCP requests\n\nNormally dhclient can be configured to send the \"host-name\" option\nin DHCP requests to update the client\u0027s DNS record. However for an\nNFSROOT system, dhclient shall never be called (which may change the\nIP addr and therefore lose your root NFS mount connection).\n\nSo enable updating the DNS record with kernel parameter\n\n\tip\u003d::::$HOST_NAME::dhcp\n\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "3ed37a6fa70a3a63dbb257fc640facb3974bba40",
      "tree": "74722d590bb45aebae53890c25a8dcbae6090a13",
      "parents": [
        "589be6500560c70f4873f8c1fb66671624944433"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Mon May 31 17:23:21 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jun 01 00:15:54 2010 -0700"
      },
      "message": "net/ipv4/igmp.c: Remove unnecessary kmalloc casts\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "288fcee8b7aa98796d96cd5b1b2e8005639328bf",
      "tree": "25a9b70411711a86de005f188d6d591c6fc196ad",
      "parents": [
        "5953a303471951a4c2f2127f0b4c74df7ceb7ac2"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Mon May 31 23:48:19 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon May 31 23:52:39 2010 -0700"
      },
      "message": "net/ipv4/tcp_input.c: fix compilation breakage when FASTRETRANS_DEBUG \u003e 1\n\nCommit: c720c7e8383aff1cb219bddf474ed89d850336e3 missed these.\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nAcked-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "5953a303471951a4c2f2127f0b4c74df7ceb7ac2",
      "tree": "13b51217a6f538fe5c72821b1ee65d9bfea72842",
      "parents": [
        "b1faf5666438090a4dc4fceac8502edc7788b7e3",
        "7489aec8eed4f2f1eb3b4d35763bd3ea30b32ef5"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon May 31 23:44:57 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon May 31 23:44:57 2010 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/kaber/nf-2.6\n"
    },
    {
      "commit": "b1faf5666438090a4dc4fceac8502edc7788b7e3",
      "tree": "f90808dea27cc38aff6feed1782e2a5666fa6ee9",
      "parents": [
        "bc284f94f84c3d76e49c6f3df9028c503f9589d9"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Mon May 31 23:44:05 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon May 31 23:44:05 2010 -0700"
      },
      "message": "net: sock_queue_err_skb() dont mess with sk_forward_alloc\n\nCorrect sk_forward_alloc handling for error_queue would need to use a\nbacklog of frames that softirq handler could not deliver because socket\nis owned by user thread. Or extend backlog processing to be able to\nprocess normal and error packets.\n\nAnother possibility is to not use mem charge for error queue, this is\nwhat I implemented in this patch.\n\nNote: this reverts commit 29030374\n(net: fix sk_forward_alloc corruptions), since we dont need to lock\nsocket anymore.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "7489aec8eed4f2f1eb3b4d35763bd3ea30b32ef5",
      "tree": "fe2450679dc217183421e606b3912641545596bd",
      "parents": [
        "c936e8bd1de2fa50c49e3df6fa5036bf07870b67"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Mon May 31 16:41:35 2010 +0200"
      },
      "committer": {
        "name": "Patrick McHardy",
        "email": "kaber@trash.net",
        "time": "Mon May 31 16:41:35 2010 +0200"
      },
      "message": "netfilter: xtables: stackptr should be percpu\n\ncommit f3c5c1bfd4 (netfilter: xtables: make ip_tables reentrant)\nintroduced a performance regression, because stackptr array is shared by\nall cpus, adding cache line ping pongs. (16 cpus share a 64 bytes cache\nline)\n\nFix this using alloc_percpu()\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nAcked-By: Jan Engelhardt \u003cjengelh@medozas.de\u003e\nSigned-off-by: Patrick McHardy \u003ckaber@trash.net\u003e\n"
    },
    {
      "commit": "64960848abd18d0bcde3f53ffa7ed0b631e6b25d",
      "tree": "8424a1c550a98ce09f127425fde9b7b5f2f5027a",
      "parents": [
        "2903037400a26e7c0cc93ab75a7d62abfacdf485",
        "67a3e12b05e055c0415c556a315a3d3eb637e29e"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon May 31 05:46:45 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon May 31 05:46:45 2010 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of /home/davem/src/GIT/linux-2.6/\n"
    },
    {
      "commit": "06c4648d46d1b757d6b9591a86810be79818b60c",
      "tree": "96f6e09a23071157d5b446853294b4564155ffee",
      "parents": [
        "3f8dc2362fd43a0adee2f6f05bf1ac4d619675b6"
      ],
      "author": {
        "name": "Ian Campbell",
        "email": "Ian.Campbell@citrix.com",
        "time": "Wed May 26 00:09:42 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon May 31 00:27:44 2010 -0700"
      },
      "message": "arp_notify: allow drivers to explicitly request a notification event.\n\nCurrently such notifications are only generated when the device comes up or the\naddress changes. However one use case for these notifications is to enable\nfaster network recovery after a virtual machine migration (by causing switches\nto relearn their MAC tables). A migration appears to the network stack as a\ntemporary loss of carrier and therefore does not trigger either of the current\nconditions. Rather than adding carrier up as a trigger (which can cause issues\nwhen interfaces a flapping) simply add an interface which the driver can use\nto explicitly trigger the notification.\n\nSigned-off-by: Ian Campbell \u003cian.campbell@citrix.com\u003e\nCc: Stephen Hemminger \u003cshemminger@linux-foundation.org\u003e\nCc: Jeremy Fitzhardinge \u003cjeremy@goop.org\u003e\nCc: David S. Miller \u003cdavem@davemloft.net\u003e\nCc: netdev@vger.kernel.org\nCc: stable@kernel.org\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "d7fd1b5747fff3bde92777bcaf705d98ae6f8b6f",
      "tree": "8cdac5dba6b350fd759eadd324e706639180a162",
      "parents": [
        "15e83ed78864d0625e87a85f09b297c0919a4797"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Mon May 17 20:40:51 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon May 31 00:24:02 2010 -0700"
      },
      "message": "tcp: tcp_md5_hash_skb_data() frag_list handling\n\ntcp_md5_hash_skb_data() should handle skb-\u003efrag_list, and eventually\nrecurse.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "27f39c73e63833b4c081a0d681d88b4184a0491d",
      "tree": "49cca2881bcd9212cd99a1e30c83f40a20eefc55",
      "parents": [
        "604c1b1868f16e7b2fc13401d8c9147f167bec0a"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Wed May 19 22:07:23 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon May 31 00:24:01 2010 -0700"
      },
      "message": "net: Use __this_cpu_inc() in fast path\n\nThis patch saves 224 bytes of text on my machine.\n\n__this_cpu_inc() generates a single instruction, using no scratch\nregisters :\n\n  65 ff 04 25 a8 30 01 00      incl   %gs:0x130a8\n\ninstead of :\n\n  48 c7 c2 80 30 01 00         mov    $0x13080,%rdx\n  65 48 8b 04 25 88 ea 00 00   mov    %gs:0xea88,%rax\n  83 44 10 28 01               addl   $0x1,0x28(%rax,%rdx,1)\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "92b4522f72916ff2675060e29e4b24cf26ab59ce",
      "tree": "8424a1c550a98ce09f127425fde9b7b5f2f5027a",
      "parents": [
        "67a3e12b05e055c0415c556a315a3d3eb637e29e",
        "2903037400a26e7c0cc93ab75a7d62abfacdf485"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon May 31 00:10:35 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon May 31 00:10:35 2010 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6\n"
    },
    {
      "commit": "2903037400a26e7c0cc93ab75a7d62abfacdf485",
      "tree": "c29d8b3199d8fa52856e5edcd374411f962d7c11",
      "parents": [
        "7dfde179c38056b91d51e60f3d50902387f27c84"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Sat May 29 00:20:48 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat May 29 00:20:48 2010 -0700"
      },
      "message": "net: fix sk_forward_alloc corruptions\n\nAs David found out, sock_queue_err_skb() should be called with socket\nlock hold, or we risk sk_forward_alloc corruption, since we use non\natomic operations to update this field.\n\nThis patch adds bh_lock_sock()/bh_unlock_sock() pair to three spots.\n(BH already disabled)\n\n1) skb_tstamp_tx() \n2) Before calling ip_icmp_error(), in __udp4_lib_err() \n3) Before calling ipv6_icmp_error(), in __udp6_lib_err()\n\nReported-by: Anton Blanchard \u003canton@samba.org\u003e\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "72da3bc0cb3e82bd95f278a0c5c988e506e56d13",
      "tree": "db4bf9f9265be3216dfb3d65b49e53d8448e13e2",
      "parents": [
        "8507bb0062bff1431bbcce921efe5cd1186fcff2",
        "045de01a174d9f0734f657eb4b3313d89b4fd5ad"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 28 10:18:40 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 28 10:18:40 2010 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (22 commits)\n  netlink: bug fix: wrong size was calculated for vfinfo list blob\n  netlink: bug fix: don\u0027t overrun skbs on vf_port dump\n  xt_tee: use skb_dst_drop()\n  netdev/fec: fix ifconfig eth0 down hang issue\n  cnic: Fix context memory init. on 5709.\n  drivers/net: Eliminate a NULL pointer dereference\n  drivers/net/hamradio: Eliminate a NULL pointer dereference\n  be2net: Patch removes redundant while statement in loop.\n  ipv6: Add GSO support on forwarding path\n  net: fix __neigh_event_send()\n  vhost: fix the memory leak which will happen when memory_access_ok fails\n  vhost-net: fix to check the return value of copy_to/from_user() correctly\n  vhost: fix to check the return value of copy_to/from_user() correctly\n  vhost: Fix host panic if ioctl called with wrong index\n  net: fix lock_sock_bh/unlock_sock_bh\n  net/iucv: Add missing spin_unlock\n  net: ll_temac: fix checksum offload logic\n  net: ll_temac: fix interrupt bug when interrupt 0 is used\n  sctp: dubious bitfields in sctp_transport\n  ipmr: off by one in __ipmr_fill_mroute()\n  ...\n"
    },
    {
      "commit": "8a74ad60a546b13bd1096b2a61a7a5c6fd9ae17c",
      "tree": "3110e7e59883597b5d0f617e8507e15b8f965f3f",
      "parents": [
        "a56635a56f2afb3d22d9ce07e8f8d69537416b2d"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Wed May 26 19:20:18 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu May 27 00:30:53 2010 -0700"
      },
      "message": "net: fix lock_sock_bh/unlock_sock_bh\n\nThis new sock lock primitive was introduced to speedup some user context\nsocket manipulation. But it is unsafe to protect two threads, one using\nregular lock_sock/release_sock, one using lock_sock_bh/unlock_sock_bh\n\nThis patch changes lock_sock_bh to be careful against \u0027owned\u0027 state.\nIf owned is found to be set, we must take the slow path.\nlock_sock_bh() now returns a boolean to say if the slow path was taken,\nand this boolean is used at unlock_sock_bh time to call the appropriate\nunlock function.\n\nAfter this change, BH are either disabled or enabled during the\nlock_sock_bh/unlock_sock_bh protected section. This might be misleading,\nso we rename these functions to lock_sock_fast()/unlock_sock_fast().\n\nReported-by: Anton Blanchard \u003canton@samba.org\u003e\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nTested-by: Anton Blanchard \u003canton@samba.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "ed0f160ad674407adb3aba499444f71c83289c63",
      "tree": "39cff780164f55d6cda23018431ab553c4477f9e",
      "parents": [
        "d938a702e5ce8909ea68be97566150507bfea4df"
      ],
      "author": {
        "name": "Dan Carpenter",
        "email": "error27@gmail.com",
        "time": "Wed May 26 00:38:56 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed May 26 00:38:56 2010 -0700"
      },
      "message": "ipmr: off by one in __ipmr_fill_mroute()\n\nThis fixes a smatch warning:\n\tnet/ipv4/ipmr.c +1917 __ipmr_fill_mroute(12) error: buffer overflow\n\t\u0027(mrt)-\u003evif_table\u0027 32 \u003c\u003d 32\n\nThe ipv6 version had the same issue.\n\nSigned-off-by: Dan Carpenter \u003cerror27@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "4be929be34f9bdeffa40d815d32d7d60d2c7f03b",
      "tree": "4d2c6e2b8ef766e565e2e050ee151de2e02081d3",
      "parents": [
        "940370fc86b920b51a34217a1facc3e9e97c2456"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon May 24 14:33:03 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 25 08:07:02 2010 -0700"
      },
      "message": "kernel-wide: replace USHORT_MAX, SHORT_MAX and SHORT_MIN with USHRT_MAX, SHRT_MAX and SHRT_MIN\n\n- C99 knows about USHRT_MAX/SHRT_MAX/SHRT_MIN, not\n  USHORT_MAX/SHORT_MAX/SHORT_MIN.\n\n- Make SHRT_MIN of type s16, not int, for consistency.\n\n[akpm@linux-foundation.org: fix drivers/dma/timb_dma.c]\n[akpm@linux-foundation.org: fix security/keys/keyring.c]\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nAcked-by: WANG Cong \u003cxiyou.wangcong@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f8965467f366fd18f01feafb5db10512d7b4422c",
      "tree": "3706a9cd779859271ca61b85c63a1bc3f82d626e",
      "parents": [
        "a26272e5200765691e67d6780e52b32498fdb659",
        "2ec8c6bb5d8f3a62a79f463525054bae1e3d4487"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 20 21:04:44 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 20 21:04:44 2010 -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: (1674 commits)\n  qlcnic: adding co maintainer\n  ixgbe: add support for active DA cables\n  ixgbe: dcb, do not tag tc_prio_control frames\n  ixgbe: fix ixgbe_tx_is_paused logic\n  ixgbe: always enable vlan strip/insert when DCB is enabled\n  ixgbe: remove some redundant code in setting FCoE FIP filter\n  ixgbe: fix wrong offset to fc_frame_header in ixgbe_fcoe_ddp\n  ixgbe: fix header len when unsplit packet overflows to data buffer\n  ipv6: Never schedule DAD timer on dead address\n  ipv6: Use POSTDAD state\n  ipv6: Use state_lock to protect ifa state\n  ipv6: Replace inet6_ifaddr-\u003edead with state\n  cxgb4: notify upper drivers if the device is already up when they load\n  cxgb4: keep interrupts available when the ports are brought down\n  cxgb4: fix initial addition of MAC address\n  cnic: Return SPQ credit to bnx2x after ring setup and shutdown.\n  cnic: Convert cnic_local_flags to atomic ops.\n  can: Fix SJA1000 command register writes on SMP systems\n  bridge: fix build for CONFIG_SYSFS disabled\n  ARCNET: Limit com20020 PCI ID matches for SOHARD cards\n  ...\n\nFix up various conflicts with pcmcia tree drivers/net/\n{pcmcia/3c589_cs.c, wireless/orinoco/orinoco_cs.c and\nwireless/orinoco/spectrum_cs.c} and feature removal\n(Documentation/feature-removal-schedule.txt).\n\nAlso fix a non-content conflict due to pm_qos_requirement getting\nrenamed in the PM tree (now pm_qos_request) in net/mac80211/scan.c\n"
    },
    {
      "commit": "f39d01be4c59a61a08d0cb53f615e7016b85d339",
      "tree": "6777590e3ff2ddf4df1d38444ba7d692cd463b7b",
      "parents": [
        "54291263519ac2c9bdda68b23b02fef3808deed4",
        "7db82437cfcac4bdfe79a6323eb554fdfa271623"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 20 09:20:59 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 20 09:20:59 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (44 commits)\n  vlynq: make whole Kconfig-menu dependant on architecture\n  add descriptive comment for TIF_MEMDIE task flag declaration.\n  EEPROM: max6875: Header file cleanup\n  EEPROM: 93cx6: Header file cleanup\n  EEPROM: Header file cleanup\n  agp: use NULL instead of 0 when pointer is needed\n  rtc-v3020: make bitfield unsigned\n  PCI: make bitfield unsigned\n  jbd2: use NULL instead of 0 when pointer is needed\n  cciss: fix shadows sparse warning\n  doc: inode uses a mutex instead of a semaphore.\n  uml: i386: Avoid redefinition of NR_syscalls\n  fix \"seperate\" typos in comments\n  cocbalt_lcdfb: correct sections\n  doc: Change urls for sparse\n  Powerpc: wii: Fix typo in comment\n  i2o: cleanup some exit paths\n  Documentation/: it\u0027s -\u003e its where appropriate\n  UML: Fix compiler warning due to missing task_struct declaration\n  UML: add kernel.h include to signal.c\n  ...\n"
    },
    {
      "commit": "3fa21e07e6acefa31f974d57fba2b6920a7ebd1a",
      "tree": "4254644ef2579e9ac96db6ec0535b5e4231fd18e",
      "parents": [
        "b60b6592baa69c43a5a0f55d6300a7feaab15338"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Mon May 17 23:08:21 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon May 17 23:23:14 2010 -0700"
      },
      "message": "net: Remove unnecessary returns from void function()s\n\nThis patch removes from net/ (but not any netfilter files)\nall the unnecessary return; statements that precede the\nlast closing brace of void functions.\n\nIt does not remove the returns that are immediately\npreceded by a label as gcc doesn\u0027t like that.\n\nDone via:\n$ grep -rP --include\u003d*.[ch] -l \"return;\\n}\" net/ | \\\n  xargs perl -i -e \u0027local $/ ; while (\u003c\u003e) { s/\\n[ \\t\\n]+return;\\n}/\\n}/g; print; }\u0027\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "d19d56ddc88e7895429ef118db9c83c7bbe3ce6a",
      "tree": "c0db76f3527c88c95a8793c871f62d628fb3fd1d",
      "parents": [
        "de213e5eedecdfb1b1eea7e6be28bc64cac5c078"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Mon May 17 22:36:55 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon May 17 22:36:55 2010 -0700"
      },
      "message": "net: Introduce skb_tunnel_rx() helper\n\nskb rxhash should be cleared when a skb is handled by a tunnel before\nbeing delivered again, so that correct packet steering can take place.\n\nThere are other cleanups and accounting that we can factorize in a new\nhelper, skb_tunnel_rx()\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "de213e5eedecdfb1b1eea7e6be28bc64cac5c078",
      "tree": "dee5fa7e4874332b65c95dc2e9ee463a5652c519",
      "parents": [
        "eedf042a63ffef050ebc015de19b52dc065e830b"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Mon May 17 22:35:36 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon May 17 22:35:36 2010 -0700"
      },
      "message": "tcp: tcp_synack_options() fix \n\nCommit 33ad798c924b4a (tcp: options clean up) introduced a problem\nif MD5+SACK+timestamps were used in initial SYN message.\n\nSome stacks (old linux for example) try to negotiate MD5+SACK+TSTAMP\nsessions, but since 40 bytes of tcp options space are not enough to\nstore all the bits needed, we chose to disable timestamps in this case.\n\nWe send a SYN-ACK _without_ timestamp option, but socket has timestamps\nenabled and all further outgoing messages contain a TS block, all with\nthe initial timestamp of the remote peer.\n\nFix is to really disable timestamps option for the whole session.\n\nReported-by: Bijay Singh \u003cBijay.Singh@guavus.com\u003e\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "ccbd6a5a4f76e821ed36f69fdaf59817c3a7f18e",
      "tree": "9fd681809e588913cc312f63ae0e701f18599afc",
      "parents": [
        "935e2a26b85003c0bd52b6c92712c2f77a5f9d33"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Fri May 14 10:58:26 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon May 17 17:44:35 2010 -0700"
      },
      "message": "net: Remove unnecessary semicolons after switch statements\n\nAlso added an explicit break; to avoid\na fallthrough in net/ipv4/tcp_input.c\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "ab6e3feba1f1bc3b9418b854da6f481408d243de",
      "tree": "18977292fa858067f7cc4d7a7df8a69dd5562a3d",
      "parents": [
        "4a94445c9a5cf5461fb41d80040033b9a8e2a85a"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Mon May 10 11:31:49 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon May 17 17:18:52 2010 -0700"
      },
      "message": "net: No dst refcounting in ip_queue_xmit()\n\nTCP outgoing packets can avoid two atomic ops, and dirtying\nof previously higly contended cache line using new refdst\ninfrastructure.\n\nNote 1: loopback device excluded because of !IFF_XMIT_DST_RELEASE\nNote 2: UDP packets dsts are built before ip_queue_xmit().\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "4a94445c9a5cf5461fb41d80040033b9a8e2a85a",
      "tree": "7891df11e4df4dd2c5149ef4fdc7d1301e7fca36",
      "parents": [
        "407eadd996dc62a827db85f1d0c286a98fd5d336"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Mon May 10 11:33:06 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon May 17 17:18:51 2010 -0700"
      },
      "message": "net: Use ip_route_input_noref() in input path\n\nUse ip_route_input_noref() in ip fast path, to avoid two atomic ops per\nincoming packet.\n\nNote: loopback is excluded from this optimization in ip_rcv_finish()\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "407eadd996dc62a827db85f1d0c286a98fd5d336",
      "tree": "199b695cd045650b939aab61cbb55c31d9165b4e",
      "parents": [
        "7fee226ad2397b635e2fd565a59ca3ae08a164cd"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Mon May 10 11:32:55 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon May 17 17:18:51 2010 -0700"
      },
      "message": "net: implements ip_route_input_noref()\n\nip_route_input() is the version returning a refcounted dst, while\nip_route_input_noref() returns a non refcounted one.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "7fee226ad2397b635e2fd565a59ca3ae08a164cd",
      "tree": "0bcd26150ad74ec1a237109de87a3d214a07fc22",
      "parents": [
        "ebda37c27d0c768947e9b058332d7ea798210cf8"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Tue May 11 23:19:48 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon May 17 17:18:50 2010 -0700"
      },
      "message": "net: add a noref bit on skb dst\n\nUse low order bit of skb-\u003e_skb_dst to tell dst is not refcounted.\n\nChange _skb_dst to _skb_refdst to make sure all uses are catched.\n\nskb_dst() returns the dst, regardless of noref bit set or not, but\nwith a lockdep check to make sure a noref dst is not given if current\nuser is not rcu protected.\n\nNew skb_dst_set_noref() helper to set an notrefcounted dst on a skb.\n(with lockdep check)\n\nskb_dst_drop() drops a reference only if skb dst was refcounted.\n\nskb_dst_force() helper is used to force a refcount on dst, when skb\nis queued and not anymore RCU protected.\n\nUse skb_dst_force() in __sk_add_backlog(), __dev_xmit_skb() if\n!IFF_XMIT_DST_RELEASE or skb enqueued on qdisc queue, in\nsock_queue_rcv_skb(), in __nf_queue().\n\nUse skb_dst_force() in dev_requeue_skb().\n\nNote: dst_use_noref() still dirties dst, we might transform it\nlater to do one dirtying per jiffies.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "6811d58fc148c393f80a9f5a9db49d7e75cdc546",
      "tree": "c25d5b0e49ec848943d35f819e748d157ccb492e",
      "parents": [
        "c4949f074332a64baeb2ead6ab9319ca37642f96",
        "c02db8c6290bb992442fec1407643c94cc414375"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun May 16 22:26:58 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun May 16 22:26:58 2010 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6\n\nConflicts:\n\tinclude/linux/if_link.h\n"
    },
    {
      "commit": "a465419b1febb603821f924805529cff89cafeed",
      "tree": "5131fa2dbf624ebeb6cf61bf4dc1bc9464fe0bbd",
      "parents": [
        "3b098e2d7c693796cc4dffb07caa249fc0f70771"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Sun May 16 00:36:33 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun May 16 00:36:33 2010 -0700"
      },
      "message": "net: Introduce sk_route_nocaps\n\nTCP-MD5 sessions have intermittent failures, when route cache is\ninvalidated. ip_queue_xmit() has to find a new route, calls\nsk_setup_caps(sk, \u0026rt-\u003eu.dst), destroying the \n\nsk-\u003esk_route_caps \u0026\u003d ~NETIF_F_GSO_MASK\n\nthat MD5 desperately try to make all over its way (from\ntcp_transmit_skb() for example)\n\nSo we send few bad packets, and everything is fine when\ntcp_transmit_skb() is called again for this socket.\n\nSince ip_queue_xmit() is at a lower level than TCP-MD5, I chose to use a\nsocket field, sk_route_nocaps, containing bits to mask on sk_route_caps.\n\nReported-by: Bhaskar Dutta \u003cbhaskie@gmail.com\u003e\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "35790c0421121364883a167bab8a2e37e1f67f78",
      "tree": "a3e032a9ba6bb77337176bef407d7408d6a10a4d",
      "parents": [
        "d77f873fdd21912803836da78f627d2efd267082"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Sun May 16 00:34:04 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun May 16 00:34:04 2010 -0700"
      },
      "message": "tcp: fix MD5 (RFC2385) support\n\nTCP MD5 support uses percpu data for temporary storage. It currently\ndisables preemption so that same storage cannot be reclaimed by another\nthread on same cpu.\n\nWe also have to make sure a softirq handler wont try to use also same\ncontext. Various bug reports demonstrated corruptions.\n\nFix is to disable preemption and BH.\n\nReported-by: Bhaskar Dutta \u003cbhaskie@gmail.com\u003e\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "e3826f1e946e7d2354943232f1457be1455a29e2",
      "tree": "a34055c7de762410b6a10c21ab5e1999fb38803b",
      "parents": [
        "9f977fb7ae9ddf565b4800854212fb9a1ed6c2ea"
      ],
      "author": {
        "name": "Amerigo Wang",
        "email": "amwang@redhat.com",
        "time": "Wed May 05 00:27:06 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat May 15 23:28:40 2010 -0700"
      },
      "message": "net: reserve ports for applications using fixed port numbers\n\n(Dropped the infiniband part, because Tetsuo modified the related code,\nI will send a separate patch for it once this is accepted.)\n\nThis patch introduces /proc/sys/net/ipv4/ip_local_reserved_ports which\nallows users to reserve ports for third-party applications.\n\nThe reserved ports will not be used by automatic port assignments\n(e.g. when calling connect() or bind() with port number 0). Explicit\nport allocation behavior is unchanged.\n\nSigned-off-by: Octavian Purdila \u003copurdila@ixiacom.com\u003e\nSigned-off-by: WANG Cong \u003camwang@redhat.com\u003e\nCc: Neil Horman \u003cnhorman@tuxdriver.com\u003e\nCc: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nCc: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "e7874c996b8591f59d78efa519031dab5b58723b",
      "tree": "14aa8dea0c33de9d22ef8177fb242c9d80d693de",
      "parents": [
        "4a6346d4ea63b5e1390babf22f1cc0f113d8082b",
        "736d58e3a2245ac2779fe0f278f8735bcf33ca8d"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu May 13 14:14:10 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu May 13 14:14:10 2010 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/kaber/nf-next-2.6\n"
    },
    {
      "commit": "736d58e3a2245ac2779fe0f278f8735bcf33ca8d",
      "tree": "7a0faa6b12ea56ae66dae40f8649649115247234",
      "parents": [
        "654d0fbdc8fe1041918741ed5b6abc8ad6b4c1d8"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Thu May 13 15:16:27 2010 +0200"
      },
      "committer": {
        "name": "Patrick McHardy",
        "email": "kaber@trash.net",
        "time": "Thu May 13 15:16:27 2010 +0200"
      },
      "message": "netfilter: remove unnecessary returns from void function()s\n\nThis patch removes from net/ netfilter files\nall the unnecessary return; statements that precede the\nlast closing brace of void functions.\n\nIt does not remove the returns that are immediately\npreceded by a label as gcc doesn\u0027t like that.\n\nDone via:\n$ grep -rP --include\u003d*.[ch] -l \"return;\\n}\" net/ | \\\n  xargs perl -i -e \u0027local $/ ; while (\u003c\u003e) { s/\\n[ \\t\\n]+return;\\n}/\\n}/g; print; }\u0027\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\n[Patrick: changed to keep return statements in otherwise empty function bodies]\nSigned-off-by: Patrick McHardy \u003ckaber@trash.net\u003e\n"
    },
    {
      "commit": "654d0fbdc8fe1041918741ed5b6abc8ad6b4c1d8",
      "tree": "6888917854682b983b17aecd82b5d8d7039175a9",
      "parents": [
        "af5676039a9479e6ff42c6aab9fac1149ac9597f"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Thu May 13 15:02:08 2010 +0200"
      },
      "committer": {
        "name": "Patrick McHardy",
        "email": "kaber@trash.net",
        "time": "Thu May 13 15:02:08 2010 +0200"
      },
      "message": "netfilter: cleanup printk messages\n\nMake sure all printk messages have a severity level.\n\nSigned-off-by: Stephen Hemminger \u003cshemminger@vyatta.com\u003e\nSigned-off-by: Patrick McHardy \u003ckaber@trash.net\u003e\n"
    },
    {
      "commit": "af5676039a9479e6ff42c6aab9fac1149ac9597f",
      "tree": "23286e7ee0f2fd28ba267e7488367ee84fd83322",
      "parents": [
        "e94c67436efa22af7d8b7d19c885863246042543"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Thu May 13 15:00:20 2010 +0200"
      },
      "committer": {
        "name": "Patrick McHardy",
        "email": "kaber@trash.net",
        "time": "Thu May 13 15:00:20 2010 +0200"
      },
      "message": "netfilter: change NF_ASSERT to WARN_ON\n\nChange netfilter asserts to standard WARN_ON. This has the\nbenefit of backtrace info and also causes netfilter errors\nto show up on kerneloops.org.\n\nSigned-off-by: Stephen Hemminger \u003cshemminger@vyatta.com\u003e\nSigned-off-by: Patrick McHardy \u003ckaber@trash.net\u003e\n"
    },
    {
      "commit": "278554bd6579206921f5d8a523649a7a57f8850d",
      "tree": "4e6c527daf0910e455b3aa72e2c96b0479e430be",
      "parents": [
        "5a147e8bf982f9dd414c1dd751fe02c1942506b2",
        "cea0d767c29669bf89f86e4aee46ef462d2ebae8"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed May 12 00:05:35 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed May 12 00:05:35 2010 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6\n\nConflicts:\n\tDocumentation/feature-removal-schedule.txt\n\tdrivers/net/wireless/ath/ar9170/usb.c\n\tdrivers/scsi/iscsi_tcp.c\n\tnet/ipv4/ipmr.c\n"
    }
  ],
  "next": "cba7a98a474a4f2a9316473734ba76829191a78a"
}
