)]}'
{
  "log": [
    {
      "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": "4bc2f18ba4f22a90ab593c0a580fc9a19c4777b6",
      "tree": "bb39f427bd468d0e34a73ebc788db726406fa261",
      "parents": [
        "ba80a2522899ea71a5b201bae60bdfd99126af95"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Fri Jul 09 21:22:10 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jul 12 12:57:54 2010 -0700"
      },
      "message": "net/ipv4: EXPORT_SYMBOL cleanups\n\nCodingStyle cleanups\n\nEXPORT_SYMBOL should immediately follow the symbol declaration.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "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": "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": "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": "32613090a96dba2ca2cc524c8d4749d3126fdde5",
      "tree": "5e0e5f9097aca737e8a7356eb1b72e53539cda0b",
      "parents": [
        "e4c57d0f964cdbe278ed6b3bf632138fe575267e"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon Sep 14 12:21:47 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Sep 14 17:03:01 2009 -0700"
      },
      "message": "net: constify struct net_protocol\n\nRemove long removed \"inet_protocol_base\" declaration.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.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"
    },
    {
      "commit": "386019d3514b3ed9de8d0b05b67e638a7048375b",
      "tree": "6447cb5bfe73788abab98f4835b95af258bfeeff",
      "parents": [
        "2f275f91a438abd8eec5321798d66a4ffe6869fa"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Fri Jul 18 04:03:45 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jul 18 04:03:45 2008 -0700"
      },
      "message": "mib: put udplite statistics on struct net\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "0b040829952d84bf2a62526f0e24b624e0699447",
      "tree": "b2e836e7e64343f19b949e50099bbe2ea554ec30",
      "parents": [
        "573bf470e693f73a6ac437b17a64a10902ba54bf"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@kernel.org",
        "time": "Tue Jun 10 22:46:50 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jun 11 21:00:38 2008 -0700"
      },
      "message": "net: remove CVS keywords\n\nThis patch removes CVS keywords that weren\u0027t updated for a long time\nfrom comments.\n\nSigned-off-by: Adrian Bunk \u003cbunk@kernel.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "4ad96d39a2d74c1b2e400b602da2594f5098fc26",
      "tree": "570666522e544892feba440728a59f336e13c3dd",
      "parents": [
        "3ba9441bdf07370670a684e6d95dfc523476677f"
      ],
      "author": {
        "name": "Denis V. Lunev",
        "email": "den@openvz.org",
        "time": "Fri Mar 28 18:25:53 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Mar 28 18:25:53 2008 -0700"
      },
      "message": "[UDP]: Remove owner from udp_seq_afinfo.\n\nMove it to udp_seq_afinfo-\u003eseq_fops as should be.\n\nSigned-off-by: Denis V. Lunev \u003cden@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "3ba9441bdf07370670a684e6d95dfc523476677f",
      "tree": "ec31a5f5c5e1fc0d807575c733a04d2adbf44c09",
      "parents": [
        "a2be75c182cd16bc104919e33451ffda8b6f65b4"
      ],
      "author": {
        "name": "Denis V. Lunev",
        "email": "den@openvz.org",
        "time": "Fri Mar 28 18:25:32 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Mar 28 18:25:32 2008 -0700"
      },
      "message": "[UDP]: Place file operations directly into udp_seq_afinfo.\n\nNo need to have separate never-used variable.\n\nSigned-off-by: Denis V. Lunev \u003cden@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "dda61925f84d89e2f2a4597d6298a05a2bc05c20",
      "tree": "8d66baedac68ed6a1c026f0142ab405f5c733597",
      "parents": [
        "997feb5e7a24ce155c1d3bea9d0b5c6530bb6197"
      ],
      "author": {
        "name": "Denis V. Lunev",
        "email": "den@openvz.org",
        "time": "Fri Mar 28 18:24:26 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Mar 28 18:24:26 2008 -0700"
      },
      "message": "[UDP]: Move seq_ops from udp_iter_state to udp_seq_afinfo.\n\nNo need to create seq_operations for each instance of \u0027netstat\u0027.\n\nSigned-off-by: Denis V. Lunev \u003cden@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "bdcde3d71a67e97f25e851f3ca97c9bb5ef03e7f",
      "tree": "eab4a66777582718ffe2eff9038324331106ec18",
      "parents": [
        "60e7663d462af3994f292cb3691ea4f7371a9220"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Fri Mar 28 16:39:33 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Mar 28 16:39:33 2008 -0700"
      },
      "message": "[SOCK]: Drop inuse pcounter from struct proto (v2).\n\nAn uppercut - do not use the pcounter on struct proto.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nAcked-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "92f1fecb45ef97acae94463302f79228a4b454d9",
      "tree": "4f81435f20f903e7f51c47e53edac50b8ffb73e8",
      "parents": [
        "2342fd7e146f05edeb13feb03490c13a1bdab2e0"
      ],
      "author": {
        "name": "Denis V. Lunev",
        "email": "den@openvz.org",
        "time": "Mon Mar 24 15:34:06 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Mar 24 15:34:06 2008 -0700"
      },
      "message": "[NETNS]: Enable TCP/UDP/ICMP inside namespace.\n\nSigned-off-by: Denis V. Lunev \u003cden@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "84c375af0ff61e0bd15fac0aed0438640494483e",
      "tree": "04df8259aef29b1d7eebd4e98988cf5e995527b9",
      "parents": [
        "ff2bac6a63e3694e7a97152b7e934fe244e2a858"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Mon Mar 24 14:56:57 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Mar 24 14:56:57 2008 -0700"
      },
      "message": "[NETNS][UDP-Lite]: Register /proc/net/udplite(6) in a namespace.\n\nUDP-Lite sockets are displayed in another files, rather than\nUDP ones, so make the present in namespaces as well.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "ff2bac6a63e3694e7a97152b7e934fe244e2a858",
      "tree": "8b00a0ccf83b303fe7cfcb91af4fec70c97178e6",
      "parents": [
        "757764f61d07ab8ff84699b6d608eac7bc94cecc"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Mon Mar 24 14:56:34 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Mar 24 14:56:34 2008 -0700"
      },
      "message": "[UDP-Lite]: Clean up proc creation a bit.\n\nJust introduce a helper to remove ifdefs from inside the\nudplite4_register function. This will help to make the next patch\nnicer.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "6ba5a3c52da00015e739469e3b00cd6d0d4c5c67",
      "tree": "0cbccb2dac9307cec25176eb94ff4f406a2061f7",
      "parents": [
        "39d8cda76cfb1178455f9d196b39e773878e6c05"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Sat Mar 22 16:51:21 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Mar 22 16:51:21 2008 -0700"
      },
      "message": "[UDP]: Make full use of proto.h.udp_hash innovation.\n\nAfter this we have only udp_lib_get_port to get the port and two \nstubs for ipv4 and ipv6. No difference in udp and udplite except\nfor initialized h.udp_hash member.\n\nI tried to find a graceful way to drop the only difference between\nudp_v4_get_port and udp_v6_get_port (i.e. the rcv_saddr comparison \nroutine), but adding one more callback on the struct proto didn\u0027t \nappear such :( Maybe later.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "0c96d8c50bffb7f02690dd8a8cf1adb8e07e100f",
      "tree": "9add3d8686b41aa3022b49d9cc57710865245e26",
      "parents": [
        "f40c8174d3c21bf178283f3ef3aa8c7bf238fdec"
      ],
      "author": {
        "name": "Daniel Lezcano",
        "email": "dlezcano@fr.ibm.com",
        "time": "Fri Mar 21 04:14:17 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Mar 21 04:14:17 2008 -0700"
      },
      "message": "[NETNS][IPV6] udp6 - make proc per namespace\n\nThe proc init/exit functions take a new network namespace parameter in\norder to register/unregister /proc/net/udp6 for a namespace.\n\nSigned-off-by: Daniel Lezcano \u003cdlezcano@fr.ibm.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "db8dac20d5199307dcfcf4e01dac4bda5edf9e89",
      "tree": "3694d1aee5c0014fb45eec045a67ca150ca1231f",
      "parents": [
        "ba0fa4599484b98dbb21d279fbfdb40e9c07d30d"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Mar 06 16:22:02 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Mar 06 16:22:02 2008 -0800"
      },
      "message": "[UDP]: Revert udplite and code split.\n\nThis reverts commit db1ed684f6c430c4cdad67d058688b8a1b5e607c (\"[IPV6]\nUDP: Rename IPv6 UDP files.\"), commit\n8be8af8fa4405652e6c0797db5465a4be8afb998 (\"[IPV4] UDP: Move\nIPv4-specific bits to other file.\") and commit\ne898d4db2749c6052072e9bc4448e396cbdeb06a (\"[UDP]: Allow users to\nconfigure UDP-Lite.\").\n\nFirst, udplite is of such small cost, and it is a core protocol just\nlike TCP and normal UDP are.\n\nWe spent enormous amounts of effort to make udplite share as much code\nwith core UDP as possible.  All of that work is less valuable if we\u0027re\njust going to slap a config option on udplite support.\n\nIt is also causing build failures, as reported on linux-next, showing\nthat the changeset was not tested very well.  In fact, this is the\nsecond build failure resulting from the udplite change.\n\nFinally, the config options provided was a bool, instead of a modular\noption.  Meaning the udplite code does not even get build tested\nby allmodconfig builds, and furthermore the user is not presented\nwith a reasonable modular build option which is particularly needed\nby distribution vendors.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "0dc47877a3de00ceadea0005189656ae8dc52669",
      "tree": "7440a87385fe318cb42f0ae161be195f5e967d82",
      "parents": [
        "6387c4bed539539b05fa773cf2ff26529dc3074c"
      ],
      "author": {
        "name": "Harvey Harrison",
        "email": "harvey.harrison@gmail.com",
        "time": "Wed Mar 05 20:47:47 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Mar 05 20:47:47 2008 -0800"
      },
      "message": "net: replace remaining __FUNCTION__ occurrences\n\n__FUNCTION__ is gcc-specific, use __func__\n\nSigned-off-by: Harvey Harrison \u003charvey.harrison@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "8be8af8fa4405652e6c0797db5465a4be8afb998",
      "tree": "3e560ec193fe41e244a9f977168e154b223fb986",
      "parents": [
        "cf80efc27d68d4e0717aa0b8647c4e161397ced7"
      ],
      "author": {
        "name": "YOSHIFUJI Hideaki",
        "email": "yoshfuji@linux-ipv6.org",
        "time": "Tue Mar 04 14:50:52 2008 +0900"
      },
      "committer": {
        "name": "YOSHIFUJI Hideaki",
        "email": "yoshfuji@linux-ipv6.org",
        "time": "Tue Mar 04 15:18:22 2008 +0900"
      },
      "message": "[IPV4] UDP: Move IPv4-specific bits to other file.\n\nMove IPv4-specific UDP bits from net/ipv4/udp.c into (new) net/ipv4/udp_ipv4.c.\nRename net/ipv4/udplite.c to net/ipv4/udplite_ipv4.c.\n\nSigned-off-by: YOSHIFUJI Hideaki \u003cyoshfuji@linux-ipv6.org\u003e\n"
    },
    {
      "commit": "fc80be87dca8968fa087aae81544ba3f86afdd50",
      "tree": "60f62aeb95c5e8fbd1eb956166b0e53c058e553a",
      "parents": [
        "583c28e5645c464b57b4f5d3d53113c06bb0ac5f"
      ],
      "author": {
        "name": "YOSHIFUJI Hideaki",
        "email": "yoshfuji@linux-ipv6.org",
        "time": "Tue Jan 22 17:05:31 2008 +0900"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 28 15:10:24 2008 -0800"
      },
      "message": "[IPV4] UDP,UDPLITE: Sparse: {__udp4_lib,udp,udplite}_err() are of void.\n\nFix following sparse warnings:\n| net/ipv4/udp.c:421:2: warning: returning void-valued expression\n| net/ipv4/udplite.c:38:2: warning: returning void-valued expression\n\nSigned-off-by: YOSHIFUJI Hideaki \u003cyoshfuji@linux-ipv6.org\u003e\n"
    },
    {
      "commit": "47a31a6ffcca3b55149bccd5b99763e5eea60ac4",
      "tree": "de45b7c03799f16e717b9bf63b249bfe5f0f19a4",
      "parents": [
        "286ab3d46058840d68e5d7d52e316c1f7e98c59f"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Mon Nov 05 23:39:16 2007 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Nov 07 04:08:58 2007 -0800"
      },
      "message": "[IPV4]: Use the {DEFINE|REF}_PROTO_INUSE infrastructure\n\nTrivial patch to make \"tcp,udp,udplite,raw\" protocols uses the fast\n\"inuse sockets\" infrastructure\n\nEach protocol use then a static percpu var, instead of a dynamic one.\nThis saves some ram and some cpu cycles\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "32c1da70810017a98aa6c431a5494a302b6b9a30",
      "tree": "8583fe356829dd0265c673798262453d4bc36869",
      "parents": [
        "356f89e12e301376f26795643f3b5931c81c9cd5"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@linux-foundation.org",
        "time": "Fri Aug 24 23:09:41 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Oct 10 16:48:31 2007 -0700"
      },
      "message": "[UDP]: Randomize port selection.\n\nThis patch causes UDP port allocation to be randomized like TCP.\nThe earlier code would always choose same port (ie first empty list).\n\nSigned-off-by: Stephen Hemminger \u003cshemminger@linux-foundation.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "df2bc459a3ad71f8b44c358bf7169acf9caf4acd",
      "tree": "143206b16d59c723be3c2cf2375a33b2a9306280",
      "parents": [
        "3c0d2f3780fc94746c4842e965bd2570e2119bb6"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Tue Jun 05 15:18:43 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Thu Jun 07 13:40:50 2007 -0700"
      },
      "message": "[UDP]: Revert 2-pass hashing changes.\n\nThis reverts changesets:\n\n6aaf47fa48d3c44280810b1b470261d340e4ed87\nb7b5f487ab39bc10ed0694af35651a03d9cb97ff\nde34ed91c4ffa4727964a832c46e624dd1495cf5\nfc038410b4b1643766f8033f4940bcdb1dace633\n\nThere are still some correctness issues recently\ndiscovered which do not have a known fix that doesn\u0027t\ninvolve doing a full hash table scan on port bind.\n\nSo revert for now.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "fc038410b4b1643766f8033f4940bcdb1dace633",
      "tree": "3ee59190ecaa77061a9b64cdc09fcce6b6efc389",
      "parents": [
        "a2af421f1819946556c6f467b1efdd0dc84af4d5"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed May 09 16:42:20 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Thu May 10 23:47:22 2007 -0700"
      },
      "message": "[UDP]: Fix AF-specific references in AF-agnostic code.\n\n__udp_lib_port_inuse() cannot make direct references to\ninet_sk(sk)-\u003ercv_saddr as that is ipv4 specific state and\nthis code is used by ipv6 too.\n\nUse an operations vector to solve this, and this also paves\nthe way for ipv6 support for non-wild saddr hashing in UDP.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "759e5d006462d53fb708daa8284b4ad909415da1",
      "tree": "edcc4e9d975199b3fe5e2aadc3d1e06824755e75",
      "parents": [
        "1ab6eb62b02e0949a392fb19bf31ba59ae1022b1"
      ],
      "author": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Sun Mar 25 20:10:56 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Apr 25 22:23:51 2007 -0700"
      },
      "message": "[UDP]: Clean up UDP-Lite receive checksum\n\nThis patch eliminates some duplicate code for the verification of\nreceive checksums between UDP-Lite and UDP.  It does this by\nintroducing __skb_checksum_complete_head which is identical to\n__skb_checksum_complete_head apart from the fact that it takes\na length parameter rather than computing the first skb-\u003elen bytes.\n\nAs a result UDP-Lite will be able to use hardware checksum offload\nfor packets which do not use partial coverage checksums.  It also\nmeans that UDP-Lite loopback no longer does unnecessary checksum\nverification.\n\nIf any NICs start support UDP-Lite this would also start working\nautomatically.\n\nThis patch removes the assumption that msg_flags has MSG_TRUNC clear\nupon entry in recvmsg.\n\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "f5b99bcdddfb2338227faad3489c24907f37ee8e",
      "tree": "ab12dd443300df741e388ca80df0860dc65d24b0",
      "parents": [
        "2718aa7c55ba7264dd463b8f7006f0975366fa7b"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Thu Nov 30 17:22:29 2006 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Sat Dec 02 21:31:51 2006 -0800"
      },
      "message": "[NET]: Possible cleanups.\n\nThis patch contains the following possible cleanups:\n- make the following needlessly global functions statis:\n  - ipv4/tcp.c: __tcp_alloc_md5sig_pool()\n  - ipv4/tcp_ipv4.c: tcp_v4_reqsk_md5_lookup()\n  - ipv4/udplite.c: udplite_rcv()\n  - ipv4/udplite.c: udplite_err()\n- make the following needlessly global structs static:\n  - ipv4/tcp_ipv4.c: tcp_request_sock_ipv4_ops\n  - ipv4/tcp_ipv4.c: tcp_sock_ipv4_specific\n  - ipv6/tcp_ipv6.c: tcp_request_sock_ipv6_ops\n- net/ipv{4,6}/udplite.c: remove inline\u0027s from static functions\n                          (gcc should know best when to inline them)\n\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "ba4e58eca8aa9473b44fdfd312f26c4a2e7798b3",
      "tree": "700f8f989f48da480beb83b983637cfd2b5a3f67",
      "parents": [
        "6051e2f4fb68fc8e5343db58fa680ece376f405c"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Mon Nov 27 11:10:57 2006 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Sat Dec 02 21:22:46 2006 -0800"
      },
      "message": "[NET]: Supporting UDP-Lite (RFC 3828) in Linux\n\nThis is a revision of the previously submitted patch, which alters\nthe way files are organized and compiled in the following manner:\n\n\t* UDP and UDP-Lite now use separate object files\n\t* source file dependencies resolved via header files\n\t  net/ipv{4,6}/udp_impl.h\n\t* order of inclusion files in udp.c/udplite.c adapted\n\t  accordingly\n\n[NET/IPv4]: Support for the UDP-Lite protocol (RFC 3828)\n\nThis patch adds support for UDP-Lite to the IPv4 stack, provided as an\nextension to the existing UDPv4 code:\n        * generic routines are all located in net/ipv4/udp.c\n        * UDP-Lite specific routines are in net/ipv4/udplite.c\n        * MIB/statistics support in /proc/net/snmp and /proc/net/udplite\n        * shared API with extensions for partial checksum coverage\n\n[NET/IPv6]: Extension for UDP-Lite over IPv6\n\nIt extends the existing UDPv6 code base with support for UDP-Lite\nin the same manner as per UDPv4. In particular,\n        * UDPv6 generic and shared code is in net/ipv6/udp.c\n        * UDP-Litev6 specific extensions are in net/ipv6/udplite.c\n        * MIB/statistics support in /proc/net/snmp6 and /proc/net/udplite6\n        * support for IPV6_ADDRFORM\n        * aligned the coding style of protocol initialisation with af_inet6.c\n        * made the error handling in udpv6_queue_rcv_skb consistent;\n          to return `-1\u0027 on error on all error cases\n        * consolidation of shared code\n\n[NET]: UDP-Lite Documentation and basic XFRM/Netfilter support\n\nThe UDP-Lite patch further provides\n        * API documentation for UDP-Lite\n        * basic xfrm support\n        * basic netfilter support for IPv4 and IPv6 (LOG target)\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    }
  ]
}
