)]}'
{
  "log": [
    {
      "commit": "5b7c84066733c5dfb0e4016d939757b38de189e4",
      "tree": "fe7edf2d6327abfc1c4abdab5121e73cce52b693",
      "parents": [
        "10ccff62bd3de7a64cf98f4c37ec0414b8affd4f"
      ],
      "author": {
        "name": "David Stevens",
        "email": "dlstevens@us.ibm.com",
        "time": "Thu Sep 30 14:29:40 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Oct 03 21:58:47 2010 -0700"
      },
      "message": "ipv4: correct IGMP behavior on v3 query during v2-compatibility mode\n\nA recent patch to allow IGMPv2 responses to IGMPv3 queries\nbypasses length checks for valid query lengths, incorrectly\nresets the v2_seen timer, and does not support IGMPv1.\n\nThe following patch responds with a v2 report as required\nby IGMPv2 while correcting the other problems introduced\nby the patch.\n\nSigned-Off-By: David L Stevens \u003cdlstevens@us.ibm.com\u003e\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "c5d3557103f8bef81d7a150ab9cc970099cd58a2",
      "tree": "2806f87647db3cf9e37598f4bbe8386abd7300ec",
      "parents": [
        "482964e56e1320cb7952faa1932d8ecf59c4bf75"
      ],
      "author": {
        "name": "Ben Hutchings",
        "email": "ben@decadent.org.uk",
        "time": "Sun Oct 03 15:37:42 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Oct 03 21:46:23 2010 -0700"
      },
      "message": "Revert \"ipv4: Make INET_LRO a bool instead of tristate.\"\n\nThis reverts commit e81963b180ac502fda0326edf059b1e29cdef1a2.\n\nLRO is now deprecated in favour of GRO, and only a few drivers use it,\nso it is desirable to build it as a module in distribution kernels.\n\nThe original change to prevent building it as a module was made in an\nattempt to avoid the case where some dependents are set to y and some\nto m, and INET_LRO can be set to m rather than y.  However, the\nKconfig system will reliably set INET_LRO\u003dy in this case.\n\nSigned-off-by: Ben Hutchings \u003cben@decadent.org.uk\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "68c1f3a96c32a4fe15ebadae45c8145a5e5a66d2",
      "tree": "eaad407fb9f2c6381f3457585d394d587eeeb301",
      "parents": [
        "4d22f7d372f5769c6c0149e427ed6353e2dcfe61"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Sep 28 22:37:56 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Sep 28 22:37:56 2010 -0700"
      },
      "message": "ip_gre: Fix dependencies wrt. ipv6.\n\nThe GRE tunnel driver needs to invoke icmpv6 helpers in the\nipv6 stack when ipv6 support is enabled.\n\nTherefore if IPV6 is enabled, we have to enforce that GRE\u0027s\nenabling (modular or static) matches that of ipv6.\n\nReported-by: Patrick McHardy \u003ckaber@trash.net\u003e\nReported-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "4d22f7d372f5769c6c0149e427ed6353e2dcfe61",
      "tree": "7f4ff499d171f4d9b78975300aedd6c9d527073f",
      "parents": [
        "01db403cf99f739f86903314a489fb420e0e254f"
      ],
      "author": {
        "name": "Damian Lukowski",
        "email": "damian@tvk.rwth-aachen.de",
        "time": "Tue Sep 28 13:08:32 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Sep 28 13:08:32 2010 -0700"
      },
      "message": "net-2.6: SYN retransmits: Add new parameter to retransmits_timed_out()\n\nFixes kernel Bugzilla Bug 18952\n\nThis patch adds a syn_set parameter to the retransmits_timed_out()\nroutine and updates its callers. If not set, TCP_RTO_MIN is taken\nas the calculation basis as before. If set, TCP_TIMEOUT_INIT is\nused instead, so that sysctl_syn_retries represents the actual\namount of SYN retransmissions in case no SYNACKs are received when\nestablishing a new connection.\n\nSigned-off-by: Damian Lukowski \u003cdamian@tvk.rwth-aachen.de\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "01db403cf99f739f86903314a489fb420e0e254f",
      "tree": "bf04fbfb3ed88d6cf7abeea1ab5209be36907882",
      "parents": [
        "0b20406cda621c2495d10baab1e87127ceb43337"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Sep 27 20:24:54 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Sep 27 20:24:54 2010 -0700"
      },
      "message": "tcp: Fix \u003e4GB writes on 64-bit.\n\nFixes kernel bugzilla #16603\n\ntcp_sendmsg() truncates iov_len to an \u0027int\u0027 which a 4GB write to write\nzero bytes, for example.\n\nThere is also the problem higher up of how verify_iovec() works.  It\nwants to prevent the total length from looking like an error return\nvalue.\n\nHowever it does this using \u0027int\u0027, but syscalls return \u0027long\u0027 (and\nthus signed 64-bit on 64-bit machines).  So it could trigger\nfalse-positives on 64-bit as written.  So fix it to use \u0027long\u0027.\n\nReported-by: Olaf Bonorden \u003cbono@onlinehome.de\u003e\nReported-by: Daniel Büse \u003cdbuese@gmx.de\u003e\nReported-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "7e1b33e5ea392dfc984fc63b76ca75acbf249dcd",
      "tree": "00fbab440aabca3123b999da42901a7261203c11",
      "parents": [
        "b3de7559afbb7a8a35b4be975a6adf6c5e3cdca0"
      ],
      "author": {
        "name": "Ulrich Weber",
        "email": "uweber@astaro.com",
        "time": "Mon Sep 27 15:02:18 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Sep 27 15:02:18 2010 -0700"
      },
      "message": "ipv6: add IPv6 to neighbour table overflow warning\n\nIPv4 and IPv6 have separate neighbour tables, so\nthe warning messages should be distinguishable.\n\n[ Add a suitable message prefix on the ipv4 side as well -DaveM ]\n\nSigned-off-by: Ulrich Weber \u003cuweber@astaro.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "b3de7559afbb7a8a35b4be975a6adf6c5e3cdca0",
      "tree": "b387ee28cbb0c577943e87ddc7d87c3d7c65b99c",
      "parents": [
        "3fd6c88ef875a14740801ebfc6b6e4e064a1cdd4"
      ],
      "author": {
        "name": "Yuchung Cheng",
        "email": "ycheng@google.com",
        "time": "Fri Sep 24 13:22:06 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Sep 27 14:55:57 2010 -0700"
      },
      "message": "tcp: fix TSO FACK loss marking in tcp_mark_head_lost\n\nWhen TCP uses FACK algorithm to mark lost packets in\ntcp_mark_head_lost(), if the number of packets in the (TSO) skb is\ngreater than the number of packets that should be marked lost, TCP\nincorrectly exits the loop and marks no packets lost in the skb. This\nunderestimates tp-\u003elost_out and affects the recovery/retransmission.\nThis patch fargments the skb and marks the correct amount of packets\nlost.\n\nSigned-off-by: Yuchung Cheng \u003cycheng@google.com\u003e\nAcked-by: Ilpo Järvinen \u003cilpo.jarvinen@helsinki.fi\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "94e2238969e89f5112297ad2a00103089dde7e8f",
      "tree": "95a65a101132a512b70918cdecfd74d209a47862",
      "parents": [
        "3f5a2a713aad28480d86b0add00c68484b54febc"
      ],
      "author": {
        "name": "Ulrich Weber",
        "email": "uweber@astaro.com",
        "time": "Wed Sep 22 06:45:11 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Sep 22 20:25:48 2010 -0700"
      },
      "message": "xfrm4: strip ECN bits from tos field\n\notherwise ECT(1) bit will get interpreted as RTO_ONLINK\nand routing will fail with XfrmOutBundleGenError.\n\nSigned-off-by: Ulrich Weber \u003cuweber@astaro.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "cbdd769ab9de26764bde0520a91536caa1587e13",
      "tree": "7a15d114613de0e8e374151628102a76562ebbbd",
      "parents": [
        "d6120b8afacec587f5feb37781bc751bc5d68a10"
      ],
      "author": {
        "name": "Jiri Olsa",
        "email": "jolsa@redhat.com",
        "time": "Tue Sep 21 21:17:34 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Sep 22 13:13:34 2010 -0700"
      },
      "message": "netfilter: nf_conntrack_defrag: check socket type before touching nodefrag flag\n\nwe need to check proper socket type within ipv4_conntrack_defrag\nfunction before referencing the nodefrag flag.\n\nFor example the tun driver receive path produces skbs with\nAF_UNSPEC socket type, and so current code is causing unwanted\nfragmented packets going out.\n\nSigned-off-by: Jiri Olsa \u003cjolsa@redhat.com\u003e\nSigned-off-by: Patrick McHardy \u003ckaber@trash.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "d6120b8afacec587f5feb37781bc751bc5d68a10",
      "tree": "c4477c43bfb8cb87f65d3119fa59d8335deeb825",
      "parents": [
        "15cdeadaa5d76009e20c7792aed69f5a73808f97"
      ],
      "author": {
        "name": "Patrick McHardy",
        "email": "kaber@trash.net",
        "time": "Tue Sep 21 21:17:33 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Sep 22 13:13:33 2010 -0700"
      },
      "message": "netfilter: nf_nat_snmp: fix checksum calculation (v4)\n\nFix checksum calculation in nf_nat_snmp_basic.\n\nBased on patches by Clark Wang \u003cwtweeker@163.com\u003e and\nStephen Hemminger \u003cshemminger@vyatta.com\u003e.\n\nhttps://bugzilla.kernel.org/show_bug.cgi?id\u003d17622\n\nSigned-off-by: Patrick McHardy \u003ckaber@trash.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "b46ffb854554ff939701bdd492b81558da5706fc",
      "tree": "e81a9a159751267b62f6218a0c1334622bd04dd0",
      "parents": [
        "7874896a26624214bd7c05eeba7c8ab01548b1b5"
      ],
      "author": {
        "name": "Changli Gao",
        "email": "xiaosuo@gmail.com",
        "time": "Tue Sep 21 21:17:31 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Sep 22 13:13:32 2010 -0700"
      },
      "message": "netfilter: fix ipt_REJECT TCP RST routing for indev \u003d\u003d outdev\n\nip_route_me_harder can\u0027t create the route cache when the outdev is the same\nwith the indev for the skbs whichout a valid protocol set.\n\n__mkroute_input functions has this check:\n1998         if (skb-\u003eprotocol !\u003d htons(ETH_P_IP)) {\n1999                 /* Not IP (i.e. ARP). Do not create route, if it is\n2000                  * invalid for proxy arp. DNAT routes are always valid.\n2001                  *\n2002                  * Proxy arp feature have been extended to allow, ARP\n2003                  * replies back to the same interface, to support\n2004                  * Private VLAN switch technologies. See arp.c.\n2005                  */\n2006                 if (out_dev \u003d\u003d in_dev \u0026\u0026\n2007                     IN_DEV_PROXY_ARP_PVLAN(in_dev) \u003d\u003d 0) {\n2008                         err \u003d -EINVAL;\n2009                         goto cleanup;\n2010                 }\n2011         }\n\nThis patch gives the new skb a valid protocol to bypass this check. In order\nto make ipt_REJECT work with bridges, you also need to enable ip_forward.\n\nThis patch also fixes a regression. When we used skb_copy_expand(), we\ndidn\u0027t have this issue stated above, as the protocol was properly set.\n\nSigned-off-by: Changli Gao \u003cxiaosuo@gmail.com\u003e\nSigned-off-by: Patrick McHardy \u003ckaber@trash.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "3d13008e7345fa7a79d8f6438150dc15d6ba6e9d",
      "tree": "a36caa5636e4030419ca8907642e75c0cd565143",
      "parents": [
        "7e96dc7045bff8758804b047c0dfb6868f182500"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Tue Sep 21 08:47:45 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Sep 21 15:05:50 2010 -0700"
      },
      "message": "ip: fix truesize mismatch in ip fragmentation\n\nSpecial care should be taken when slow path is hit in ip_fragment() :\n\nWhen walking through frags, we transfert truesize ownership from skb to\nfrags. Then if we hit a slow_path condition, we must undo this or risk\nuncharging frags-\u003etruesize twice, and in the end, having negative socket\nsk_wmem_alloc counter, or even freeing socket sooner than expected.\n\nMany thanks to Nick Bowler, who provided a very clean bug report and\ntest program.\n\nThanks to Jarek for reviewing my first patch and providing a V2\n\nWhile Nick bisection pointed to commit 2b85a34e911 (net: No more\nexpensive sock_hold()/sock_put() on each tx), underlying bug is older\n(2.6.12-rc5)\n\nA side effect is to extend work done in commit b2722b1c3a893e\n(ip_fragment: also adjust skb-\u003etruesize for packets not owned by a\nsocket) to ipv6 as well.\n\nReported-and-bisected-by: Nick Bowler \u003cnbowler@elliptictech.com\u003e\nTested-by: Nick Bowler \u003cnbowler@elliptictech.com\u003e\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nCC: Jarek Poplawski \u003cjarkao2@gmail.com\u003e\nCC: Patrick McHardy \u003ckaber@trash.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "a4d258036ed9b2a1811c3670c6099203a0f284a0",
      "tree": "58412022664aef745a99d254d20cf1a66aabda44",
      "parents": [
        "9828e6e6e3f19efcb476c567b9999891d051f52f"
      ],
      "author": {
        "name": "Tom Marshall",
        "email": "tdm.code@gmail.com",
        "time": "Mon Sep 20 15:42:05 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Sep 20 15:42:05 2010 -0700"
      },
      "message": "tcp: Fix race in tcp_poll\n\nIf a RST comes in immediately after checking sk-\u003esk_err, tcp_poll will\nreturn POLLIN but not POLLOUT.  Fix this by checking sk-\u003esk_err at the end\nof tcp_poll.  Additionally, ensure the correct order of operations on SMP\nmachines with memory barriers.\n\nSigned-off-by: Tom Marshall \u003ctdm.code@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": "8444cf712c5f71845cba9dc30d8f530ff0d5ff83",
      "tree": "3283983551829eb3f985a92d49ec65ac8e487268",
      "parents": [
        "842c74bffcdb1d305ccd9e61e417cceae86b9963"
      ],
      "author": {
        "name": "Thomas Egerer",
        "email": "thomas.egerer@secunet.com",
        "time": "Mon Sep 20 11:11:38 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Sep 20 11:11:38 2010 -0700"
      },
      "message": "xfrm: Allow different selector family in temporary state\n\nThe family parameter xfrm_state_find is used to find a state matching a\ncertain policy. This value is set to the template\u0027s family\n(encap_family) right before xfrm_state_find is called.\nThe family parameter is however also used to construct a temporary state\nin xfrm_state_find itself which is wrong for inter-family scenarios\nbecause it produces a selector for the wrong family. Since this selector\nis included in the xfrm_user_acquire structure, user space programs\nmisinterpret IPv6 addresses as IPv4 and vice versa.\nThis patch splits up the original init_tempsel function into a part that\ninitializes the selector respectively the props and id of the temporary\nstate, to allow for differing ip address families whithin the state.\n\nSigned-off-by: Thomas Egerer \u003cthomas.egerer@secunet.com\u003e\nSigned-off-by: Steffen Klassert \u003csteffen.klassert@secunet.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "842c74bffcdb1d305ccd9e61e417cceae86b9963",
      "tree": "e1f53ccfcfae9c3e37de17e1878907c1b7a21051",
      "parents": [
        "04746ff1289f75af26af279eb4b0b3e231677ee4"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Mon Sep 20 10:06:12 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Sep 20 10:06:12 2010 -0700"
      },
      "message": "ip_gre: CONFIG_IPV6_MODULE support\n\nipv6 can be a module, we should test CONFIG_IPV6 and CONFIG_IPV6_MODULE\nto enable ipv6 bits in ip_gre.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "a89b47639f3e11dd9a8eb78a5d3382e109c876f2",
      "tree": "03e4d137f022ae1b2ec90fb4899215c4b2e1b1f3",
      "parents": [
        "7998156344b0d93de61ff8e5d75e96500e43a571"
      ],
      "author": {
        "name": "Michael Kerrisk",
        "email": "mtk.manpages@gmail.com",
        "time": "Fri Sep 10 20:26:56 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Sep 13 19:57:23 2010 -0700"
      },
      "message": "ipv4: enable getsockopt() for IP_NODEFRAG\n\nWhile integrating your man-pages patch for IP_NODEFRAG, I noticed\nthat this option is settable by setsockopt(), but not gettable by\ngetsockopt(). I suppose this is not intended. The (untested,\ntrivial) patch below adds getsockopt() support.\n\nSigned-off-by: Michael kerrisk \u003cmtk.manpages@gmail.com\u003e\nAcked-by: Jiri Olsa \u003cjolsa@redhat.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "7998156344b0d93de61ff8e5d75e96500e43a571",
      "tree": "ac9d61004b6332c745f20cae58ea130868981701",
      "parents": [
        "3429769bc67c7a48b3c01b2452b32171b3450202"
      ],
      "author": {
        "name": "Bob Arendt",
        "email": "rda@rincon.com",
        "time": "Mon Sep 13 12:56:03 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Sep 13 12:56:51 2010 -0700"
      },
      "message": "ipv4: force_igmp_version ignored when a IGMPv3 query received\n\nAfter all these years, it turns out that the\n    /proc/sys/net/ipv4/conf/*/force_igmp_version\nparameter isn\u0027t fully implemented.\n\n*Symptom*:\nWhen set force_igmp_version to a value of 2, the kernel should only perform\nmulticast IGMPv2 operations (IETF rfc2236).  An host-initiated Join message\nwill be sent as a IGMPv2 Join message.  But if a IGMPv3 query message is\nreceived, the host responds with a IGMPv3 join message.  Per rfc3376 and\nrfc2236, a IGMPv2 host should treat a IGMPv3 query as a IGMPv2 query and\nrespond with an IGMPv2 Join message.\n\n*Consequences*:\nThis is an issue when a IGMPv3 capable switch is the querier and will only\nissue IGMPv3 queries (which double as IGMPv2 querys) and there\u0027s an\nintermediate switch that is only IGMPv2 capable.  The intermediate switch\nprocesses the initial v2 Join, but fails to recognize the IGMPv3 Join responses\nto the Query, resulting in a dropped connection when the intermediate v2-only\nswitch times it out.\n\n*Identifying issue in the kernel source*:\nThe issue is in this section of code (in net/ipv4/igmp.c), which is called when\nan IGMP query is received  (from mainline 2.6.36-rc3 gitweb):\n ...\nA IGMPv3 query has a length \u003e\u003d 12 and no sources.  This routine will exit after\nline 880, setting the general query timer (random timeout between 0 and query\nresponse time).  This calls igmp_gq_timer_expire():\n...\n.. which only sends a v3 response.  So if a v3 query is received, the kernel\nalways sends a v3 response.\n\nIGMP queries happen once every 60 sec (per vlan), so the traffic is low.  A\nIGMPv3 query *is* a strict superset of a IGMPv2 query, so this patch properly\nshort circuit\u0027s the v3 behaviour.\n\nOne issue is that this does not address force_igmp_version\u003d1.  Then again, I\u0027ve\nnever seen any IGMPv1 multicast equipment in the wild.  However there is a lot\nof v2-only equipment. If it\u0027s necessary to support the IGMPv1 case as well:\n\n837         if (len \u003d\u003d 8 || IGMP_V2_SEEN(in_dev) || IGMP_V1_SEEN(in_dev)) {\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "719f835853a92f6090258114a72ffe41f09155cd",
      "tree": "a077b05397bf07a096be7f07b50375c5ed918ac2",
      "parents": [
        "ae2688d59b5f861dc70a091d003773975d2ae7fb"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Wed Sep 08 05:08:44 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Sep 08 21:45:01 2010 -0700"
      },
      "message": "udp: add rehash on connect()\n\ncommit 30fff923 introduced in linux-2.6.33 (udp: bind() optimisation)\nadded a secondary hash on UDP, hashed on (local addr, local port).\n\nProblem is that following sequence :\n\nfd \u003d socket(...)\nconnect(fd, \u0026remote, ...)\n\nnot only selects remote end point (address and port), but also sets\nlocal address, while UDP stack stored in secondary hash table the socket\nwhile its local address was INADDR_ANY (or ipv6 equivalent)\n\nSequence is :\n - autobind() : choose a random local port, insert socket in hash tables\n              [while local address is INADDR_ANY]\n - connect() : set remote address and port, change local address to IP\n              given by a route lookup.\n\nWhen an incoming UDP frame comes, if more than 10 sockets are found in\nprimary hash table, we switch to secondary table, and fail to find\nsocket because its local address changed.\n\nOne solution to this problem is to rehash datagram socket if needed.\n\nWe add a new rehash(struct socket *) method in \"struct proto\", and\nimplement this method for UDP v4 \u0026 v6, using a common helper.\n\nThis rehashing only takes care of secondary hash table, since primary\nhash (based on local port only) is not changed.\n\nReported-by: Krzysztof Piotr Oledzki \u003cole@ans.pl\u003e\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nTested-by: Krzysztof Piotr Oledzki \u003cole@ans.pl\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "ae2688d59b5f861dc70a091d003773975d2ae7fb",
      "tree": "ae674d926ba2069bc712cc1bb25b1c87ea7cc241",
      "parents": [
        "f6b085b69d1cbbd62f49f34e71a3d58cb6d34b7e"
      ],
      "author": {
        "name": "Jianzhao Wang",
        "email": "jianzhao.wang@6wind.com",
        "time": "Wed Sep 08 14:35:43 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Sep 08 14:35:43 2010 -0700"
      },
      "message": "net: blackhole route should always be recalculated\n\nBlackhole routes are used when xfrm_lookup() returns -EREMOTE (error\ntriggered by IKE for example), hence this kind of route is always\ntemporary and so we should check if a better route exists for next\npackets.\nBug has been introduced by commit d11a4dc18bf41719c9f0d7ed494d295dd2973b92.\n\nSigned-off-by: Jianzhao Wang \u003cjianzhao.wang@6wind.com\u003e\nSigned-off-by: Nicolas Dichtel \u003cnicolas.dichtel@6wind.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "f6b085b69d1cbbd62f49f34e71a3d58cb6d34b7e",
      "tree": "13d067c1be55a7d87b66ce5920890fcf1f72bcf1",
      "parents": [
        "ee9c5cfad29c8a13199962614b9b16f1c4137ac9"
      ],
      "author": {
        "name": "Jarek Poplawski",
        "email": "jarkao2@gmail.com",
        "time": "Tue Sep 07 07:51:17 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Sep 08 14:14:20 2010 -0700"
      },
      "message": "ipv4: Suppress lockdep-RCU false positive in FIB trie (3)\n\nHi,\nHere is one more of these warnings and a patch below:\n\nSep  5 23:52:33 del kernel: [46044.244833] \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nSep  5 23:52:33 del kernel: [46044.269681] [ INFO: suspicious rcu_dereference_check() usage. ]\nSep  5 23:52:33 del kernel: [46044.277000] ---------------------------------------------------\nSep  5 23:52:33 del kernel: [46044.285185] net/ipv4/fib_trie.c:1756 invoked rcu_dereference_check() without protection!\nSep  5 23:52:33 del kernel: [46044.293627]\nSep  5 23:52:33 del kernel: [46044.293632] other info that might help us debug this:\nSep  5 23:52:33 del kernel: [46044.293634]\nSep  5 23:52:33 del kernel: [46044.325333]\nSep  5 23:52:33 del kernel: [46044.325335] rcu_scheduler_active \u003d 1, debug_locks \u003d 0\nSep  5 23:52:33 del kernel: [46044.348013] 1 lock held by pppd/1717:\nSep  5 23:52:33 del kernel: [46044.357548]  #0:  (rtnl_mutex){+.+.+.}, at: [\u003cc125dc1f\u003e] rtnl_lock+0xf/0x20\nSep  5 23:52:33 del kernel: [46044.367647]\nSep  5 23:52:33 del kernel: [46044.367652] stack backtrace:\nSep  5 23:52:33 del kernel: [46044.387429] Pid: 1717, comm: pppd Not tainted 2.6.35.4.4a #3\nSep  5 23:52:33 del kernel: [46044.398764] Call Trace:\nSep  5 23:52:33 del kernel: [46044.409596]  [\u003cc12f9aba\u003e] ? printk+0x18/0x1e\nSep  5 23:52:33 del kernel: [46044.420761]  [\u003cc1053969\u003e] lockdep_rcu_dereference+0xa9/0xb0\nSep  5 23:52:33 del kernel: [46044.432229]  [\u003cc12b7235\u003e] trie_firstleaf+0x65/0x70\nSep  5 23:52:33 del kernel: [46044.443941]  [\u003cc12b74d4\u003e] fib_table_flush+0x14/0x170\nSep  5 23:52:33 del kernel: [46044.455823]  [\u003cc1033e92\u003e] ? local_bh_enable_ip+0x62/0xd0\nSep  5 23:52:33 del kernel: [46044.467995]  [\u003cc12fc39f\u003e] ? _raw_spin_unlock_bh+0x2f/0x40\nSep  5 23:52:33 del kernel: [46044.480404]  [\u003cc12b24d0\u003e] ? fib_sync_down_dev+0x120/0x180\nSep  5 23:52:33 del kernel: [46044.493025]  [\u003cc12b069d\u003e] fib_flush+0x2d/0x60\nSep  5 23:52:33 del kernel: [46044.505796]  [\u003cc12b06f5\u003e] fib_disable_ip+0x25/0x50\nSep  5 23:52:33 del kernel: [46044.518772]  [\u003cc12b10d3\u003e] fib_netdev_event+0x73/0xd0\nSep  5 23:52:33 del kernel: [46044.531918]  [\u003cc1048dfd\u003e] notifier_call_chain+0x2d/0x70\nSep  5 23:52:33 del kernel: [46044.545358]  [\u003cc1048f0a\u003e] raw_notifier_call_chain+0x1a/0x20\nSep  5 23:52:33 del kernel: [46044.559092]  [\u003cc124f687\u003e] call_netdevice_notifiers+0x27/0x60\nSep  5 23:52:33 del kernel: [46044.573037]  [\u003cc124faec\u003e] __dev_notify_flags+0x5c/0x80\nSep  5 23:52:33 del kernel: [46044.586489]  [\u003cc124fb47\u003e] dev_change_flags+0x37/0x60\nSep  5 23:52:33 del kernel: [46044.599394]  [\u003cc12a8a8d\u003e] devinet_ioctl+0x54d/0x630\nSep  5 23:52:33 del kernel: [46044.612277]  [\u003cc12aabb7\u003e] inet_ioctl+0x97/0xc0\nSep  5 23:52:34 del kernel: [46044.625208]  [\u003cc123f6af\u003e] sock_ioctl+0x6f/0x270\nSep  5 23:52:34 del kernel: [46044.638046]  [\u003cc109d2b0\u003e] ? handle_mm_fault+0x420/0x6c0\nSep  5 23:52:34 del kernel: [46044.650968]  [\u003cc123f640\u003e] ? sock_ioctl+0x0/0x270\nSep  5 23:52:34 del kernel: [46044.663865]  [\u003cc10c3188\u003e] vfs_ioctl+0x28/0xa0\nSep  5 23:52:34 del kernel: [46044.676556]  [\u003cc10c38fa\u003e] do_vfs_ioctl+0x6a/0x5c0\nSep  5 23:52:34 del kernel: [46044.688989]  [\u003cc1048676\u003e] ? up_read+0x16/0x30\nSep  5 23:52:34 del kernel: [46044.701411]  [\u003cc1021376\u003e] ? do_page_fault+0x1d6/0x3a0\nSep  5 23:52:34 del kernel: [46044.714223]  [\u003cc10b6588\u003e] ? fget_light+0xf8/0x2f0\nSep  5 23:52:34 del kernel: [46044.726601]  [\u003cc1241f98\u003e] ? sys_socketcall+0x208/0x2c0\nSep  5 23:52:34 del kernel: [46044.739140]  [\u003cc10c3eb3\u003e] sys_ioctl+0x63/0x70\nSep  5 23:52:34 del kernel: [46044.751967]  [\u003cc12fca3d\u003e] syscall_call+0x7/0xb\nSep  5 23:52:34 del kernel: [46044.764734]  [\u003cc12f0000\u003e] ? cookie_v6_check+0x3d0/0x630\n\n--------------\u003e\n\nThis patch fixes the warning:\n \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n [ INFO: suspicious rcu_dereference_check() usage. ]\n ---------------------------------------------------\n net/ipv4/fib_trie.c:1756 invoked rcu_dereference_check() without protection!\n\n other info that might help us debug this:\n\n rcu_scheduler_active \u003d 1, debug_locks \u003d 0\n 1 lock held by pppd/1717:\n  #0:  (rtnl_mutex){+.+.+.}, at: [\u003cc125dc1f\u003e] rtnl_lock+0xf/0x20\n\n stack backtrace:\n Pid: 1717, comm: pppd Not tainted 2.6.35.4a #3\n Call Trace:\n  [\u003cc12f9aba\u003e] ? printk+0x18/0x1e\n  [\u003cc1053969\u003e] lockdep_rcu_dereference+0xa9/0xb0\n  [\u003cc12b7235\u003e] trie_firstleaf+0x65/0x70\n  [\u003cc12b74d4\u003e] fib_table_flush+0x14/0x170\n  ...\n\nAllow trie_firstleaf() to be called either under rcu_read_lock()\nprotection or with RTNL held. The same annotation is added to\nnode_parent_rcu() to prevent a similar warning a bit later.\n\nFollowup of commits 634a4b20 and 4eaa0e3c.\n\nSigned-off-by: Jarek Poplawski \u003cjarkao2@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "6f86b325189e0a53c97bf86cff0c8b02ff624934",
      "tree": "856badf9fa6205b2216eb4301a0776da70d5b28a",
      "parents": [
        "8df73ff90f00f14d2c7ff7156f7ef153f7e9d3b7"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Sep 06 22:36:19 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Sep 07 13:57:24 2010 -0700"
      },
      "message": "ipv4: Fix reverse path filtering with multipath routing.\n\nActually iterate over the next-hops to make sure we have\na device match.  Otherwise RP filtering is always elided\nwhen the route matched has multiple next-hops.\n\nReported-by: Igor M Podlesny \u003cfor.poige@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "750e9fad8c7f44e0005ffb7195f72dd76978c2cf",
      "tree": "1ac435c456d45aa70c4f4d5c2420283c077499a1",
      "parents": [
        "928497f0209027ccd649480a38a499fab9c3f6f6"
      ],
      "author": {
        "name": "Nicolas Dichtel",
        "email": "nicolas.dichtel@6wind.com",
        "time": "Tue Aug 31 05:50:43 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Sep 01 14:29:36 2010 -0700"
      },
      "message": "ipv4: minor fix about RPF in help of Kconfig\n\nSigned-off-by: Nicolas Dichtel \u003cnicolas.dichtel@6wind.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "c34186ed008229e7f7e3f1de8e6acf6374995358",
      "tree": "b8d24a6503fc847d7dd1fa55b73aa9ca45781730",
      "parents": [
        "7e368739e3b3f1d7944794c178a15f05829b56bc"
      ],
      "author": {
        "name": "Julia Lawall",
        "email": "julia@diku.dk",
        "time": "Fri Aug 27 19:31:56 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Aug 27 19:31:56 2010 -0700"
      },
      "message": "net/ipv4: Eliminate kstrdup memory leak\n\nThe string clone is only used as a temporary copy of the argument val\nwithin the while loop, and so it should be freed before leaving the\nfunction.  The call to strsep, however, modifies clone, so a pointer to the\nfront of the string is kept in saved_clone, to make it possible to free it.\n\nThe sematic match that finds this problem is as follows:\n(http://coccinelle.lip6.fr/)\n\n// \u003csmpl\u003e\n@r exists@\nlocal idexpression x;\nexpression E;\nidentifier l;\nstatement S;\n@@\n\n*x\u003d \\(kasprintf\\|kstrdup\\)(...);\n...\nif (x \u003d\u003d NULL) S\n... when !\u003d kfree(x)\n    when !\u003d E \u003d x\nif (...) {\n  \u003c... when !\u003d kfree(x)\n* goto l;\n  ...\u003e\n* return ...;\n}\n// \u003c/smpl\u003e\n\nSigned-off-by: Julia Lawall \u003cjulia@diku.dk\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "d84ba638e4ba3c40023ff997aa5e8d3ed002af36",
      "tree": "45bff01d15301cb6fc2f27d53fdfcbbf1f2355b1",
      "parents": [
        "c5ed63d66f24fd4f7089b5a6e087b0ce7202aa8e"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Tue Aug 24 16:05:48 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Aug 25 23:02:48 2010 -0700"
      },
      "message": "tcp: select(writefds) don\u0027t hang up when a peer close connection\n\nThis issue come from ruby language community. Below test program\nhang up when only run on Linux.\n\n\t% uname -mrsv\n\tLinux 2.6.26-2-486 #1 Sat Dec 26 08:37:39 UTC 2009 i686\n\t% ruby -rsocket -ve \u0027\n\tBasicSocket.do_not_reverse_lookup \u003d true\n\tserv \u003d TCPServer.open(\"127.0.0.1\", 0)\n\ts1 \u003d TCPSocket.open(\"127.0.0.1\", serv.addr[1])\n\ts2 \u003d serv.accept\n\ts2.close\n\ts1.write(\"a\") rescue p $!\n\ts1.write(\"a\") rescue p $!\n\tThread.new {\n\t  s1.write(\"a\")\n\t}.join\u0027\n\truby 1.9.3dev (2010-07-06 trunk 28554) [i686-linux]\n\t#\u003cErrno::EPIPE: Broken pipe\u003e\n\t[Hang Here]\n\nFreeBSD, Solaris, Mac doesn\u0027t. because Ruby\u0027s write() method call\nselect() internally. and tcp_poll has a bug.\n\nSUS defined \u0027ready for writing\u0027 of select() as following.\n\n|  A descriptor shall be considered ready for writing when a call to an output\n|  function with O_NONBLOCK clear would not block, whether or not the function\n|  would transfer data successfully.\n\nThat said, EPIPE situation is clearly one of \u0027ready for writing\u0027.\n\nWe don\u0027t have read-side issue because tcp_poll() already has read side\nshutdown care.\n\n|        if (sk-\u003esk_shutdown \u0026 RCV_SHUTDOWN)\n|                mask |\u003d POLLIN | POLLRDNORM | POLLRDHUP;\n\nSo, Let\u0027s insert same logic in write side.\n\n- reference url\n  http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/31065\n  http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/31068\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "c5ed63d66f24fd4f7089b5a6e087b0ce7202aa8e",
      "tree": "140df25fef28c94f9ec1e5c29b4a8d0876da2fe8",
      "parents": [
        "ad1af0fedba14f82b240a03fe20eb9b2fdbd0357"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Wed Aug 25 23:02:17 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Aug 25 23:02:17 2010 -0700"
      },
      "message": "tcp: fix three tcp sysctls tuning\n\nAs discovered by Anton Blanchard, current code to autotune \ntcp_death_row.sysctl_max_tw_buckets, sysctl_tcp_max_orphans and\nsysctl_max_syn_backlog makes little sense.\n\nThe bigger a page is, the less tcp_max_orphans is : 4096 on a 512GB\nmachine in Anton\u0027s case.\n\n(tcp_hashinfo.bhash_size * sizeof(struct inet_bind_hashbucket))\nis much bigger if spinlock debugging is on. Its wrong to select bigger\nlimits in this case (where kernel structures are also bigger)\n\nbhash_size max is 65536, and we get this value even for small machines. \n\nA better ground is to use size of ehash table, this also makes code\nshorter and more obvious.\n\nBased on a patch from Anton, and another from David.\n\nReported-and-tested-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": "ad1af0fedba14f82b240a03fe20eb9b2fdbd0357",
      "tree": "4d53aa8bc2d9df782aa792e52670ab55c7a44d5b",
      "parents": [
        "b2bc85631e72485b984bcd202a104591874babba"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Aug 25 02:27:49 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Aug 25 02:27:49 2010 -0700"
      },
      "message": "tcp: Combat per-cpu skew in orphan tests.\n\nAs reported by Anton Blanchard when we use\npercpu_counter_read_positive() to make our orphan socket limit checks,\nthe check can be off by up to num_cpus_online() * batch (which is 32\nby default) which on a 128 cpu machine can be as large as the default\norphan limit itself.\n\nFix this by doing the full expensive sum check if the optimized check\ntriggers.\n\nReported-by: Anton Blanchard \u003canton@samba.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\nAcked-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\n"
    },
    {
      "commit": "cca77b7c81876d819a5806f408b3c29b5b61a815",
      "tree": "722c5777a1a96d1d0228c58a6fcbd09c45c8ae56",
      "parents": [
        "6a6d01d374d03bd2f90030200cb78567444addc4"
      ],
      "author": {
        "name": "Florian Westphal",
        "email": "fw@strlen.de",
        "time": "Mon Aug 23 14:41:22 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Aug 23 14:41:22 2010 -0700"
      },
      "message": "netfilter: fix CONFIG_COMPAT support\n\ncommit f3c5c1bfd430858d3a05436f82c51e53104feb6b\n(netfilter: xtables: make ip_tables reentrant) forgot to\nalso compute the jumpstack size in the compat handlers.\n\nResult is that \"iptables -I INPUT -j userchain\" turns into -j DROP.\n\nReported by Sebastian Roesner on #netfilter, closes\nhttp://bugzilla.netfilter.org/show_bug.cgi?id\u003d669.\n\nNote: arptables change is compile-tested only.\n\nSigned-off-by: Florian Westphal \u003cfw@strlen.de\u003e\nAcked-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nTested-by: Mikael Pettersson \u003cmikpe@it.uu.se\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "001389b9581c13fe5fc357a0f89234f85af4215d",
      "tree": "fdf6e017a99229c90d3075b35d7f62edee924c8e",
      "parents": [
        "5ca6f7c85159a5ca7e637b1d9f79f0d9bc56e5dc"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Mon Aug 16 10:22:10 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Aug 17 15:12:14 2010 -0700"
      },
      "message": "netfilter: {ip,ip6,arp}_tables: avoid lockdep false positive\n\nAfter commit 24b36f019 (netfilter: {ip,ip6,arp}_tables: dont block\nbottom half more than necessary), lockdep can raise a warning\nbecause we attempt to lock a spinlock with BH enabled, while\nthe same lock is usually locked by another cpu in a softirq context.\n\nDisable again BH to avoid these lockdep warnings.\n\nReported-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nDiagnosed-by: David S. Miller \u003cdavem@davemloft.net\u003e\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "ba78e2ddca844598c0efcbf2c76d73519a61b902",
      "tree": "2f775c059ab21f4c97d0aaa6ee18b79026f6ba40",
      "parents": [
        "e225567960db50e9810a152c8621c7a6ed94de71"
      ],
      "author": {
        "name": "Dmitry Popov",
        "email": "dp@highloadlab.com",
        "time": "Sat Aug 07 20:24:28 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Aug 07 20:24:28 2010 -0700"
      },
      "message": "tcp: no md5sig option size check bug\n\ntcp_parse_md5sig_option doesn\u0027t check md5sig option (TCPOPT_MD5SIG)\nlength, but tcp_v[46]_inbound_md5_hash assume that it\u0027s at least 16\nbytes long.\n\nSigned-off-by: Dmitry Popov \u003cdp@highloadlab.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "00dad5e479531e379aba7358600cc768725d4f1f",
      "tree": "652199eacee32c2cf317f5a54da8265973d29978",
      "parents": [
        "c477d0447db08068a497e7beb892b2b2a7bff64b",
        "3a3dfb062c2e086c202d34f09ce29634515ad256"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Aug 02 22:22:46 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Aug 02 22:22:46 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/e1000e/hw.h\n\tnet/bridge/br_device.c\n\tnet/bridge/br_input.c\n"
    },
    {
      "commit": "c893b8066c7bf6156e4d760e5acaf4c148e37190",
      "tree": "8487417a6e938a1204a7e30cbc53fa2d274e6621",
      "parents": [
        "3c0fef0b7d36e5f8d3ea3731a8228102274e3c23"
      ],
      "author": {
        "name": "Changli Gao",
        "email": "xiaosuo@gmail.com",
        "time": "Sat Jul 31 13:25:08 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Aug 02 17:25:07 2010 -0700"
      },
      "message": "ip_fragment: fix subtracting PPPOE_SES_HLEN from mtu twice\n\n6c79bf0f2440fd250c8fce8d9b82fcf03d4e8350 subtracts PPPOE_SES_HLEN from mtu at\nthe front of ip_fragment(). So the later subtraction should be removed. The\nMTU of 802.1q is also 1500, so MTU should not be changed.\n\nSigned-off-by: Changli Gao \u003cxiaosuo@gmail.com\u003e\nSigned-off-by: Bart De Schuymer \u003cbdschuym@pandora.bo\u003e\n----\n net/ipv4/ip_output.c |    6 ++----\n 1 file changed, 2 insertions(+), 4 deletions(-)\nSigned-off-by: Bart De Schuymer \u003cbdschuym@pandora.bo\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "3c0fef0b7d36e5f8d3ea3731a8228102274e3c23",
      "tree": "71e201a342dcd11946891da0d900e7fd81a23217",
      "parents": [
        "99e6d06521f2a522ff5aaa812552f68220507c67"
      ],
      "author": {
        "name": "Josh Hunt",
        "email": "johunt@akamai.com",
        "time": "Fri Jul 30 13:49:35 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Aug 02 17:25:06 2010 -0700"
      },
      "message": "net: Add getsockopt support for TCP thin-streams\n\nInitial TCP thin-stream commit did not add getsockopt support for the new\nsocket options: TCP_THIN_LINEAR_TIMEOUTS and TCP_THIN_DUPACK. This adds support\nfor them.\n\nSigned-off-by: Josh Hunt \u003cjohunt@akamai.com\u003e\nTested-by: Andreas Petlund \u003capetlund@simula.no\u003e\nAcked-by: Andreas Petlund \u003capetlund@simula.no\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "83bf2e4089bebc2c7fd14a79de5954b26fe8d4af",
      "tree": "ab2cb1f229ba4c2d7236406c997e41a223daf74d",
      "parents": [
        "de38483010bae523f533bb6bf9f7b7353772f6eb",
        "6661481d5a8975657742c7ed40ae16bdaa7d0a6e"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Aug 02 15:07:58 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Aug 02 15:07:58 2010 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/kaber/nf-next-2.6\n"
    },
    {
      "commit": "2452a99dc0496a90abd0090c280671370c0f3e1c",
      "tree": "695cfb4bff794c4815f8d55e89426107ad3699de",
      "parents": [
        "f43dc98b3be36551143e3bbaf1bb3067835c24f4"
      ],
      "author": {
        "name": "Changli Gao",
        "email": "xiaosuo@gmail.com",
        "time": "Mon Aug 02 17:35:49 2010 +0200"
      },
      "committer": {
        "name": "Patrick McHardy",
        "email": "kaber@trash.net",
        "time": "Mon Aug 02 17:35:49 2010 +0200"
      },
      "message": "netfilter: nf_nat: don\u0027t check if the tuple is unique when there isn\u0027t any other choice\n\nThe tuple got from unique_tuple() doesn\u0027t need to be really unique, so the\ncheck for the unique tuple isn\u0027t necessary, when there isn\u0027t any other\nchoice. Eliminating the unnecessary nf_nat_used_tuple() can save some CPU\ncycles too.\n\nSigned-off-by: Changli Gao \u003cxiaosuo@gmail.com\u003e\nSigned-off-by: Patrick McHardy \u003ckaber@trash.net\u003e\n"
    },
    {
      "commit": "f43dc98b3be36551143e3bbaf1bb3067835c24f4",
      "tree": "65d157024f399f49f8798ab9f905d66dc4f11a52",
      "parents": [
        "794dbc1d712e181a9eb8d1ae799ed7c526963a7c"
      ],
      "author": {
        "name": "Changli Gao",
        "email": "xiaosuo@gmail.com",
        "time": "Mon Aug 02 17:20:54 2010 +0200"
      },
      "committer": {
        "name": "Patrick McHardy",
        "email": "kaber@trash.net",
        "time": "Mon Aug 02 17:20:54 2010 +0200"
      },
      "message": "netfilter: nf_nat: make unique_tuple return void\n\nThe only user of unique_tuple() get_unique_tuple() doesn\u0027t care about the\nreturn value of unique_tuple(), so make unique_tuple() return void (nothing).\n\nSigned-off-by: Changli Gao \u003cxiaosuo@gmail.com\u003e\nSigned-off-by: Patrick McHardy \u003ckaber@trash.net\u003e\n"
    },
    {
      "commit": "794dbc1d712e181a9eb8d1ae799ed7c526963a7c",
      "tree": "920418736aea470df9daa80e83f4733588535b89",
      "parents": [
        "5c0d2374a16fcb52096df914ee57720987677be5"
      ],
      "author": {
        "name": "Changli Gao",
        "email": "xiaosuo@gmail.com",
        "time": "Mon Aug 02 17:15:30 2010 +0200"
      },
      "committer": {
        "name": "Patrick McHardy",
        "email": "kaber@trash.net",
        "time": "Mon Aug 02 17:15:30 2010 +0200"
      },
      "message": "netfilter: nf_nat: use local variable hdrlen\n\nUse local variable hdrlen instead of ip_hdrlen(skb).\n\nSigned-off-by: Changli Gao \u003cxiaosuo@gmail.com\u003e\nSigned-off-by: Patrick McHardy \u003ckaber@trash.net\u003e\n"
    },
    {
      "commit": "24b36f0193467fa727b85b4c004016a8dae999b9",
      "tree": "d9518ed0ef2012fd14567d03b500295dfb7fe7e0",
      "parents": [
        "7df0884ce144396fc151f2af7a73d5fb305f9b03"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Mon Aug 02 16:49:01 2010 +0200"
      },
      "committer": {
        "name": "Patrick McHardy",
        "email": "kaber@trash.net",
        "time": "Mon Aug 02 16:49:01 2010 +0200"
      },
      "message": "netfilter: {ip,ip6,arp}_tables: dont block bottom half more than necessary\n\nWe currently disable BH for the whole duration of get_counters()\n\nOn machines with a lot of cpus and large tables, this might be too long.\n\nWe can disable preemption during the whole function, and disable BH only\nwhile fetching counters for the current cpu.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: Patrick McHardy \u003ckaber@trash.net\u003e\n"
    },
    {
      "commit": "a3bdb549e30e7a263f7a589747c40e9c50110315",
      "tree": "ac14f82ebe454fdbc00c3f1298a293e03e1f1592",
      "parents": [
        "eeaf61d8891f9c9ed12c1a667e72bf83f0857954"
      ],
      "author": {
        "name": "Dmitry Popov",
        "email": "dp@highloadlab.com",
        "time": "Thu Jul 29 01:59:36 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jul 30 23:04:07 2010 -0700"
      },
      "message": "tcp: cookie transactions setsockopt memory leak\n\nThere is a bug in do_tcp_setsockopt(net/ipv4/tcp.c),\nTCP_COOKIE_TRANSACTIONS case.\nIn some cases (when tp-\u003ecookie_values \u003d\u003d NULL) new tcp_cookie_values\nstructure can be allocated (at cvp), but not bound to\ntp-\u003ecookie_values. So a memory leak occurs.\n\nSigned-off-by: Dmitry Popov \u003cdp@highloadlab.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "7df0884ce144396fc151f2af7a73d5fb305f9b03",
      "tree": "e7557990c5e96ffe8b81d8107c98a9a134786fcf",
      "parents": [
        "261abc8c964e018256c1bcbd99b8a208c624d7cc"
      ],
      "author": {
        "name": "Changli Gao",
        "email": "xiaosuo@gmail.com",
        "time": "Fri Jul 23 16:25:11 2010 +0200"
      },
      "committer": {
        "name": "Patrick McHardy",
        "email": "kaber@trash.net",
        "time": "Fri Jul 23 16:25:11 2010 +0200"
      },
      "message": "netfilter: iptables: use skb-\u003elen for accounting\n\nUse skb-\u003elen for accounting as xt_quota does.\n\nSigned-off-by: Changli Gao \u003cxiaosuo@gmail.com\u003e\nSigned-off-by: Patrick McHardy \u003ckaber@trash.net\u003e\n"
    },
    {
      "commit": "f667009ecc3304248727236ff88f9070f918355f",
      "tree": "4d7cfcd8fa565dfccc2fdf8c2f008f0fc3dfb937",
      "parents": [
        "c36952e524b2b898a3c9e9b137f64d72d43cd393"
      ],
      "author": {
        "name": "Changli Gao",
        "email": "xiaosuo@gmail.com",
        "time": "Fri Jul 23 13:40:53 2010 +0200"
      },
      "committer": {
        "name": "Patrick McHardy",
        "email": "kaber@trash.net",
        "time": "Fri Jul 23 13:40:53 2010 +0200"
      },
      "message": "netfilter: arptables: use arp_hdr_len()\n\nuse arp_hdr_len().\n\nSigned-off-by: Changli Gao \u003cxiaosuo@gmail.com\u003e\nSigned-off-by: Patrick McHardy \u003ckaber@trash.net\u003e\n"
    },
    {
      "commit": "c36952e524b2b898a3c9e9b137f64d72d43cd393",
      "tree": "6fdc6d67bd40c0cff79e49e8a3e6423354503180",
      "parents": [
        "e8648a1fdb54da1f683784b36a17aa65ea56e931"
      ],
      "author": {
        "name": "Changli Gao",
        "email": "xiaosuo@gmail.com",
        "time": "Fri Jul 23 13:27:08 2010 +0200"
      },
      "committer": {
        "name": "Patrick McHardy",
        "email": "kaber@trash.net",
        "time": "Fri Jul 23 13:27:08 2010 +0200"
      },
      "message": "netfilter: nf_nat_core: merge the same lines\n\nproto-\u003eunique_tuple() will be called finally, if the previous calls fail. This\npatch checks the false condition of (range-\u003eflags \u0026IP_NAT_RANGE_PROTO_RANDOM)\ninstead to avoid duplicate line of code: proto-\u003eunique_tuple().\n\nSigned-off-by: Changli Gao \u003cxiaosuo@gmail.com\u003e\nSigned-off-by: Patrick McHardy \u003ckaber@trash.net\u003e\n"
    },
    {
      "commit": "963bfeeeec913d135c15dc400f2f86cb62655d81",
      "tree": "73a5117b91580637df8c5c7e21ff40656eb93904",
      "parents": [
        "e955cead031177b083fbf18d04a03c06e330a439"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Tue Jul 20 22:03:14 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Jul 22 13:46:21 2010 -0700"
      },
      "message": "net: RTA_MARK addition\n\nAdd a new rt attribute, RTA_MARK, and use it in\nrt_fill_info()/inet_rtm_getroute() to support following commands :\n\nip route get 192.168.20.110 mark NUMBER\nip route get 192.168.20.108 from 192.168.20.110 iif eth1 mark NUMBER\nip route list cache [192.168.20.110] mark NUMBER\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "3f30fc1570626f11e8f3efe5ebd41fe96e847ed1",
      "tree": "3a626c1887597942cd21202124b5e293dee226d5",
      "parents": [
        "942875ffc102a6b9992120808e4990eda7a618f6"
      ],
      "author": {
        "name": "Gustavo F. Padovan",
        "email": "padovan@profusion.mobi",
        "time": "Wed Jul 21 10:59:58 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jul 21 14:44:29 2010 -0700"
      },
      "message": "net: remove last uses of __attribute__((packed))\n\nNetwork code uses the __packed macro instead of __attribute__((packed)).\n\nSigned-off-by: Gustavo F. Padovan \u003cpadovan@profusion.mobi\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "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": "b13b7125e4d10ce39818eec1bcb2d9777d29475f",
      "tree": "926c636e985bc64ed8b5480dc91bab52916a4010",
      "parents": [
        "98b0e84aaaf2be6c40998d011c9db96ea6498e20"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Mon Jul 05 10:40:09 2010 +0200"
      },
      "committer": {
        "name": "Patrick McHardy",
        "email": "kaber@trash.net",
        "time": "Mon Jul 05 10:40:09 2010 +0200"
      },
      "message": "netfilter: ipt_REJECT: avoid touching dst ref\n\nWe can avoid a pair of atomic ops in ipt_REJECT send_reset()\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: Patrick McHardy \u003ckaber@trash.net\u003e\n"
    },
    {
      "commit": "98b0e84aaaf2be6c40998d011c9db96ea6498e20",
      "tree": "b12e3f7b10ccb3a5774cbcec9a1c0ad6dbc36000",
      "parents": [
        "ea8fbe8f198edea19116d4b61267e12235513225"
      ],
      "author": {
        "name": "Changli Gao",
        "email": "xiaosuo@gmail.com",
        "time": "Mon Jul 05 10:39:17 2010 +0200"
      },
      "committer": {
        "name": "Patrick McHardy",
        "email": "kaber@trash.net",
        "time": "Mon Jul 05 10:39:17 2010 +0200"
      },
      "message": "netfilter: ipt_REJECT: postpone the checksum calculation.\n\npostpone the checksum calculation, then if the output NIC supports checksum\noffloading, we can utlize it. And though the output NIC doesn\u0027t support\nchecksum offloading, but we\u0027ll mangle this packet, this can free us from\nupdating the checksum, as the checksum calculation occurs later.\n\nSigned-off-by: Changli Gao \u003cxiaosuo@gmail.com\u003e\nSigned-off-by: Patrick McHardy \u003ckaber@trash.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"
    }
  ],
  "next": "2a1d4bd46047efff513600d7ff422bc344f540a6"
}
