)]}'
{
  "log": [
    {
      "commit": "3dde25988292864a582b4a9389b1ae835aa3fe80",
      "tree": "885a73f939ed00c1dbef112f9bb6a41fe08d07d1",
      "parents": [
        "9a52e97e24d6da744e6c3332b8dd478a4974983e"
      ],
      "author": {
        "name": "Jeffrin Jose",
        "email": "ahiliation@yahoo.co.in",
        "time": "Sat May 19 01:59:04 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat May 19 18:34:57 2012 -0400"
      },
      "message": "net:ipv6:fixed space issues relating to operators.\n\nFixed space issues relating to operators found by\ncheckpatch.pl tool in net/ipv6/udp.c\n\nSigned-off-by: Jeffrin Jose \u003cahiliation@yahoo.co.in\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "9a52e97e24d6da744e6c3332b8dd478a4974983e",
      "tree": "89d5004660653dbf94c9f1cda31a4adf93e6e334",
      "parents": [
        "a34a101e1e6365638b02ea83a38d7a4cb228dc04"
      ],
      "author": {
        "name": "Jeffrin Jose",
        "email": "ahiliation@yahoo.co.in",
        "time": "Sat May 19 01:45:21 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat May 19 18:34:57 2012 -0400"
      },
      "message": "net:ipv6:fixed a trailing white space issue.\n\nFixed a trailing white space issue found by\ncheckpatch.pl tool in net/ipv6/udp.c\n\nSigned-off-by: Jeffrin Jose \u003cahiliation@yahoo.co.in\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "d7f3f62167bc2299d9669888b493b6e6ba561c35",
      "tree": "54bf3e1e796aba2aa1eb6b5e3fd0381c91327385",
      "parents": [
        "cb80ef463d1881757ade3197cdf875a2ff856651"
      ],
      "author": {
        "name": "Benjamin LaHaise",
        "email": "bcrl@kvack.org",
        "time": "Fri Apr 27 08:24:08 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Apr 28 22:21:51 2012 -0400"
      },
      "message": "net/ipv6/udp: UDP encapsulation: introduce encap_rcv hook into IPv6\n\nNow that the sematics of udpv6_queue_rcv_skb() match IPv4\u0027s\nudp_queue_rcv_skb(), introduce the UDP encap_rcv() hook for IPv6.\n\nSigned-off-by: Benjamin LaHaise \u003cbcrl@kvack.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "cb80ef463d1881757ade3197cdf875a2ff856651",
      "tree": "a2b8f2b4f087dfc90d9148a94fcc2aa6702eb5eb",
      "parents": [
        "f7ad74fef3af6c6e2ef7f01c5589d77fe7db3d7c"
      ],
      "author": {
        "name": "Benjamin LaHaise",
        "email": "bcrl@kvack.org",
        "time": "Fri Apr 27 08:23:59 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Apr 28 22:21:51 2012 -0400"
      },
      "message": "net/ipv6/udp: UDP encapsulation: move socket locking into udpv6_queue_rcv_skb()\n\nIn order to make sure that when the encap_rcv() hook is introduced it is\nnot called with the socket lock held, move socket locking from callers into\nudpv6_queue_rcv_skb(), matching what happens in IPv4.\n\nSigned-off-by: Benjamin LaHaise \u003cbcrl@kvack.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "f7ad74fef3af6c6e2ef7f01c5589d77fe7db3d7c",
      "tree": "fc0276ddd7983b0e346ce08104c7165a0b710295",
      "parents": [
        "a319726af99d3da87f942a4ae95a4f6527badf4a"
      ],
      "author": {
        "name": "Benjamin LaHaise",
        "email": "bcrl@kvack.org",
        "time": "Fri Apr 27 08:23:21 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Apr 28 22:21:50 2012 -0400"
      },
      "message": "net/ipv6/udp: UDP encapsulation: break backlog_rcv into __udpv6_queue_rcv_skb\n\nThis is the first step in reworking the IPv6 UDP code to be structured more\nlike the IPv4 UDP code.  This patch creates __udpv6_queue_rcv_skb() with\nthe equivalent sematics to __udp_queue_rcv_skb(), and wires it up to the\nbacklog_rcv method.\n\nSigned-off-by: Benjamin LaHaise \u003cbcrl@kvack.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "f545a38f74584cc7424cb74f792a00c6d2589485",
      "tree": "b272cbfed3267a7750f55f23989e1b070ae6ac3e",
      "parents": [
        "b98985073bc5403ef1320866e4ef8bbc5d587ceb"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "edumazet@google.com",
        "time": "Sun Apr 22 23:34:26 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Apr 23 22:28:28 2012 -0400"
      },
      "message": "net: add a limit parameter to sk_add_backlog()\n\nsk_add_backlog() \u0026 sk_rcvqueues_full() hard coded sk_rcvbuf as the\nmemory limit. We need to make this limit a parameter for TCP use.\n\nNo functional change expected in this patch, all callers still using the\nold sk_rcvbuf limit.\n\nSigned-off-by: Eric Dumazet \u003cedumazet@google.com\u003e\nCc: Neal Cardwell \u003cncardwell@google.com\u003e\nCc: Tom Herbert \u003ctherbert@google.com\u003e\nCc: Maciej Żenczykowski \u003cmaze@google.com\u003e\nCc: Yuchung Cheng \u003cycheng@google.com\u003e\nCc: Ilpo Järvinen \u003cilpo.jarvinen@helsinki.fi\u003e\nCc: Rick Jones \u003crick.jones2@hp.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "3f518bf745cbd6007d8069100fb9cb09e960c872",
      "tree": "debbe9e9340d46080f1b82e4149a2427545c4aef",
      "parents": [
        "4934b0329f7150dcb5f90506860e2db32274c755"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@parallels.com",
        "time": "Tue Feb 21 07:30:58 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Feb 21 14:58:57 2012 -0500"
      },
      "message": "datagram: Add offset argument to __skb_recv_datagram\n\nThis one is only considered for MSG_PEEK flag and the value pointed by\nit specifies where to start peeking bytes from. If the offset happens to\npoint into the middle of the returned skb, the offset within this skb is\nput back to this very argument.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@parallels.com\u003e\nAcked-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "c4062dfc425e94290ac427a98d6b4721dd2bc91f",
      "tree": "30180df3e11ded7ed8ea2c3c4525092d0711f1af",
      "parents": [
        "76e21053b5bf33a07c76f99d27a74238310e3c71"
      ],
      "author": {
        "name": "Erich E. Hoover",
        "email": "ehoover@mines.edu",
        "time": "Wed Feb 08 09:11:08 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Feb 08 15:52:45 2012 -0500"
      },
      "message": "ipv6: Implement IPV6_UNICAST_IF socket option.\n\nThe IPV6_UNICAST_IF feature is the IPv6 compliment to IP_UNICAST_IF.\n\nSigned-off-by: Erich E. Hoover \u003cehoover@mines.edu\u003e\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "fce823381e3c082ba1b2e15d5151d1aa8afdc9e9",
      "tree": "fe265662f80f822246f7705d3b2ac1e44fa84579",
      "parents": [
        "1942c518ca017f376b267a7c5e78c15d37202442"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@parallels.com",
        "time": "Fri Dec 09 06:23:34 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Dec 09 14:14:08 2011 -0500"
      },
      "message": "udp: Export code sk lookup routines\n\nThe UDP diag get_exact handler will require them to find a\nsocket by provided net, [sd]addr-s, [sd]ports and device.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@parallels.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "b3613118eb30a589d971e4eccbbb2a1314f5dfd4",
      "tree": "868c1ee59e1b5c19a4f2e43716400d0001a994e5",
      "parents": [
        "7505afe28c16a8d386624930a018d0052c75d687",
        "5983fe2b29df5885880d7fa3b91aca306c7564ef"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Dec 02 13:49:21 2011 -0500"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Dec 02 13:49:21 2011 -0500"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net\n"
    },
    {
      "commit": "59c2cdae2791c0b2ee13d148edc6b771e7e7953f",
      "tree": "1e1a9d09a881a0283d991e91f39a36d6de045d54",
      "parents": [
        "b03b6dd58cef7d15b7c46a6729b83dd535ef08ab"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Dec 01 14:12:55 2011 -0500"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Dec 01 14:12:55 2011 -0500"
      },
      "message": "Revert \"udp: remove redundant variable\"\n\nThis reverts commit 81d54ec8479a2c695760da81f05b5a9fb2dbe40a.\n\nIf we take the \"try_again\" goto, due to a checksum error,\nthe \u0027len\u0027 has already been truncated.  So we won\u0027t compute\nthe same values as the original code did.\n\nReported-by: paul bilke \u003cfsmail@conspiracy.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "4e3fd7a06dc20b2d8ec6892233ad2012968fe7b6",
      "tree": "da3fbec7672ac6b967dfa31cec6c88f468a57fa2",
      "parents": [
        "40ba84993d66469d336099c5af74c3da5b73e28d"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon Nov 21 03:39:03 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Nov 22 16:43:32 2011 -0500"
      },
      "message": "net: remove ipv6_addr_copy()\n\nC assignment can handle struct in6_addr copying.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "c8f44affb7244f2ac3e703cab13d55ede27621bb",
      "tree": "62e7aea2916a8d7cab825fe500670c5113854c0f",
      "parents": [
        "a59e2ecb859f2ab03bb2e230709f8039472ad2c3"
      ],
      "author": {
        "name": "Michał Mirosław",
        "email": "mirq-linux@rere.qmqm.pl",
        "time": "Tue Nov 15 15:29:55 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Nov 16 17:43:10 2011 -0500"
      },
      "message": "net: introduce and use netdev_features_t for device features sets\n\nv2:\tadd couple missing conversions in drivers\n\tsplit unexporting netdev_fix_features()\n\timplemented %pNF\n\tconvert sock::sk_route_(no?)caps\n\nSigned-off-by: Michał Mirosław \u003cmirq-linux@rere.qmqm.pl\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "d826eb14ecef3574b6b3be55e5f4329f4a76fbf3",
      "tree": "e072ee768f065be430543709d48f08a36f4eed2d",
      "parents": [
        "acb32ba3dee66d58704caeeb8c6ff95f60efdc66"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Wed Nov 09 07:24:35 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Nov 09 16:36:27 2011 -0500"
      },
      "message": "ipv4: PKTINFO doesnt need dst reference\n\nLe lundi 07 novembre 2011 à 15:33 +0100, Eric Dumazet a écrit :\n\n\u003e At least, in recent kernels we dont change dst-\u003erefcnt in forwarding\n\u003e patch (usinf NOREF skb-\u003edst)\n\u003e\n\u003e One particular point is the atomic_inc(dst-\u003erefcnt) we have to perform\n\u003e when queuing an UDP packet if socket asked PKTINFO stuff (for example a\n\u003e typical DNS server has to setup this option)\n\u003e\n\u003e I have one patch somewhere that stores the information in skb-\u003ecb[] and\n\u003e avoid the atomic_{inc|dec}(dst-\u003erefcnt).\n\u003e\n\nOK I found it, I did some extra tests and believe its ready.\n\n[PATCH net-next] ipv4: IP_PKTINFO doesnt need dst reference\n\nWhen a socket uses IP_PKTINFO notifications, we currently force a dst\nreference for each received skb. Reader has to access dst to get needed\ninformation (rt_iif \u0026 rt_spec_dst) and must release dst reference.\n\nWe also forced a dst reference if skb was put in socket backlog, even\nwithout IP_PKTINFO handling. This happens under stress/load.\n\nWe can instead store the needed information in skb-\u003ecb[], so that only\nsoftirq handler really access dst, improving cache hit ratios.\n\nThis removes two atomic operations per packet, and false sharing as\nwell.\n\nOn a benchmark using a mono threaded receiver (doing only recvmsg()\ncalls), I can reach 720.000 pps instead of 570.000 pps.\n\nIP_PKTINFO is typically used by DNS servers, and any multihomed aware\nUDP application.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "73cb88ecb950ee67906d02354f781ea293bcf895",
      "tree": "fbb4a777410d5a5653537bcd3ee7e954bc9ba5a0",
      "parents": [
        "98f41f694f46085fda475cdee8cc0b6d2c5e6f1f"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Sun Oct 30 06:46:30 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Nov 01 17:56:14 2011 -0400"
      },
      "message": "net: make the tcp and udp file_operations for the /proc stuff const\n\nthe tcp and udp code creates a set of struct file_operations at runtime\nwhile it can also be done at compile time, with the added benefit of then\nhaving these file operations be const.\n\nthe trickiest part was to get the \"THIS_MODULE\" reference right; the naive\nmethod of declaring a struct in the place of registration would not work\nfor this reason.\n\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "8decf868790b48a727d7e7ca164f2bcd3c1389c0",
      "tree": "b759a5f861f842af7ea76f9011b579d06e9d5508",
      "parents": [
        "3fc72370186be2f9d4d6ef06d99e1caa5d92c564",
        "d93dc5c4478c1fd5de85a3e8aece9aad7bbae044"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Sep 22 03:23:13 2011 -0400"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Sep 22 03:23:13 2011 -0400"
      },
      "message": "Merge branch \u0027master\u0027 of github.com:davem330/net\n\nConflicts:\n\tMAINTAINERS\n\tdrivers/net/Kconfig\n\tdrivers/net/ethernet/broadcom/bnx2x/bnx2x_link.c\n\tdrivers/net/ethernet/broadcom/tg3.c\n\tdrivers/net/wireless/iwlwifi/iwl-pci.c\n\tdrivers/net/wireless/iwlwifi/iwl-trans-tx-pcie.c\n\tdrivers/net/wireless/rt2x00/rt2800usb.c\n\tdrivers/net/wireless/wl12xx/main.c\n"
    },
    {
      "commit": "ec0506dbe4e240ecd4c32bf74c84a88ce1ddb414",
      "tree": "d8eb6a77c2f611d99a8c8b6576389c071bf5890a",
      "parents": [
        "0f43dd546d991ca260d8a72d07f617907c508de8"
      ],
      "author": {
        "name": "Maciej Żenczykowski",
        "email": "maze@google.com",
        "time": "Sun Aug 28 12:35:31 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Aug 30 17:39:01 2011 -0400"
      },
      "message": "net: relax PKTINFO non local ipv6 udp xmit check\n\nAllow transparent sockets to be less restrictive about\nthe source ip of ipv6 udp packets being sent.\n\nGoogle-Bug-Id: 5018138\nSigned-off-by: Maciej Żenczykowski \u003cmaze@google.com\u003e\nCC: \"Erik Kline\" \u003cek@google.com\u003e\nCC: \"Lorenzo Colitti\" \u003clorenzo@google.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "bdeab991918663aed38757904219e8398214334c",
      "tree": "bc6c02da7ed88e3e568677b4a35fb4e55de363de",
      "parents": [
        "792df22cd0499b4e662d4618b0008fdcfef8b04e"
      ],
      "author": {
        "name": "Tom Herbert",
        "email": "therbert@google.com",
        "time": "Sun Aug 14 19:45:55 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Aug 17 20:06:03 2011 -0700"
      },
      "message": "rps: Add flag to skb to indicate rxhash is based on L4 tuple\n\nThe l4_rxhash flag was added to the skb structure to indicate\nthat the rxhash value was computed over the 4 tuple for the\npacket which includes the port information in the encapsulated\ntransport packet.  This is used by the stack to preserve the\nrxhash value in __skb_rx_tunnel.\n\nSigned-off-by: Tom Herbert \u003ctherbert@google.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "33d480ce6d43326e2541fd79b3548858a174ec3c",
      "tree": "c938ee8c07a2e0f33178069b55439a54188f38fa",
      "parents": [
        "cd28ca0a3dd17c68d24b839602a0e6268ad28b5d"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Thu Aug 11 19:30:52 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Aug 12 02:55:28 2011 -0700"
      },
      "message": "net: cleanup some rcu_dereference_raw\n\nRCU api had been completed and rcu_access_pointer() or\nrcu_dereference_protected() are better than generic\nrcu_dereference_raw()\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "87c48fa3b4630905f98268dde838ee43626a060c",
      "tree": "1374b52ed0514682f836cfa0a6a683eb549c9613",
      "parents": [
        "21efcfa0ff27776902a8a15e810147be4d937d69"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Thu Jul 21 21:25:58 2011 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Jul 21 21:25:58 2011 -0700"
      },
      "message": "ipv6: make fragment identifications less predictable\n\nIPv6 fragment identification generation is way beyond what we use for\nIPv4 : It uses a single generator. Its not scalable and allows DOS\nattacks.\n\nNow inetpeer is IPv6 aware, we can use it to provide a more secure and\nscalable frag ident generator (per destination, instead of system wide)\n\nThis patch :\n1) defines a new secure_ipv6_id() helper\n2) extends inet_getid() to provide 32bit results\n3) extends ipv6_select_ident() with a new dest parameter\n\nReported-by: Fernando Gont \u003cfernando@gont.com.ar\u003e\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "9cfaa8def1c795a512bc04f2aec333b03724ca2e",
      "tree": "2c4bff0afe8424472b780a65a8d356db2d62caf4",
      "parents": [
        "32c90254ed4a0c698caa0794ebb4de63fcc69631"
      ],
      "author": {
        "name": "Xufeng Zhang",
        "email": "xufeng.zhang@windriver.com",
        "time": "Tue Jun 21 10:43:40 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jun 21 22:34:27 2011 -0700"
      },
      "message": "udp/recvmsg: Clear MSG_TRUNC flag when starting over for a new packet\n\nConsider this scenario: When the size of the first received udp packet\nis bigger than the receive buffer, MSG_TRUNC bit is set in msg-\u003emsg_flags.\nHowever, if checksum error happens and this is a blocking socket, it will\ngoto try_again loop to receive the next packet.  But if the size of the\nnext udp packet is smaller than receive buffer, MSG_TRUNC flag should not\nbe set, but because MSG_TRUNC bit is not cleared in msg-\u003emsg_flags before\nreceive the next packet, MSG_TRUNC is still set, which is wrong.\n\nFix this problem by clearing MSG_TRUNC flag when starting over for a\nnew packet.\n\nSigned-off-by: Xufeng Zhang \u003cxufeng.zhang@windriver.com\u003e\nSigned-off-by: Paul Gortmaker \u003cpaul.gortmaker@windriver.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "32c90254ed4a0c698caa0794ebb4de63fcc69631",
      "tree": "4f0e4bb2cfe98c587792ba223ea3791102b43c1a",
      "parents": [
        "58fa45973117ab7a79d5b6818275a887867fc4d7"
      ],
      "author": {
        "name": "Xufeng Zhang",
        "email": "xufeng.zhang@windriver.com",
        "time": "Tue Jun 21 10:43:39 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jun 21 22:34:27 2011 -0700"
      },
      "message": "ipv6/udp: Use the correct variable to determine non-blocking condition\n\nudpv6_recvmsg() function is not using the correct variable to determine\nwhether or not the socket is in non-blocking operation, this will lead\nto unexpected behavior when a UDP checksum error occurs.\n\nConsider a non-blocking udp receive scenario: when udpv6_recvmsg() is\ncalled by sock_common_recvmsg(), MSG_DONTWAIT bit of flags variable in\nudpv6_recvmsg() is cleared by \"flags \u0026 ~MSG_DONTWAIT\" in this call:\n\n    err \u003d sk-\u003esk_prot-\u003erecvmsg(iocb, sk, msg, size, flags \u0026 MSG_DONTWAIT,\n                   flags \u0026 ~MSG_DONTWAIT, \u0026addr_len);\n\ni.e. with udpv6_recvmsg() getting these values:\n\n\tint noblock \u003d flags \u0026 MSG_DONTWAIT\n\tint flags \u003d flags \u0026 ~MSG_DONTWAIT\n\nSo, when udp checksum error occurs, the execution will go to\ncsum_copy_err, and then the problem happens:\n\n    csum_copy_err:\n            ...............\n            if (flags \u0026 MSG_DONTWAIT)\n                    return -EAGAIN;\n            goto try_again;\n            ...............\n\nBut it will always go to try_again as MSG_DONTWAIT has been cleared\nfrom flags at call time -- only noblock contains the original value\nof MSG_DONTWAIT, so the test should be:\n\n            if (noblock)\n                    return -EAGAIN;\n\nThis is also consistent with what the ipv4/udp code does.\n\nSigned-off-by: Xufeng Zhang \u003cxufeng.zhang@windriver.com\u003e\nSigned-off-by: Paul Gortmaker \u003cpaul.gortmaker@windriver.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "71338aa7d050c86d8765cd36e46be514fb0ebbce",
      "tree": "96bacb805b939c490145b31b4e2fb9e5cea79c5d",
      "parents": [
        "229de618ba6ff36e382b908b7637fe56c25ae9f1"
      ],
      "author": {
        "name": "Dan Rosenberg",
        "email": "drosenberg@vsecurity.com",
        "time": "Mon May 23 12:17:35 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue May 24 01:13:12 2011 -0400"
      },
      "message": "net: convert %p usage to %pK\n\nThe %pK format specifier is designed to hide exposed kernel pointers,\nspecifically via /proc interfaces.  Exposing these pointers provides an\neasy target for kernel write vulnerabilities, since they reveal the\nlocations of writable structures containing easily triggerable function\npointers.  The behavior of %pK depends on the kptr_restrict sysctl.\n\nIf kptr_restrict is set to 0, no deviation from the standard %p behavior\noccurs.  If kptr_restrict is set to 1, the default, if the current user\n(intended to be a reader via seq_printf(), etc.) does not have CAP_SYSLOG\n(currently in the LSM tree), kernel pointers using %pK are printed as 0\u0027s.\n If kptr_restrict is set to 2, kernel pointers using %pK are printed as\n0\u0027s regardless of privileges.  Replacing with 0\u0027s was chosen over the\ndefault \"(null)\", which cannot be parsed by userland %p, which expects\n\"(nil)\".\n\nThe supporting code for kptr_restrict and %pK are currently in the -mm\ntree.  This patch converts users of %p in net/ to %pK.  Cases of printing\npointers to the syslog are not covered, since this would eliminate useful\ninformation for postmortem debugging and the reading of the syslog is\nalready optionally protected by the dmesg_restrict sysctl.\n\nSigned-off-by: Dan Rosenberg \u003cdrosenberg@vsecurity.com\u003e\nCc: James Morris \u003cjmorris@namei.org\u003e\nCc: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nCc: Thomas Graf \u003ctgraf@infradead.org\u003e\nCc: Eugene Teo \u003ceugeneteo@kernel.org\u003e\nCc: Kees Cook \u003ckees.cook@canonical.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: David S. Miller \u003cdavem@davemloft.net\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Eric Paris \u003ceparis@parisplace.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "96339d6c490a32de35fa798ca7922d13a8538ecd",
      "tree": "bfeab66ca069f4c4d99f30c2da23ae7c78c139e2",
      "parents": [
        "f6d8bd051c391c1c0458a30b2a7abcd939329259"
      ],
      "author": {
        "name": "Shan Wei",
        "email": "shanwei@cn.fujitsu.com",
        "time": "Fri Apr 22 19:07:41 2011 +0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Apr 28 13:28:57 2011 -0700"
      },
      "message": "net:use help function of skb_checksum_start_offset to calculate offset\n\nAlthough these are equivalent, but the skb_checksum_start_offset() is more readable.\n\nSigned-off-by: Shan Wei \u003cshanwei@cn.fujitsu.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "2bd93d7af1581d40e3c4b25242472661cb7c637a",
      "tree": "43c638422d20857339d8d908d6b65ebb8045edc0",
      "parents": [
        "64cad2ade1e6f890531a58318ca9ee013f92ef2f",
        "0972ddb2373d5e127aabdcabd8305eff0242cd0b"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Apr 26 12:16:46 2011 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Apr 26 12:16:46 2011 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6\n\nResolved logic conflicts causing a build failure due to\ndrivers/net/r8169.c changes using a patch from Stephen Rothwell.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "b71d1d426d263b0b6cb5760322efebbfc89d4463",
      "tree": "226ca7390bd6187ec9139d2ccedd26fd94d8e57a",
      "parents": [
        "5f8629c526b4f7e529a6d27bbd802c0dc7fcc357"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Fri Apr 22 04:53:02 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Apr 22 11:04:14 2011 -0700"
      },
      "message": "inet: constify ip headers and in6_addr\n\nAdd const qualifiers to structs iphdr, ipv6hdr and in6_addr pointers\nwhere possible, to make code intention more obvious.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "a9cf73ea7ff78f52662c8658d93c226effbbedde",
      "tree": "07a723cb628f223e4f756f0cb02eeba8b6ee9c62",
      "parents": [
        "10022a6c66e199d8f61d9044543f38785713cbbd"
      ],
      "author": {
        "name": "Shan Wei",
        "email": "shanwei@cn.fujitsu.com",
        "time": "Tue Apr 19 22:52:49 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Apr 21 10:39:10 2011 -0700"
      },
      "message": "ipv6: udp: fix the wrong headroom check\n\nAt this point, skb-\u003edata points to skb_transport_header.\nSo, headroom check is wrong.\n\nFor some case:bridge(UFO is on) + eth device(UFO is off),\nthere is no enough headroom for IPv6 frag head.\nBut headroom check is always false.\n\nThis will bring about data be moved to there prior to skb-\u003ehead,\nwhen adding IPv6 frag header to skb.\n\nSigned-off-by: Shan Wei \u003cshanwei@cn.fujitsu.com\u003e\nAcked-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "47482f132a689af168fae3055ff1899dfd032d3a",
      "tree": "07f64d971a4783a71b612602da42e7faf8b14dd5",
      "parents": [
        "2d5d4154650459b61a8e7097d186a89d89dab8ed"
      ],
      "author": {
        "name": "Neil Horman",
        "email": "nhorman@tuxdriver.com",
        "time": "Wed Apr 06 13:07:09 2011 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Apr 06 13:07:09 2011 -0700"
      },
      "message": "ipv6: Enable RFS sk_rxhash tracking for ipv6 sockets (v2)\n\nproperly record sk_rxhash in ipv6 sockets (v2)\n\nNoticed while working on another project that flows to sockets which I had open\non a test systems weren\u0027t getting steered properly when I had RFS enabled.\nLooking more closely I found that:\n\n1) The affected sockets were all ipv6\n2) They weren\u0027t getting steered because sk-\u003esk_rxhash was never set from the\nincomming skbs on that socket.\n\nThis was occuring because there are several points in the IPv4 tcp and udp code\nwhich save the rxhash value when a new connection is established.  Those calls\nto sock_rps_save_rxhash were never added to the corresponding ipv6 code paths.\nThis patch adds those calls.  Tested by myself to properly enable RFS\nfunctionalty on ipv6.\n\nChange notes:\nv2:\n\tFiltered UDP to only arm RFS on bound sockets (Eric Dumazet)\n\nSigned-off-by: Neil Horman \u003cnhorman@tuxdriver.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "1958b856c1a59c0f1e892b92debb8c9fe4f364dc",
      "tree": "679e060ad7c1e36ee2e5aec0c686921c66c9bc2c",
      "parents": [
        "4c9483b2fb5d2548c3cc1fe03cdd4484ceeb5d1c"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Mar 12 16:36:19 2011 -0500"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Mar 12 15:08:55 2011 -0800"
      },
      "message": "net: Put fl6_* macros to struct flowi6 and use them again.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "4c9483b2fb5d2548c3cc1fe03cdd4484ceeb5d1c",
      "tree": "c29c8070012cffb38fe249cf528589a675f622b1",
      "parents": [
        "9cce96df5b76691712dba22e83ff5efe900361e1"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Mar 12 16:22:43 2011 -0500"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Mar 12 15:08:54 2011 -0800"
      },
      "message": "ipv6: Convert to use flowi6 where applicable.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "6281dcc94a96bd73017b2baa8fa83925405109ef",
      "tree": "8deee4d66d256d10ea25f66520eb96b1fade1545",
      "parents": [
        "08704bcbf022786532b5f188935ab6619906049f"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Mar 12 00:43:55 2011 -0500"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Mar 12 15:08:46 2011 -0800"
      },
      "message": "net: Make flowi ports AF dependent.\n\nCreate two sets of port member accessors, one set prefixed by fl4_*\nand the other prefixed by fl6_*\n\nThis will let us to create AF optimal flow instances.\n\nIt will work because every context in which we access the ports,\nwe have to be fully aware of which AF the flowi is anyways.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "1d28f42c1bd4bb2363d88df74d0128b4da135b4a",
      "tree": "cb2e652fe79a2bc307e871bc2d3fa51cc8051e45",
      "parents": [
        "ca116922afa8cc5ad46b00c0a637b1cde5ca478a"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Mar 12 00:29:39 2011 -0500"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Mar 12 15:08:44 2011 -0800"
      },
      "message": "net: Put flowi_* prefix on AF independent members of struct flowi\n\nI intend to turn struct flowi into a union of AF specific flowi\nstructs.  There will be a common structure that each variant includes\nfirst, much like struct sock_common.\n\nThis is the first step to move in that direction.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "68d0c6d34d586a893292d4fb633a3bf8c547b222",
      "tree": "b6d812307621873cf16000171563c1f68b5bc255",
      "parents": [
        "903ab86d195cca295379699299c5fc10beba31c7"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Mar 01 13:19:07 2011 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Mar 01 13:19:07 2011 -0800"
      },
      "message": "ipv6: Consolidate route lookup sequences.\n\nRoute lookups follow a general pattern in the ipv6 code wherein\nwe first find the non-IPSEC route, potentially override the\nflow destination address due to ipv6 options settings, and then\nfinally make an IPSEC search using either xfrm_lookup() or\n__xfrm_lookup().\n\n__xfrm_lookup() is used when we want to generate a blackhole route\nif the key manager needs to resolve the IPSEC rules (in this case\n-EREMOTE is returned and the original \u0027dst\u0027 is left unchanged).\n\nOtherwise plain xfrm_lookup() is used and when asynchronous IPSEC\nresolution is necessary, we simply fail the lookup completely.\n\nAll of these cases are encapsulated into two routines,\nip6_dst_lookup_flow and ip6_sk_dst_lookup_flow.  The latter of which\nhandles unconnected UDP datagram sockets.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "04ed3e741d0f133e02bed7fa5c98edba128f90e7",
      "tree": "3dde4ca8306e98536faa69bccf0e47a2549c088f",
      "parents": [
        "57422dc530115e427dff464cc0a32bcd0efb5008"
      ],
      "author": {
        "name": "Michał Mirosław",
        "email": "mirq-linux@rere.qmqm.pl",
        "time": "Mon Jan 24 15:32:47 2011 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 24 15:32:47 2011 -0800"
      },
      "message": "net: change netdev-\u003efeatures to u32\n\nQuoting Ben Hutchings: we presumably won\u0027t be defining features that\ncan only be enabled on 64-bit architectures.\n\nOccurences found by `grep -r` on net/, drivers/net, include/\n\n[ Move features and vlan_features next to each other in\n  struct netdev, as per Eric Dumazet\u0027s suggestion -DaveM ]\n\nSigned-off-by: Michał Mirosław \u003cmirq-linux@rere.qmqm.pl\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "b4aa9e05a61b845541fa6f5b1d246976922601f0",
      "tree": "ca94478c3df281ab76a3399f5ba6341ade3f5791",
      "parents": [
        "1dc0f3c54ce1df957f99c17b145488fd03eb1a59",
        "4b8fe66300acb2fba8b16d62606e0d30204022fc"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Dec 17 12:27:22 2010 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Dec 17 12:27:22 2010 -0800"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6\n\nConflicts:\n\tdrivers/net/bnx2x/bnx2x.h\n\tdrivers/net/wireless/iwlwifi/iwl-1000.c\n\tdrivers/net/wireless/iwlwifi/iwl-6000.c\n\tdrivers/net/wireless/iwlwifi/iwl-core.h\n\tdrivers/vhost/vhost.c\n"
    },
    {
      "commit": "fcbdf09d9652c8919dcf47072e3ae7dcb4eb98ac",
      "tree": "51e3cc1fbd813a880ea09dc31a12683b73d87e05",
      "parents": [
        "2984961c388381c1830f95e1c2dc2137301b1009"
      ],
      "author": {
        "name": "Octavian Purdila",
        "email": "opurdila@ixiacom.com",
        "time": "Thu Dec 16 14:26:56 2010 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Dec 16 14:26:56 2010 -0800"
      },
      "message": "net: fix nulls list corruptions in sk_prot_alloc\n\nSpecial care is taken inside sk_port_alloc to avoid overwriting\nskc_node/skc_nulls_node. We should also avoid overwriting\nskc_bind_node/skc_portaddr_node.\n\nThe patch fixes the following crash:\n\n BUG: unable to handle kernel paging request at fffffffffffffff0\n IP: [\u003cffffffff812ec6dd\u003e] udp4_lib_lookup2+0xad/0x370\n [\u003cffffffff812ecc22\u003e] __udp4_lib_lookup+0x282/0x360\n [\u003cffffffff812ed63e\u003e] __udp4_lib_rcv+0x31e/0x700\n [\u003cffffffff812bba45\u003e] ? ip_local_deliver_finish+0x65/0x190\n [\u003cffffffff812bbbf8\u003e] ? ip_local_deliver+0x88/0xa0\n [\u003cffffffff812eda35\u003e] udp_rcv+0x15/0x20\n [\u003cffffffff812bba45\u003e] ip_local_deliver_finish+0x65/0x190\n [\u003cffffffff812bbbf8\u003e] ip_local_deliver+0x88/0xa0\n [\u003cffffffff812bb2cd\u003e] ip_rcv_finish+0x32d/0x6f0\n [\u003cffffffff8128c14c\u003e] ? netif_receive_skb+0x99c/0x11c0\n [\u003cffffffff812bb94b\u003e] ip_rcv+0x2bb/0x350\n [\u003cffffffff8128c14c\u003e] netif_receive_skb+0x99c/0x11c0\n\nSigned-off-by: Leonard Crestez \u003clcrestez@ixiacom.com\u003e\nSigned-off-by: Octavian Purdila \u003copurdila@ixiacom.com\u003e\nAcked-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "c07224005dd3fe746246acadc9be652a588a4d7f",
      "tree": "bafc0802c9a1e38c3a56a3feca1b3ea4e273e392",
      "parents": [
        "457de4383ec6144df7d5a82cdfb110c825305a51"
      ],
      "author": {
        "name": "Jiri Pirko",
        "email": "jpirko@redhat.com",
        "time": "Thu Dec 09 03:40:30 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Dec 10 14:05:09 2010 -0800"
      },
      "message": "net/ipv6/udp.c: fix typo in flush_stack()\n\nskb1 should be passed as parameter to sk_rcvqueues_full() here.\n\nSigned-off-by: Jiri Pirko \u003cjpirko@redhat.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "68835aba4d9b74e2f94106d13b6a4bddc447c4c8",
      "tree": "468a9465acfa027791facef13fb6ef5129dda257",
      "parents": [
        "defb3519a64141608725e2dac5a5aa9a3c644bae"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Tue Nov 30 19:04:07 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Dec 09 20:05:58 2010 -0800"
      },
      "message": "net: optimize INET input path further\n\nFollowup of commit b178bb3dfc30 (net: reorder struct sock fields)\n\nOptimize INET input path a bit further, by :\n\n1) moving sk_refcnt close to sk_lock.\n\nThis reduces number of dirtied cache lines by one on 64bit arches (and\n64 bytes cache line size).\n\n2) moving inet_daddr \u0026 inet_rcv_saddr at the beginning of sk\n\n(same cache line than hash / family / bound_dev_if / nulls_node)\n\nThis reduces number of accessed cache lines in lookups by one, and dont\nincrease size of inet and timewait socks.\ninet and tw sockets now share same place-holder for these fields.\n\nBefore patch :\n\noffsetof(struct sock, sk_refcnt) \u003d 0x10\noffsetof(struct sock, sk_lock) \u003d 0x40\noffsetof(struct sock, sk_receive_queue) \u003d 0x60\noffsetof(struct inet_sock, inet_daddr) \u003d 0x270\noffsetof(struct inet_sock, inet_rcv_saddr) \u003d 0x274\n\nAfter patch :\n\noffsetof(struct sock, sk_refcnt) \u003d 0x44\noffsetof(struct sock, sk_lock) \u003d 0x48\noffsetof(struct sock, sk_receive_queue) \u003d 0x68\noffsetof(struct inet_sock, inet_daddr) \u003d 0x0\noffsetof(struct inet_sock, inet_rcv_saddr) \u003d 0x4\n\ncompute_score() (udp or tcp) now use a single cache line per ignored\nitem, instead of two.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "c31504dc0d1dc853dcee509d9999169a9097a717",
      "tree": "8ee1d5616b7140759cf742ef89cf9f7ba1c01b20",
      "parents": [
        "213b15ca818adf7766cd7162c2159a6ecdd3bab8"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Mon Nov 15 19:58:26 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Nov 16 11:17:43 2010 -0800"
      },
      "message": "udp: use atomic_inc_not_zero_hint\n\nUDP sockets refcount is usually 2, unless an incoming frame is going to\nbe queued in receive or backlog queue.\n\nUsing atomic_inc_not_zero_hint() permits to reduce latency, because\nprocessor issues less memory transactions.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "0d7da9ddd9a4eb7808698d04b98bf9d62d02649b",
      "tree": "b170122c08d47be35a056782be54573ba19fe0b0",
      "parents": [
        "1c87733d0682547050ccccb400cdac425fa43b39"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Mon Oct 25 03:47:05 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Oct 25 14:18:28 2010 -0700"
      },
      "message": "net: add __rcu annotation to sk_filter\n\nAdd __rcu annotation to :\n        (struct sock)-\u003esk_filter\n\nAnd use appropriate rcu primitives to reduce sparse warnings if\nCONFIG_SPARSE_RCU_POINTER\u003dy\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "aa976fc011efa1f0e3290c6c9addf7c20757f885",
      "tree": "93e692330e1d8e3e366bb0fec71b394c5e79ee93",
      "parents": [
        "88440ae70eda83d0cc94148d404f4990c9f1289c"
      ],
      "author": {
        "name": "Balazs Scheidler",
        "email": "bazsi@balabit.hu",
        "time": "Thu Oct 21 16:05:41 2010 +0200"
      },
      "committer": {
        "name": "Patrick McHardy",
        "email": "kaber@trash.net",
        "time": "Thu Oct 21 16:05:41 2010 +0200"
      },
      "message": "tproxy: added udp6_lib_lookup function\n\nJust like with IPv4, we need access to the UDP hash table to look up local\nsockets, but instead of exporting the global udp_table, export a lookup\nfunction.\n\nSigned-off-by: Balazs Scheidler \u003cbazsi@balabit.hu\u003e\nSigned-off-by: KOVACS Krisztian \u003chidden@balabit.hu\u003e\nSigned-off-by: Patrick McHardy \u003ckaber@trash.net\u003e\n"
    },
    {
      "commit": "88440ae70eda83d0cc94148d404f4990c9f1289c",
      "tree": "1eb2d41db913c3e18e0846c756c317a6a6db7203",
      "parents": [
        "e97c3e278e951501c2f385de70c3ceacdea78c4a"
      ],
      "author": {
        "name": "Balazs Scheidler",
        "email": "bazsi@balabit.hu",
        "time": "Thu Oct 21 16:04:33 2010 +0200"
      },
      "committer": {
        "name": "Patrick McHardy",
        "email": "kaber@trash.net",
        "time": "Thu Oct 21 16:04:33 2010 +0200"
      },
      "message": "tproxy: added const specifiers to udp lookup functions\n\nThe parameters for various UDP lookup functions were non-const, even though\nthey could be const. TProxy has some const references and instead of\ndowncasting it, I added const specifiers along the path.\n\nSigned-off-by: Balazs Scheidler \u003cbazsi@balabit.hu\u003e\nSigned-off-by: KOVACS Krisztian \u003chidden@balabit.hu\u003e\nSigned-off-by: Patrick McHardy \u003ckaber@trash.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": "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": "20c59de2e6b6bc74bbf714dcd4e720afe8d516cf",
      "tree": "45e5c62e286368f8259b844cb7cf796d19066fb0",
      "parents": [
        "d92222e27fdc98d73df25f3d49fb1ff3a3369bec"
      ],
      "author": {
        "name": "Arnaud Ebalard",
        "email": "arno@natisbad.org",
        "time": "Tue Jun 01 21:35:01 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jun 02 07:08:31 2010 -0700"
      },
      "message": "ipv6: Refactor update of IPv6 flowi destination address for srcrt (RH) option\n\nThere are more than a dozen occurrences of following code in the\nIPv6 stack:\n\n    if (opt \u0026\u0026 opt-\u003esrcrt) {\n            struct rt0_hdr *rt0 \u003d (struct rt0_hdr *) opt-\u003esrcrt;\n            ipv6_addr_copy(\u0026final, \u0026fl.fl6_dst);\n            ipv6_addr_copy(\u0026fl.fl6_dst, rt0-\u003eaddr);\n            final_p \u003d \u0026final;\n    }\n\nReplace those with a helper. Note that the helper overrides final_p\nin all cases. This is ok as final_p was previously initialized to\nNULL when declared.\n\nSigned-off-by: Arnaud Ebalard \u003carno@natisbad.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "b1faf5666438090a4dc4fceac8502edc7788b7e3",
      "tree": "f90808dea27cc38aff6feed1782e2a5666fa6ee9",
      "parents": [
        "bc284f94f84c3d76e49c6f3df9028c503f9589d9"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Mon May 31 23:44:05 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon May 31 23:44:05 2010 -0700"
      },
      "message": "net: sock_queue_err_skb() dont mess with sk_forward_alloc\n\nCorrect sk_forward_alloc handling for error_queue would need to use a\nbacklog of frames that softirq handler could not deliver because socket\nis owned by user thread. Or extend backlog processing to be able to\nprocess normal and error packets.\n\nAnother possibility is to not use mem charge for error queue, this is\nwhat I implemented in this patch.\n\nNote: this reverts commit 29030374\n(net: fix sk_forward_alloc corruptions), since we dont need to lock\nsocket anymore.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "2903037400a26e7c0cc93ab75a7d62abfacdf485",
      "tree": "c29d8b3199d8fa52856e5edcd374411f962d7c11",
      "parents": [
        "7dfde179c38056b91d51e60f3d50902387f27c84"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Sat May 29 00:20:48 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat May 29 00:20:48 2010 -0700"
      },
      "message": "net: fix sk_forward_alloc corruptions\n\nAs David found out, sock_queue_err_skb() should be called with socket\nlock hold, or we risk sk_forward_alloc corruption, since we use non\natomic operations to update this field.\n\nThis patch adds bh_lock_sock()/bh_unlock_sock() pair to three spots.\n(BH already disabled)\n\n1) skb_tstamp_tx() \n2) Before calling ip_icmp_error(), in __udp4_lib_err() \n3) Before calling ipv6_icmp_error(), in __udp6_lib_err()\n\nReported-by: Anton Blanchard \u003canton@samba.org\u003e\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "8a74ad60a546b13bd1096b2a61a7a5c6fd9ae17c",
      "tree": "3110e7e59883597b5d0f617e8507e15b8f965f3f",
      "parents": [
        "a56635a56f2afb3d22d9ce07e8f8d69537416b2d"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Wed May 26 19:20:18 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu May 27 00:30:53 2010 -0700"
      },
      "message": "net: fix lock_sock_bh/unlock_sock_bh\n\nThis new sock lock primitive was introduced to speedup some user context\nsocket manipulation. But it is unsafe to protect two threads, one using\nregular lock_sock/release_sock, one using lock_sock_bh/unlock_sock_bh\n\nThis patch changes lock_sock_bh to be careful against \u0027owned\u0027 state.\nIf owned is found to be set, we must take the slow path.\nlock_sock_bh() now returns a boolean to say if the slow path was taken,\nand this boolean is used at unlock_sock_bh time to call the appropriate\nunlock function.\n\nAfter this change, BH are either disabled or enabled during the\nlock_sock_bh/unlock_sock_bh protected section. This might be misleading,\nso we rename these functions to lock_sock_fast()/unlock_sock_fast().\n\nReported-by: Anton Blanchard \u003canton@samba.org\u003e\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nTested-by: Anton Blanchard \u003canton@samba.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "d6bc0149d8f2300bffa03ea6fea3ca39744277a6",
      "tree": "5f9ecb7150071515e2b7f6557229cb7100549e53",
      "parents": [
        "575400bf5d57f53a767bc215bd709e65e5b27a5c"
      ],
      "author": {
        "name": "Bjørn Mork",
        "email": "bjorn@mork.no",
        "time": "Thu May 06 03:44:35 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu May 06 21:50:17 2010 -0700"
      },
      "message": "ipv6: udp: make short packet logging consistent with ipv4\n\nAdding addresses and ports to the short packet log message,\nlike ipv4/udp.c does it, makes these messages a lot more useful:\n\n[  822.182450] UDPv6: short packet: From [2001:db8:ffb4:3::1]:47839 23715/178 to [2001:db8:ffb4:3:5054:ff:feff:200]:1234\n\nThis requires us to drop logging in case pskb_may_pull() fails,\nwhich also is consistent with ipv4/udp.c\n\nSigned-off-by: Bjørn Mork \u003cbjorn@mork.no\u003e\nAcked-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "f84af32cbca70a3c6d30463dc08c7984af11c277",
      "tree": "06ede4b3ed91be899f8f29b4c7eb1fb76f1ade97",
      "parents": [
        "4b0b72f7dd617b13abd1b04c947e15873e011a24"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Wed Apr 28 15:31:51 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Apr 28 15:31:51 2010 -0700"
      },
      "message": "net: ip_queue_rcv_skb() helper\n\nWhen queueing a skb to socket, we can immediately release its dst if\ntarget socket do not use IP_CMSG_PKTINFO.\n\ntcp_data_queue() can drop dst too.\n\nThis to benefit from a hot cache line and avoid the receiver, possibly\non another cpu, to dirty this cache line himself.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "4b0b72f7dd617b13abd1b04c947e15873e011a24",
      "tree": "16fc7bc990fa47cccb62bdb34cb23bd3c26b7a50",
      "parents": [
        "cfc1fbb079b265bf69d4ceba590a2e2c1a1cde33"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Wed Apr 28 14:35:48 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Apr 28 14:35:48 2010 -0700"
      },
      "message": "net: speedup udp receive path\n\nSince commit 95766fff ([UDP]: Add memory accounting.), \neach received packet needs one extra sock_lock()/sock_release() pair.\n\nThis added latency because of possible backlog handling. Then later,\nticket spinlocks added yet another latency source in case of DDOS.\n\nThis patch introduces lock_sock_bh() and unlock_sock_bh()\nsynchronization primitives, avoiding one atomic operation and backlog\nprocessing.\n\nskb_free_datagram_locked() uses them instead of full blown\nlock_sock()/release_sock(). skb is orphaned inside locked section for\nproper socket memory reclaim, and finally freed outside of it.\n\nUDP receive path now take the socket spinlock only once.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "c377411f2494a931ff7facdbb3a6839b1266bcf6",
      "tree": "6846cdcec913f50839e3916856f78f7e059ff5fb",
      "parents": [
        "6e7676c1a76aed6e957611d8d7a9e5592e23aeba"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Tue Apr 27 15:13:20 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Apr 27 15:13:20 2010 -0700"
      },
      "message": "net: sk_add_backlog() take rmem_alloc into account\n\nCurrent socket backlog limit is not enough to really stop DDOS attacks,\nbecause user thread spend many time to process a full backlog each\nround, and user might crazy spin on socket lock.\n\nWe should add backlog size and receive_queue size (aka rmem_alloc) to\npace writers, and let user run without being slow down too much.\n\nIntroduce a sk_rcvqueues_full() helper, to avoid taking socket lock in\nstress situations.\n\nUnder huge stress from a multiqueue/RPS enabled NIC, a single flow udp\nreceiver can now process ~200.000 pps (instead of ~100 pps before the\npatch) on a 8 core machine.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "4b340ae20d0e2366792abe70f46629e576adaf5e",
      "tree": "b0c413a0348e722fbc23d45508224076b6e60f92",
      "parents": [
        "13b52cd44670e3359055e9918d0e766d89836425"
      ],
      "author": {
        "name": "Brian Haley",
        "email": "brian.haley@hp.com",
        "time": "Fri Apr 23 11:26:09 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Apr 23 23:35:29 2010 -0700"
      },
      "message": "IPv6: Complete IPV6_DONTFRAG support\n\nFinally add support to detect a local IPV6_DONTFRAG event\nand return the relevant data to the user if they\u0027ve enabled\nIPV6_RECVPATHMTU on the socket.  The next recvmsg() will\nreturn no data, but have an IPV6_PATHMTU as ancillary data.\n\nSigned-off-by: Brian Haley \u003cbrian.haley@hp.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "13b52cd44670e3359055e9918d0e766d89836425",
      "tree": "7685597f218fd02dab9abdb32ea0d4ec7c318027",
      "parents": [
        "793b14731686595a741d9f47726ad8b9a235385a"
      ],
      "author": {
        "name": "Brian Haley",
        "email": "brian.haley@hp.com",
        "time": "Fri Apr 23 11:26:08 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Apr 23 23:35:28 2010 -0700"
      },
      "message": "IPv6: Add dontfrag argument to relevant functions\n\nAdd dontfrag argument to relevant functions for\nIPV6_DONTFRAG support, as well as allowing the value\nto be passed-in via ancillary cmsg data.\n\nSigned-off-by: Brian Haley \u003cbrian.haley@hp.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "0eae88f31ca2b88911ce843452054139e028771f",
      "tree": "90f50197d8e1e50e3621e9c525bd4ca2634fe368",
      "parents": [
        "cb903bf4ee2d6e53210e2174d363e10698112042"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Tue Apr 20 19:06:52 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Apr 20 19:06:52 2010 -0700"
      },
      "message": "net: Fix various endianness glitches\n\nSparse can help us find endianness bugs, but we need to make some\ncleanups to be able to more easily spot real bugs.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "4a1032faac94ebbf647460ae3e06fc21146eb280",
      "tree": "7f31b97beb0406faa1523e619289ad0ab07c9787",
      "parents": [
        "ae4e8d63b5619d4d95f1d2bfa2b836caa6e62d06",
        "0eddb519b9127c73d53db4bf3ec1d45b13f844d1"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Apr 11 02:44:30 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Apr 11 02:44:30 2010 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of /home/davem/src/GIT/linux-2.6/\n"
    },
    {
      "commit": "1223c67c0938d2df309fde618bd82c87c8c1af04",
      "tree": "12445eb8f4ab8acece9cd96e337ce49b29e3f31a",
      "parents": [
        "2488f56d3699b84ee51d2940d1347345b8f9b0e1"
      ],
      "author": {
        "name": "Jorge Boncompte [DTI2]",
        "email": "jorge@dti2.net",
        "time": "Thu Apr 08 04:56:48 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Apr 08 11:29:13 2010 -0700"
      },
      "message": "udp: fix for unicast RX path optimization\n\nCommits 5051ebd275de672b807c28d93002c2fb0514a3c9 and\n5051ebd275de672b807c28d93002c2fb0514a3c9 (\"ipv[46]: udp: optimize unicast RX\npath\") broke some programs.\n\n\tAfter upgrading a L2TP server to 2.6.33 it started to fail, tunnels going up an\ndown, after the 10th tunnel came up. My modified rp-l2tp uses a global\nunconnected socket bound to (INADDR_ANY, 1701) and one connected socket per\ntunnel after parameter negotiation.\n\n\tAfter ten sockets were open and due to mixed parameters to\nudp[46]_lib_lookup2() kernel started to drop packets.\n\nSigned-off-by: Jorge Boncompte [DTI2] \u003cjorge@dti2.net\u003e\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "5a0e3ad6af8660be21ca98a971cd00f331318c05",
      "tree": "5bfb7be11a03176a87296a43ac6647975c00a1d1",
      "parents": [
        "ed391f4ebf8f701d3566423ce8f17e614cde9806"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 24 17:04:11 2010 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Mar 30 22:02:32 2010 +0900"
      },
      "message": "include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h\n\npercpu.h is included by sched.h and module.h and thus ends up being\nincluded when building most .c files.  percpu.h includes slab.h which\nin turn includes gfp.h making everything defined by the two files\nuniversally available and complicating inclusion dependencies.\n\npercpu.h -\u003e slab.h dependency is about to be removed.  Prepare for\nthis change by updating users of gfp and slab facilities include those\nheaders directly instead of assuming availability.  As this conversion\nneeds to touch large number of source files, the following script is\nused as the basis of conversion.\n\n  http://userweb.kernel.org/~tj/misc/slabh-sweep.py\n\nThe script does the followings.\n\n* Scan files for gfp and slab usages and update includes such that\n  only the necessary includes are there.  ie. if only gfp is used,\n  gfp.h, if slab is used, slab.h.\n\n* When the script inserts a new include, it looks at the include\n  blocks and try to put the new include such that its order conforms\n  to its surrounding.  It\u0027s put in the include block which contains\n  core kernel includes, in the same order that the rest are ordered -\n  alphabetical, Christmas tree, rev-Xmas-tree or at the end if there\n  doesn\u0027t seem to be any matching order.\n\n* If the script can\u0027t find a place to put a new include (mostly\n  because the file doesn\u0027t have fitting include block), it prints out\n  an error message indicating which .h file needs to be added to the\n  file.\n\nThe conversion was done in the following steps.\n\n1. The initial automatic conversion of all .c files updated slightly\n   over 4000 files, deleting around 700 includes and adding ~480 gfp.h\n   and ~3000 slab.h inclusions.  The script emitted errors for ~400\n   files.\n\n2. Each error was manually checked.  Some didn\u0027t need the inclusion,\n   some needed manual addition while adding it to implementation .h or\n   embedding .c file was more appropriate for others.  This step added\n   inclusions to around 150 files.\n\n3. The script was run again and the output was compared to the edits\n   from #2 to make sure no file was left behind.\n\n4. Several build tests were done and a couple of problems were fixed.\n   e.g. lib/decompress_*.c used malloc/free() wrappers around slab\n   APIs requiring slab.h to be added manually.\n\n5. The script was run on all .h files but without automatically\n   editing them as sprinkling gfp.h and slab.h inclusions around .h\n   files could easily lead to inclusion dependency hell.  Most gfp.h\n   inclusion directives were ignored as stuff from gfp.h was usually\n   wildly available and often used in preprocessor macros.  Each\n   slab.h inclusion directive was examined and added manually as\n   necessary.\n\n6. percpu.h was updated not to include slab.h.\n\n7. Build test were done on the following configurations and failures\n   were fixed.  CONFIG_GCOV_KERNEL was turned off for all tests (as my\n   distributed build env didn\u0027t work with gcov compiles) and a few\n   more options had to be turned off depending on archs to make things\n   build (like ipr on powerpc/64 which failed due to missing writeq).\n\n   * x86 and x86_64 UP and SMP allmodconfig and a custom test config.\n   * powerpc and powerpc64 SMP allmodconfig\n   * sparc and sparc64 SMP allmodconfig\n   * ia64 SMP allmodconfig\n   * s390 SMP allmodconfig\n   * alpha SMP allmodconfig\n   * um on x86_64 SMP allmodconfig\n\n8. percpu.h modifications were reverted so that it could be applied as\n   a separate patch and serve as bisection point.\n\nGiven the fact that I had only a couple of failures from tests on step\n6, I\u0027m fairly confident about the coverage of this conversion patch.\nIf there is a breakage, it\u0027s likely to be something in one of the arch\nheaders which should be easily discoverable easily on most builds of\nthe specific arch.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nGuess-its-ok-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\n"
    },
    {
      "commit": "a3a858ff18a72a8d388e31ab0d98f7e944841a62",
      "tree": "e51a59ce280f0aa818ac5e1d989bc8a137b7cd47",
      "parents": [
        "2499849ee8f513e795b9f2c19a42d6356e4943a4"
      ],
      "author": {
        "name": "Zhu Yi",
        "email": "yi.zhu@intel.com",
        "time": "Thu Mar 04 18:01:47 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Mar 05 13:34:03 2010 -0800"
      },
      "message": "net: backlog functions rename\n\nsk_add_backlog -\u003e __sk_add_backlog\nsk_add_backlog_limited -\u003e sk_add_backlog\n\nSigned-off-by: Zhu Yi \u003cyi.zhu@intel.com\u003e\nAcked-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "55349790d7cbf0d381873a7ece1dcafcffd4aaa9",
      "tree": "2f5cc194b8d7b2fd559c24fe2dfd946535923daa",
      "parents": [
        "6b03a53a5ab7ccf2d5d69f96cf1c739c4d2a8fb9"
      ],
      "author": {
        "name": "Zhu Yi",
        "email": "yi.zhu@intel.com",
        "time": "Thu Mar 04 18:01:42 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Mar 05 13:34:00 2010 -0800"
      },
      "message": "udp: use limited socket backlog\n\nMake udp adapt to the limited socket backlog change.\n\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: Alexey Kuznetsov \u003ckuznet@ms2.inr.ac.ru\u003e\nCc: \"Pekka Savola (ipv6)\" \u003cpekkas@netcore.fi\u003e\nCc: Patrick McHardy \u003ckaber@trash.net\u003e\nSigned-off-by: Zhu Yi \u003cyi.zhu@intel.com\u003e\nAcked-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "3ffe533c87281b68d469b279ff3a5056f9c75862",
      "tree": "456d4c8c877e937fd4919e4c30c75a7bb9f6651f",
      "parents": [
        "bbef49daca35d4fd21bf606a10b6980f17d9df5d"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Thu Feb 18 08:25:24 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Feb 18 14:30:17 2010 -0800"
      },
      "message": "ipv6: drop unused \"dev\" arg of icmpv6_send()\n\nDunno, what was the idea, it wasn\u0027t used for a long time.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "81d54ec8479a2c695760da81f05b5a9fb2dbe40a",
      "tree": "4a7da65da1b418e1e18291ddae807fad83dca1f0",
      "parents": [
        "55d955902a7f78e3e7c9ddbc71a4a050d9d44810"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Wed Feb 10 20:26:19 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Feb 12 16:51:10 2010 -0800"
      },
      "message": "udp: remove redundant variable\n\nThe variable \u0027copied\u0027 is used in udp_recvmsg() to emphasize that the passed\n\u0027len\u0027 is adjusted to fit the actual datagram length. But the same can be\ndone by adjusting \u0027len\u0027 directly. This patch thus removes the indirection.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "2c8c1e7297e19bdef3c178c3ea41d898a7716e3e",
      "tree": "4d336562e8d5379732a0646e17b0bb1750111ef6",
      "parents": [
        "72659ecce68588b74f6c46862c2b4cec137d7a5a"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Sun Jan 17 03:35:32 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Jan 17 19:16:02 2010 -0800"
      },
      "message": "net: spread __net_init, __net_exit\n\n__net_init/__net_exit are apparently not going away, so use them\nto full extent.\n\nIn some cases __net_init was removed, because it was called from\n__net_exit code.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "856540ee3116ac04a49bc06c2f30f54dd3faf7db",
      "tree": "842262f8d70efbc0ca73988370494a08bd52acad",
      "parents": [
        "246c65add098a5ec14310ea17f39fdd57ff8407d"
      ],
      "author": {
        "name": "Brian Haley",
        "email": "brian.haley@hp.com",
        "time": "Mon Nov 09 12:05:53 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Nov 10 20:54:44 2009 -0800"
      },
      "message": "IPv6: use ipv6_addr_v4mapped()\n\nChange udp6_portaddr_hash() to use ipv6_addr_v4mapped()\ninline instead of ipv6_addr_type().\n\nSigned-off-by: Brian Haley \u003cbrian.haley@hp.com\u003e\nAcked-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "30fff9231fad757c061285e347b33c5149c2c2e4",
      "tree": "79d07aba4b8de4367090442292e412d1ccf961ef",
      "parents": [
        "0ab365f463b9c5c8b76476a1808dfde1c38f6f19"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Mon Nov 09 05:26:33 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Nov 10 20:54:38 2009 -0800"
      },
      "message": "udp: bind() optimisation\n\nUDP bind() can be O(N^2) in some pathological cases.\n\nThanks to secondary hash tables, we can make it O(N)\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "f6b8f32ca71406de718391369490f6b1e81fe0bb",
      "tree": "6a9d65cc246c74a78d7274d1911baf38ffc8eaf0",
      "parents": [
        "a1ab77f97ed03f5dae66ae4c64375beffab83772"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Sun Nov 08 10:20:19 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Nov 08 20:53:10 2009 -0800"
      },
      "message": "udp: multicast RX should increment SNMP/sk_drops counter in allocation failures\n\nWhen skb_clone() fails, we should increment sk_drops and SNMP counters.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "a1ab77f97ed03f5dae66ae4c64375beffab83772",
      "tree": "04ad6bf5def42fc415b85f3e0fe1638e64b26eea",
      "parents": [
        "1240d1373cd7f874dd0f3057c3e9643e71ef75c6"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Sun Nov 08 10:18:52 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Nov 08 20:53:09 2009 -0800"
      },
      "message": "ipv6: udp: Optimise multicast reception\n\nIPV6 UDP multicast rx path is a bit complex and can hold a spinlock\nfor a long time.\n\nUsing a small (32 or 64 entries) stack of socket pointers can help\nto perform expensive operations (skb_clone(), udp_queue_rcv_skb())\noutside of the lock, in most cases.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "fddc17defa22d8caba1cdfb2e22b50bb4b9f35c0",
      "tree": "565a1232275c2abbed3d55950a73f647a66e1289",
      "parents": [
        "5051ebd275de672b807c28d93002c2fb0514a3c9"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Sun Nov 08 10:18:30 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Nov 08 20:53:07 2009 -0800"
      },
      "message": "ipv6: udp: optimize unicast RX path\n\nWe first locate the (local port) hash chain head\nIf few sockets are in this chain, we proceed with previous lookup algo.\n\nIf too many sockets are listed, we take a look at the secondary\n(port, address) hash chain.\n\nWe choose the shortest chain and proceed with a RCU lookup on the elected chain.\n\nBut, if we chose (port, address) chain, and fail to find a socket on given address,\n we must try another lookup on (port, in6addr_any) chain to find sockets not bound\nto a particular IP.\n\n-\u003e No extra cost for typical setups, where the first lookup will probabbly\nbe performed.\n\nRCU lookups everywhere, we dont acquire spinlock.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "d4cada4ae1c012815f95fa507eb86a0ae9d607d7",
      "tree": "23cdfb3763c9140ae095bf8095c3e6b16f7b48f3",
      "parents": [
        "fdcc8aa953a1123a289791dd192090651036d593"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Sun Nov 08 10:17:30 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Nov 08 20:53:05 2009 -0800"
      },
      "message": "udp: split sk_hash into two u16 hashes\n\nUnion sk_hash with two u16 hashes for udp (no extra memory taken)\n\nOne 16 bits hash on (local port) value (the previous udp \u0027hash\u0027)\n\nOne 16 bits hash on (local address, local port) values, initialized\nbut not yet used. This second hash is using jenkin hash for better\ndistribution.\n\nBecause the \u0027port\u0027 is xored later, a partial hash is performed\non local address + net_hash_mix(net)\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "230f9bb701d37ae9b48e96456689452978f5c439",
      "tree": "9d2690917533bbb4498c8c9df838de2d38360912",
      "parents": [
        "000ba2e43f33901859fd794bb33c885909d53b3b",
        "887e671f324d9898aaedb29a6ece6c853c394067"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Nov 06 00:55:55 2009 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Nov 06 00:55:55 2009 -0800"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6\n\nConflicts:\n\tdrivers/net/usb/cdc_ether.c\n\nAll CDC ethernet devices of type USB_CLASS_COMM need to use\n\u0027\u0026mbm_info\u0027.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "13f18aa05f5abe135f47b6417537ae2b2fedc18c",
      "tree": "3bcf8c52bd9d957fd09a87224c9d44566071f981",
      "parents": [
        "89794a6f3bf6db552b1ff4d2ad42fdd8739ac2a2"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Nov 05 20:44:37 2009 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Nov 05 21:40:17 2009 -0800"
      },
      "message": "net: drop capability from protocol definitions\n\nstruct can_proto had a capability field which wasn\u0027t ever used.  It is\ndropped entirely.\n\nstruct inet_protosw had a capability field which can be more clearly\nexpressed in the code by just checking if sock-\u003etype \u003d SOCK_RAW.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\nAcked-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "9d410c796067686b1e032d54ce475b7055537138",
      "tree": "4442bdbe4a4be1cce024f2e83a12b7404ef935fa",
      "parents": [
        "63ca2d74ea4f9c7a7ac082c915609a7b224908e7"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Fri Oct 30 05:03:53 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Oct 30 12:25:12 2009 -0700"
      },
      "message": "net: fix sk_forward_alloc corruption\n\nOn UDP sockets, we must call skb_free_datagram() with socket locked,\nor risk sk_forward_alloc corruption. This requirement is not respected\nin SUNRPC.\n\nAdd a convenient helper, skb_free_datagram_locked() and use it in SUNRPC\n\nReported-by: Francis Moreau \u003cfrancis.moro@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": "8edf19c2fe028563fc6ea9cb1995b8ee4172d4b6",
      "tree": "55c423bc7e13e99e816d95886f7d340dc1163ffa",
      "parents": [
        "c720c7e8383aff1cb219bddf474ed89d850336e3"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Thu Oct 15 00:12:40 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Oct 18 18:52:54 2009 -0700"
      },
      "message": "net: sk_drops consolidation part 2\n\n- skb_kill_datagram() can increment sk-\u003esk_drops itself, not callers.\n\n- UDP on IPV4 \u0026 IPV6 dropped frames (because of bad checksum or policy checks) increment sk_drops\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "c720c7e8383aff1cb219bddf474ed89d850336e3",
      "tree": "4f12337e6690fccced376db9f501eaf98614a65e",
      "parents": [
        "988ade6b8e27e79311812f83a87b5cea11fabcd7"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Thu Oct 15 06:30:45 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Oct 18 18:52:53 2009 -0700"
      },
      "message": "inet: rename some inet_sock fields\n\nIn order to have better cache layouts of struct sock (separate zones\nfor rx/tx paths), we need this preliminary patch.\n\nGoal is to transfert fields used at lookup time in the first\nread-mostly cache line (inside struct sock_common) and move sk_refcnt\nto a separate cache line (only written by rx path)\n\nThis patch adds inet_ prefix to daddr, rcv_saddr, dport, num, saddr,\nsport and id fields. This allows a future patch to define these\nfields as macros, like sk_refcnt, without name clashes.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "766e9037cc139ee25ed93ee5ad11e1450c4b99f6",
      "tree": "062702b8edf203a6e91d1e6853ab24989617d758",
      "parents": [
        "48bccd25df71f4f8177cb800f4b288222eb57761"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Wed Oct 14 20:40:11 2009 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Oct 14 20:40:11 2009 -0700"
      },
      "message": "net: sk_drops consolidation\n\nsock_queue_rcv_skb() can update sk_drops itself, removing need for\ncallers to take care of it. This is more consistent since\nsock_queue_rcv_skb() also reads sk_drops when queueing a skb.\n\nThis adds sk_drops managment to many protocols that not cared yet.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "3b885787ea4112eaa80945999ea0901bf742707f",
      "tree": "06fc15f8e8083d5652ccb4d06653d9812dce9c0b",
      "parents": [
        "d5e63bded6e819ca77ee1a1d97c783a31f6caf30"
      ],
      "author": {
        "name": "Neil Horman",
        "email": "nhorman@tuxdriver.com",
        "time": "Mon Oct 12 13:26:31 2009 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Oct 12 13:26:31 2009 -0700"
      },
      "message": "net: Generalize socket rx gap / receive queue overflow cmsg\n\nCreate a new socket level option to report number of queue overflows\n\nRecently I augmented the AF_PACKET protocol to report the number of frames lost\non the socket receive queue between any two enqueued frames.  This value was\nexported via a SOL_PACKET level cmsg.  AFter I completed that work it was\nrequested that this feature be generalized so that any datagram oriented socket\ncould make use of this option.  As such I\u0027ve created this patch, It creates a\nnew SOL_SOCKET level option called SO_RXQ_OVFL, which when enabled exports a\nSOL_SOCKET level cmsg that reports the nubmer of times the sk_receive_queue\noverflowed between any two given frames.  It also augments the AF_PACKET\nprotocol to take advantage of this new feature (as it previously did not touch\nsk-\u003esk_drops, which this patch uses to record the overflow count).  Tested\nsuccessfully by me.\n\nNotes:\n\n1) Unlike my previous patch, this patch simply records the sk_drops value, which\nis not a number of drops between packets, but rather a total number of drops.\nDeltas must be computed in user space.\n\n2) While this patch currently works with datagram oriented protocols, it will\nalso be accepted by non-datagram oriented protocols. I\u0027m not sure if thats\nagreeable to everyone, but my argument in favor of doing so is that, for those\nprotocols which aren\u0027t applicable to this option, sk_drops will always be zero,\nand reporting no drops on a receive queue that isn\u0027t used for those\nnon-participating protocols seems reasonable to me.  This also saves us having\nto code in a per-protocol opt in mechanism.\n\n3) This applies cleanly to net-next assuming that commit\n977750076d98c7ff6cbda51858bb5a5894a9d9ab (my af packet cmsg patch) is reverted\n\nSigned-off-by: Neil Horman \u003cnhorman@tuxdriver.com\u003e\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "f86dcc5aa8c7908f2c287e7a211228df599e3e71",
      "tree": "1721c94d0254b337b0668b2e331771dfef4b142d",
      "parents": [
        "8a6dfd43d1891882f8ca05d73aa7735fb0edae3b"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Wed Oct 07 00:37:59 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Oct 07 22:00:22 2009 -0700"
      },
      "message": "udp: dynamically size hash tables at boot time\n\nUDP_HTABLE_SIZE was initialy defined to 128, which is a bit small for\nseveral setups.\n\n4000 active UDP sockets -\u003e 32 sockets per chain in average. An\nincoming frame has to lookup all sockets to find best match, so long\nchains hurt latency.\n\nInstead of a fixed size hash table that cant be perfect for every\nneeds, let UDP stack choose its table size at boot time like tcp/ip\nroute, using alloc_large_system_hash() helper\n\nAdd an optional boot parameter, uhash_entries\u003dx so that an admin can\nforce a size between 256 and 65536 if needed, like thash_entries and\nrhash_entries.\n\ndmesg logs two new lines :\n[    0.647039] UDP hash table entries: 512 (order: 0, 4096 bytes)\n[    0.647099] UDP Lite hash table entries: 512 (order: 0, 4096 bytes)\n\nMaximal size on 64bit arches would be 65536 slots, ie 1 MBytes for non\ndebugging spinlocks.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "b301e82cf8104cfddbe5452ebe625bab49597c64",
      "tree": "49d7f8c91833e0658bf4074c0022bbf34790ce47",
      "parents": [
        "86c36ce45dc2e2f022562c6481cd778f4cc381a9"
      ],
      "author": {
        "name": "Brian Haley",
        "email": "brian.haley@hp.com",
        "time": "Wed Oct 07 13:58:25 2009 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Oct 07 13:58:25 2009 -0700"
      },
      "message": "IPv6: use ipv6_addr_set_v4mapped()\n\nMight as well use the ipv6_addr_set_v4mapped() inline we created last\nyear.\n\nSigned-off-by: Brian Haley \u003cbrian.haley@hp.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "51953d5bc43e468f24cc573a45cde1d32af129b8",
      "tree": "e275eb5019dc07bdea3ac61b6198c5c410c49e41",
      "parents": [
        "d73d3a8cb4723e161589864741d8528d70b350eb"
      ],
      "author": {
        "name": "Brian Haley",
        "email": "brian.haley@hp.com",
        "time": "Mon Oct 05 08:24:16 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Oct 07 01:10:45 2009 -0700"
      },
      "message": "Use sk_mark for IPv6 routing lookups\n\nAtis Elsts wrote:\n\u003e Not sure if there is need to fill the mark from skb in tunnel xmit functions. In any case, it\u0027s not done for GRE or IPIP tunnels at the moment.\n\nOk, I\u0027ll just drop that part, I\u0027m not sure what should be done in this case.\n\n\u003e Also, in this patch you are doing that for SIT (v6-in-v4) tunnels only, and not doing it for v4-in-v6 or v6-in-v6 tunnels. Any reason for that?\n\nI just sent that patch out too quickly, here\u0027s a better one with the updates.\n\nAdd support for IPv6 route lookups using sk_mark.\n\nSigned-off-by: Brian Haley \u003cbrian.haley@hp.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "b7058842c940ad2c08dd829b21e5c92ebe3b8758",
      "tree": "5fe78d599fc345ca0bcd4b083b79095a54b2921b",
      "parents": [
        "eb1cf0f8f7a9e5a6d573d5bd72c015686a042db0"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Sep 30 16:12:20 2009 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Sep 30 16:12:20 2009 -0700"
      },
      "message": "net: Make setsockopt() optlen be unsigned.\n\nThis provides safety against negative optlen at the type\nlevel instead of depending upon (sometimes non-trivial)\nchecks against this sprinkled all over the the place, in\neach and every implementation.\n\nBased upon work done by Arjan van de Ven and feedback\nfrom Linus Torvalds.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "41135cc836a1abeb12ca1416bdb29e87ad021153",
      "tree": "01c402f2fb9ac494dc3655a17e92072b170b7c1f",
      "parents": [
        "32613090a96dba2ca2cc524c8d4749d3126fdde5"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon Sep 14 12:22:28 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Sep 14 17:03:05 2009 -0700"
      },
      "message": "net: constify struct inet6_protocol\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "6ce9e7b5fe3195d1ae6e3a0753d4ddcac5cd699e",
      "tree": "d7228b3ea7000bc29b959556d8cb264b12365586",
      "parents": [
        "2e59af3dcbdf11635c03f22bfc9706744465d589"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Wed Sep 02 18:05:33 2009 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Sep 02 18:05:33 2009 -0700"
      },
      "message": "ip: Report qdisc packet drops\n\nChristoph Lameter pointed out that packet drops at qdisc level where not\naccounted in SNMP counters. Only if application sets IP_RECVERR, drops\nare reported to user (-ENOBUFS errors) and SNMP counters updated.\n\nIP_RECVERR is used to enable extended reliable error message passing,\nbut these are not needed to update system wide SNMP stats.\n\nThis patch changes things a bit to allow SNMP counters to be updated,\nregardless of IP_RECVERR being set or not on the socket.\n\nExample after an UDP tx flood\n# netstat -s \n...\nIP:\n    1487048 outgoing packets dropped\n...\nUdp:\n...\n    SndbufErrors: 1487048\n\n\nsend() syscalls, do however still return an OK status, to not\nbreak applications.\n\nNote : send() manual page explicitly says for -ENOBUFS error :\n\n \"The output queue for a network interface was full.\n  This generally indicates that the interface has stopped sending,\n  but may be caused by transient congestion.\n  (Normally, this does not occur in Linux. Packets are just silently\n  dropped when a device queue overflows.) \"\n\nThis is not true for IP_RECVERR enabled sockets : a send() syscall\nthat hit a qdisc drop returns an ENOBUFS error.\n\nMany thanks to Christoph, David, and last but not least, Alexey !\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "e651f03afe833326faa0abe55948c1c6cfd0b8ac",
      "tree": "77058921e3842568e885f23b7b6829c628a0051b",
      "parents": [
        "9ec04da7489d2c9ae01ea6e9b5fa313ccf3d35fb"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Sun Aug 09 08:12:48 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Aug 13 16:43:31 2009 -0700"
      },
      "message": "inet6: Conversion from u8 to int\n\nThis replaces assignments of the type \"int on LHS\" \u003d \"u8 on RHS\" with\nsimpler code. The LHS can express all of the unsigned right hand side\nvalues, hence the assigned value can not be negative.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "ba73542585a4a3c8a708f502e62e6e63dd74b66c",
      "tree": "5dbb997e5f2f0eeb1cbc03000f8121b322b254cd",
      "parents": [
        "7ea2f2c5a66e4e9a8d96296ac47ad895c467ee1d"
      ],
      "author": {
        "name": "Sridhar Samudrala",
        "email": "sri@us.ibm.com",
        "time": "Thu Jul 09 08:10:04 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Jul 12 14:29:29 2009 -0700"
      },
      "message": "udpv6: Handle large incoming UDP/IPv6 packets and support software UFO\n\n- validate and forward GSO UDP/IPv6 packets from untrusted sources.\n- do software UFO if the outgoing device doesn\u0027t support UFO.\n\nSigned-off-by: Sridhar Samudrala \u003csri@us.ibm.com\u003e\nAcked-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "493c6be3fedfe24aa676949b237b9b104d911abf",
      "tree": "9600f2491c61e1cac07b6da334c55536de7946c9",
      "parents": [
        "d7ca4cc01fd154f2da30ae6dae160fa5800af758"
      ],
      "author": {
        "name": "Sridhar Samudrala",
        "email": "sri@us.ibm.com",
        "time": "Thu Jul 09 08:09:54 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Jul 12 14:29:24 2009 -0700"
      },
      "message": "udpv6: Fix HW checksum support for outgoing UFO packets\n\n- add HW checksum support for outgoing large UDP/IPv6 packets destined for\n  a UFO enabled device.\n\nSigned-off-by: Sridhar Samudrala \u003csri@us.ibm.com\u003e\nAcked-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "d5fdd6babcfc2b0e6a8da1acf492a69fb54b4c47",
      "tree": "e4ebdb5d6c4b1ddc16f83e701e3e6038c379a497",
      "parents": [
        "0cf08dcb78e8d61b6d4b2eb5cdb296d969971626"
      ],
      "author": {
        "name": "Brian Haley",
        "email": "brian.haley@hp.com",
        "time": "Tue Jun 23 04:31:07 2009 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jun 23 04:31:07 2009 -0700"
      },
      "message": "ipv6: Use correct data types for ICMPv6 type and code\n\nChange all the code that deals directly with ICMPv6 type and code\nvalues to use u8 instead of a signed int as that\u0027s the actual data\ntype.\n\nSigned-off-by: Brian Haley \u003cbrian.haley@hp.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "31e6d363abcd0d05766c82f1a9c905a4c974a199",
      "tree": "f2b5c46354d95f91e743ae748b8add0de8bffd17",
      "parents": [
        "d3b238a03efd6d644ff93c8b10a1d38a596f2e34"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Wed Jun 17 19:05:41 2009 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Jun 18 00:29:12 2009 -0700"
      },
      "message": "net: correct off-by-one write allocations reports\n\ncommit 2b85a34e911bf483c27cfdd124aeb1605145dc80\n(net: No more expensive sock_hold()/sock_put() on each tx)\nchanged initial sk_wmem_alloc value.\n\nWe need to take into account this offset when reporting\nsk_wmem_alloc to user, in PROC_FS files or various\nioctls (SIOCOUTQ/TIOCOUTQ)\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "adf30907d63893e4208dfe3f5c88ae12bc2f25d5",
      "tree": "0f07542bb95de2ad537540868aba6cf87a86e17d",
      "parents": [
        "511c3f92ad5b6d9f8f6464be1b4f85f0422be91a"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Tue Jun 02 05:19:30 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jun 03 02:51:04 2009 -0700"
      },
      "message": "net: skb-\u003edst accessors\n\nDefine three accessors to get/set dst attached to a skb\n\nstruct dst_entry *skb_dst(const struct sk_buff *skb)\n\nvoid skb_dst_set(struct sk_buff *skb, struct dst_entry *dst)\n\nvoid skb_dst_drop(struct sk_buff *skb)\nThis one should replace occurrences of :\ndst_release(skb-\u003edst)\nskb-\u003edst \u003d NULL;\n\nDelete skb-\u003edst field\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "499923c7a3254971873e55a1690d07d3700eea47",
      "tree": "42c5c7281d9edd02e8130ee72306a5f5d8a2f367",
      "parents": [
        "48f6e8990858fc9a0ca7d3c9347e6774eb941dba"
      ],
      "author": {
        "name": "Vlad Yasevich",
        "email": "vladislav.yasevich@hp.com",
        "time": "Thu Apr 09 17:37:33 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Apr 11 01:53:06 2009 -0700"
      },
      "message": "ipv6: Fix NULL pointer dereference with time-wait sockets\n\nCommit b2f5e7cd3dee2ed721bf0675e1a1ddebb849aee6\n(ipv6: Fix conflict resolutions during ipv6 binding)\nintroduced a regression where time-wait sockets were\nnot treated correctly.  This resulted in the following:\n\nBUG: unable to handle kernel NULL pointer dereference at 0000000000000062\nIP: [\u003cffffffff805d7d61\u003e] ipv4_rcv_saddr_equal+0x61/0x70\n...\nCall Trace:\n[\u003cffffffffa033847b\u003e] ipv6_rcv_saddr_equal+0x1bb/0x250 [ipv6]\n[\u003cffffffffa03505a8\u003e] inet6_csk_bind_conflict+0x88/0xd0 [ipv6]\n[\u003cffffffff805bb18e\u003e] inet_csk_get_port+0x1ee/0x400\n[\u003cffffffffa0319b7f\u003e] inet6_bind+0x1cf/0x3a0 [ipv6]\n[\u003cffffffff8056d17c\u003e] ? sockfd_lookup_light+0x3c/0xd0\n[\u003cffffffff8056ed49\u003e] sys_bind+0x89/0x100\n[\u003cffffffff80613ea2\u003e] ? trace_hardirqs_on_thunk+0x3a/0x3c\n[\u003cffffffff8020bf9b\u003e] system_call_fastpath+0x16/0x1b\n\nTested-by: Brian Haley \u003cbrian.haley@hp.com\u003e\nTested-by: Ed Tomlinson \u003cedt@aei.ca\u003e\nSigned-off-by: Vlad Yasevich \u003cvladislav.yasevich@hp.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "b2f5e7cd3dee2ed721bf0675e1a1ddebb849aee6",
      "tree": "a7b48c260a3cb0050ad6198c6a50b52b318dfcb8",
      "parents": [
        "63d9950b08184e6531adceb65f64b429909cc101"
      ],
      "author": {
        "name": "Vlad Yasevich",
        "email": "vladislav.yasevich@hp.com",
        "time": "Tue Mar 24 16:24:51 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Mar 24 19:49:11 2009 -0700"
      },
      "message": "ipv6: Fix conflict resolutions during ipv6 binding\n\nThe ipv6 version of bind_conflict code calls ipv6_rcv_saddr_equal()\nwhich at times wrongly identified intersections between addresses.\nIt particularly broke down under a few instances and caused erroneous\nbind conflicts.\n\nSigned-off-by: Vlad Yasevich \u003cvladislav.yasevich@hp.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "9f690db7ff4cb32493c0b0b13334cc4f5fd49a6b",
      "tree": "c4f3dfb17ba368dffc5da8a8ffe575e0f99065e7",
      "parents": [
        "f250dcdac111a8369220b8e192eae6c56dc1098a"
      ],
      "author": {
        "name": "Yang Hongyang",
        "email": "yanghy@cn.fujitsu.com",
        "time": "Tue Dec 16 02:08:29 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Dec 16 02:08:29 2008 -0800"
      },
      "message": "ipv6: fix the outgoing interface selection order in udpv6_sendmsg()\n\n1.When no interface is specified in an IPV6_PKTINFO ancillary data\n  item, the interface specified in an IPV6_PKTINFO sticky optionis \n  is used.\n\nRFC3542:\n6.7.  Summary of Outgoing Interface Selection\n\n   This document and [RFC-3493] specify various methods that affect the\n   selection of the packet\u0027s outgoing interface.  This subsection\n   summarizes the ordering among those in order to ensure deterministic\n   behavior.\n\n   For a given outgoing packet on a given socket, the outgoing interface\n   is determined in the following order:\n\n   1. if an interface is specified in an IPV6_PKTINFO ancillary data\n      item, the interface is used.\n\n   2. otherwise, if an interface is specified in an IPV6_PKTINFO sticky\n      option, the interface is used.\n\nSigned-off-by: Yang Hongyang \u003cyanghy@cn.fujitsu.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "52479b623d3d41df84c499325b6a8c7915413032",
      "tree": "196f303f296b53dc89a05954d9c03226a9b4158b",
      "parents": [
        "cdcbca7c1f1946758cfacb69bc1c7eeaccb11e2d"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Tue Nov 25 17:35:18 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Nov 25 17:35:18 2008 -0800"
      },
      "message": "netns xfrm: lookup in netns\n\nPass netns to xfrm_lookup()/__xfrm_lookup(). For that pass netns\nto flow_cache_lookup() and resolver callback.\n\nTake it from socket or netdevice. Stub DECnet to init_net.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "88ab1932eac721c6e7336708558fa5ed02c85c80",
      "tree": "c8788a1e3de08100bca341fa4180adfe5d02880f",
      "parents": [
        "bbaffaca4810de1a25e32ecaf836eeaacc7a3d11"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Sun Nov 16 19:39:21 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Nov 16 19:39:21 2008 -0800"
      },
      "message": "udp: Use hlist_nulls in UDP RCU code\n\nThis is a straightforward patch, using hlist_nulls infrastructure.\n\nRCUification already done on UDP two weeks ago.\n\nUsing hlist_nulls permits us to avoid some memory barriers, both\nat lookup time and delete time.\n\nPatch is large because it adds new macros to include/net/sock.h.\nThese macros will be used by TCP \u0026 DCCP in next patch.\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "9eeda9abd1faf489f3df9a1f557975f4c8650363",
      "tree": "3e0a58e25b776cfbee193195460324dccb1886c7",
      "parents": [
        "61c9eaf90081cbe6dc4f389e0056bff76eca19ec",
        "4bab0ea1d42dd1927af9df6fbf0003fc00617c50"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Nov 06 22:43:03 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Nov 06 22:43:03 2008 -0800"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6\n\nConflicts:\n\n\tdrivers/net/wireless/ath5k/base.c\n\tnet/8021q/vlan_core.c\n"
    },
    {
      "commit": "0856f93958c488f0cc656be53c26dfd20663bdb3",
      "tree": "bba86ff48a9eef920fafde53127f7a3f5fc67bd1",
      "parents": [
        "f26ba1751145edbf52b2c89a40e389f2fbdfc1af"
      ],
      "author": {
        "name": "Wei Yongjun",
        "email": "yjwei@cn.fujitsu.com",
        "time": "Sun Nov 02 16:14:27 2008 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Nov 02 23:52:46 2008 -0800"
      },
      "message": "udp: Fix the SNMP counter of UDP_MIB_INERRORS\n\nUDP packets received in udpv6_recvmsg() are not only IPv6 UDP packets, but\nalso have IPv4 UDP packets, so when do the counter of UDP_MIB_INERRORS in\nudpv6_recvmsg(), we should check whether the packet is a IPv6 UDP packet\nor a IPv4 UDP packet.\n\nSigned-off-by: Wei Yongjun \u003cyjwei@cn.fujitsu.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "f26ba1751145edbf52b2c89a40e389f2fbdfc1af",
      "tree": "abb81ca460a07a99852f9c579d4c3324faacc801",
      "parents": [
        "70d9d15833864e7120c3ffcfdbd6fa61f5f9726a"
      ],
      "author": {
        "name": "Wei Yongjun",
        "email": "yjwei@cn.fujitsu.com",
        "time": "Sun Nov 02 16:11:01 2008 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Nov 02 23:52:45 2008 -0800"
      },
      "message": "udp: Fix the SNMP counter of UDP_MIB_INDATAGRAMS\n\nIf UDP echo is sent to xinetd/echo-dgram, the UDP reply will be received\nat the sender. But the SNMP counter of UDP_MIB_INDATAGRAMS will be not\nincreased, UDP6_MIB_INDATAGRAMS will be increased instead.\n\n  Endpoint A                      Endpoint B\n  UDP Echo request -----------\u003e\n  (IPv4, Dst port\u003d7)\n                   \u003c----------    UDP Echo Reply\n                                  (IPv4, Src port\u003d7)\n\nThis bug is come from this patch cb75994ec311b2cd50e5205efdcc0696abd6675d.\n\nIt do counter UDP[6]_MIB_INDATAGRAMS until udp[v6]_recvmsg. Because\nxinetd used IPv6 socket to receive UDP messages, thus, when received\nUDP packet, the UDP6_MIB_INDATAGRAMS will be increased in function\nudpv6_recvmsg() even if the packet is a IPv4 UDP packet.\n\nThis patch fixed the problem.\n\nSigned-off-by: Wei Yongjun \u003cyjwei@cn.fujitsu.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "920a46115ca3fa88990276d98520abab85495b2d",
      "tree": "a0960e925f2426da9766acfed2dbee144f30299c",
      "parents": [
        "d1a203eac0ec13cd1c0ba610fe7a55c9bc40473b"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Sat Nov 01 21:22:23 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Nov 01 21:22:23 2008 -0700"
      },
      "message": "udp: multicast packets need to check namespace\n\nCurrent UDP multicast delivery is not namespace aware.\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nAcked-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "96631ed16c514cf8b28fab991a076985ce378c26",
      "tree": "60023b60c6eaf2acdc8fcad258585e4425ebaf91",
      "parents": [
        "f52b5054ec108aaa9e903850d6b62af8ae3fe6ae"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Wed Oct 29 11:19:58 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Oct 29 11:19:58 2008 -0700"
      },
      "message": "udp: introduce sk_for_each_rcu_safenext()\n\nCorey Minyard found a race added in commit 271b72c7fa82c2c7a795bc16896149933110672d\n(udp: RCU handling for Unicast packets.)\n\n \"If the socket is moved from one list to another list in-between the\n time the hash is calculated and the next field is accessed, and the\n socket has moved to the end of the new list, the traversal will not\n complete properly on the list it should have, since the socket will\n be on the end of the new list and there\u0027s not a way to tell it\u0027s on a\n new list and restart the list traversal.  I think that this can be\n solved by pre-fetching the \"next\" field (with proper barriers) before\n checking the hash.\"\n\nThis patch corrects this problem, introducing a new\nsk_for_each_rcu_safenext() macro.\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "271b72c7fa82c2c7a795bc16896149933110672d",
      "tree": "5634b95c04b4a7ac9babf2d8ac34cfb6c38a8f83",
      "parents": [
        "645ca708f936b2fbeb79e52d7823e3eb2c0905f8"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Wed Oct 29 02:11:14 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Oct 29 02:11:14 2008 -0700"
      },
      "message": "udp: RCU handling for Unicast packets.\n\nGoals are :\n\n1) Optimizing handling of incoming Unicast UDP frames, so that no memory\n writes should happen in the fast path.\n\n Note: Multicasts and broadcasts still will need to take a lock,\n because doing a full lockless lookup in this case is difficult.\n\n2) No expensive operations in the socket bind/unhash phases :\n  - No expensive synchronize_rcu() calls.\n\n  - No added rcu_head in socket structure, increasing memory needs,\n  but more important, forcing us to use call_rcu() calls,\n  that have the bad property of making sockets structure cold.\n  (rcu grace period between socket freeing and its potential reuse\n   make this socket being cold in CPU cache).\n  David did a previous patch using call_rcu() and noticed a 20%\n  impact on TCP connection rates.\n  Quoting Cristopher Lameter :\n   \"Right. That results in cacheline cooldown. You\u0027d want to recycle\n    the object as they are cache hot on a per cpu basis. That is screwed\n    up by the delayed regular rcu processing. We have seen multiple\n    regressions due to cacheline cooldown.\n    The only choice in cacheline hot sensitive areas is to deal with the\n    complexity that comes with SLAB_DESTROY_BY_RCU or give up on RCU.\"\n\n  - Because udp sockets are allocated from dedicated kmem_cache,\n  use of SLAB_DESTROY_BY_RCU can help here.\n\nTheory of operation :\n---------------------\n\nAs the lookup is lockfree (using rcu_read_lock()/rcu_read_unlock()),\nspecial attention must be taken by readers and writers.\n\nUse of SLAB_DESTROY_BY_RCU is tricky too, because a socket can be freed,\nreused, inserted in a different chain or in worst case in the same chain\nwhile readers could do lookups in the same time.\n\nIn order to avoid loops, a reader must check each socket found in a chain\nreally belongs to the chain the reader was traversing. If it finds a\nmismatch, lookup must start again at the begining. This *restart* loop\nis the reason we had to use rdlock for the multicast case, because\nwe dont want to send same message several times to the same socket.\n\nWe use RCU only for fast path.\nThus, /proc/net/udp still takes spinlocks.\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "645ca708f936b2fbeb79e52d7823e3eb2c0905f8",
      "tree": "b384696994ee3cb04759a7bfffc29a48e4bf40f6",
      "parents": [
        "b189db5d299c6824780af5590564ff608adb3dea"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Wed Oct 29 01:41:45 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Oct 29 01:41:45 2008 -0700"
      },
      "message": "udp: introduce struct udp_table and multiple spinlocks\n\nUDP sockets are hashed in a 128 slots hash table.\n\nThis hash table is protected by *one* rwlock.\n\nThis rwlock is readlocked each time an incoming UDP message is handled.\n\nThis rwlock is writelocked each time a socket must be inserted in\nhash table (bind time), or deleted from this table (close time)\n\nThis is not scalable on SMP machines :\n\n1) Even in read mode, lock() and unlock() are atomic operations and\n must dirty a contended cache line, shared by all cpus.\n\n2) A writer might be starved if many readers are \u0027in flight\u0027. This can\n happen on a machine with some NIC receiving many UDP messages. User\n process can be delayed a long time at socket creation/dismantle time.\n\nThis patch prepares RCU migration, by introducing \u0027struct udp_table\nand struct udp_hslot\u0027, and using one spinlock per chain, to reduce\ncontention on central rwlock.\n\nIntroducing one spinlock per chain reduces latencies, for port\nrandomization on heavily loaded UDP servers. This also speedup\nbindings to specific ports.\n\nudp_lib_unhash() was uninlined, becoming to big.\n\nSome cleanups were done to ease review of following patch\n(RCUification of UDP Unicast lookups)\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    }
  ],
  "next": "23542618deb77cfed312842fe8c41ed19fb16470"
}
