)]}'
{
  "log": [
    {
      "commit": "53c3fa206415d8a3f8b2a4f77689ea044c4a9c65",
      "tree": "9503d3a9aad8472117db2bc358fdc2e822295b1f",
      "parents": [
        "7ed24e8da75615418cbf3417e421053e53a5f5b3"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Mon Aug 09 13:41:07 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Aug 10 00:09:20 2010 -0700"
      },
      "message": "net/sock.h: add missing kernel-doc notation\n\nAdd missing kernel-doc notation to struct sock:\n\nWarning(include/net/sock.h:324): No description found for parameter \u0027sk_peer_pid\u0027\nWarning(include/net/sock.h:324): No description found for parameter \u0027sk_peer_cred\u0027\nWarning(include/net/sock.h:324): No description found for parameter \u0027sk_classid\u0027\nWarning(include/net/sock.h:324): Excess struct/union/enum/typedef member \u0027sk_peercred\u0027 description in \u0027sock\u0027\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "11fe883936980fe242869d671092a466cf1db3e3",
      "tree": "14ff24e81eb4326e94eb5aa6432a1dd55cef5ece",
      "parents": [
        "70d4bf6d467a330ccc947df9b2608e329d9e7708",
        "573201f36fd9c7c6d5218cdcd9948cee700b277d"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jul 20 18:25:24 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jul 20 18:25:24 2010 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6\n\nConflicts:\n\tdrivers/vhost/net.c\n\tnet/bridge/br_device.c\n\nFix merge conflict in drivers/vhost/net.c with guidance from\nStephen Rothwell.\n\nRevert the effects of net-2.6 commit 573201f36fd9c7c6d5218cdcd9948cee700b277d\nsince net-next-2.6 has fixes that make bridge netpoll work properly thus\nwe don\u0027t need it disabled.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "b0f77d0eae0c58a5a9691a067ada112ceeae2d00",
      "tree": "2bab159a95f51e32dbb4eb2d554328de3190c678",
      "parents": [
        "91a72a70594e5212c97705ca6a694bd307f7a26b"
      ],
      "author": {
        "name": "Tom Herbert",
        "email": "therbert@google.com",
        "time": "Wed Jul 14 20:50:29 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jul 14 20:50:29 2010 -0700"
      },
      "message": "net: fix problem in reading sock TX queue\n\nFix problem in reading the tx_queue recorded in a socket.  In\ndev_pick_tx, the TX queue is read by doing a check with\nsk_tx_queue_recorded on the socket, followed by a sk_tx_queue_get.\nThe problem is that there is not mutual exclusion across these\ncalls in the socket so it it is possible that the queue in the\nsock can be invalidated after sk_tx_queue_recorded is called so\nthat sk_tx_queue get returns -1, which sets 65535 in queue_index\nand thus dev_pick_tx returns 65536 which is a bogus queue and\ncan cause crash in dev_queue_xmit.\n\nWe fix this by only calling sk_tx_queue_get which does the proper\nchecks.  The interface is that sk_tx_queue_get returns the TX queue\nif the sock argument is non-NULL and TX queue is recorded, else it\nreturns -1.  sk_tx_queue_recorded is no longer used so it can be\ncompletely removed.\n\nSigned-off-by: Tom Herbert \u003ctherbert@google.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "7ba42910073f8432934d61a6c08b1023c408fb62",
      "tree": "4f74648133eaf6cbea26d59c43d34e7153648f5d",
      "parents": [
        "53d3176b282cc105493babb0fef36c8b873f6201"
      ],
      "author": {
        "name": "Changli Gao",
        "email": "xiaosuo@gmail.com",
        "time": "Sat Jul 10 20:41:55 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jul 12 20:21:46 2010 -0700"
      },
      "message": "inet, inet6: make tcp_sendmsg() and tcp_sendpage() through inet_sendmsg() and inet_sendpage()\n\na new boolean flag no_autobind is added to structure proto to avoid the autobind\ncalls when the protocol is TCP. Then sock_rps_record_flow() is called int the\nTCP\u0027s sendmsg() and sendpage() pathes.\n\nSigned-off-by: Changli Gao \u003cxiaosuo@gmail.com\u003e\n----\n include/net/inet_common.h |    4 ++++\n include/net/sock.h        |    1 +\n include/net/tcp.h         |    8 ++++----\n net/ipv4/af_inet.c        |   15 +++++++++------\n net/ipv4/tcp.c            |   11 +++++------\n net/ipv4/tcp_ipv4.c       |    3 +++\n net/ipv6/af_inet6.c       |    8 ++++----\n net/ipv6/tcp_ipv6.c       |    3 +++\n 8 files changed, 33 insertions(+), 20 deletions(-)\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "109f6e39fa07c48f580125f531f46cb7c245b528",
      "tree": "9ec97679c227394a44ebede5768f92d970cea6eb",
      "parents": [
        "3f551f9436c05a3b5eccdd6e94733df5bb98d2a5"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Sun Jun 13 03:30:14 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jun 16 14:55:55 2010 -0700"
      },
      "message": "af_unix: Allow SO_PEERCRED to work across namespaces.\n\nUse struct pid and struct cred to store the peer credentials on struct\nsock.  This gives enough information to convert the peer credential\ninformation to a value relative to whatever namespace the socket is in\nat the time.\n\nThis removes nasty surprises when using SO_PEERCRED on socket\nconnetions where the processes on either side are in different pid and\nuser namespaces.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nAcked-by: Daniel Lezcano \u003cdaniel.lezcano@free.fr\u003e\nAcked-by: Pavel Emelyanov \u003cxemul@openvz.org\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": "c2d9ba9bce8d7323ca96f239e1f505c14d6244fb",
      "tree": "7a184eefa2e48e6aa15cdf3aefb6ccf2fb834320",
      "parents": [
        "c6b20d941b08941bece53bc3d857beb1fb25fffc"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Tue Jun 01 06:51:19 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jun 02 05:16:23 2010 -0700"
      },
      "message": "net: CONFIG_NET_NS reduction\n\nUse read_pnet() and write_pnet() to reduce number of ifdef CONFIG_NET_NS\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\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": "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": "acfbe96a3035639619a6533e04d88ed4ef9ccb61",
      "tree": "9d0b93aef75b2a11acff9b4d240d5f3e9896f3e0",
      "parents": [
        "937eada45fa7bd233dfa59bbd8c0b436b02b6491"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Mon May 24 23:54:18 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon May 24 23:54:18 2010 -0700"
      },
      "message": "sock.h: fix kernel-doc warning\n\nFix sock.h kernel-doc warning:\nWarning(include/net/sock.h:1438): No description found for parameter \u0027wq\u0027\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "f845172531fb7410c7fb7780b1a6e51ee6df7d52",
      "tree": "ef1030d0ad9d9dbc8fe800a145c587f04be50ade",
      "parents": [
        "eda6e6f86b5f95b982ac7ebf7cf5be2a29a291e9"
      ],
      "author": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Mon May 24 00:12:34 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon May 24 00:12:34 2010 -0700"
      },
      "message": "cls_cgroup: Store classid in struct sock\n\nUp until now cls_cgroup has relied on fetching the classid out of\nthe current executing thread.  This runs into trouble when a packet\nprocessing is delayed in which case it may execute out of another\nthread\u0027s context.\n\nFurthermore, even when a packet is not delayed we may fail to\nclassify it if soft IRQs have been disabled, because this scenario\nis indistinguishable from one where a packet unrelated to the\ncurrent thread is processed by a real soft IRQ.\n\nIn fact, the current semantics is inherently broken, as a single\nskb may be constructed out of the writes of two different tasks.\nA different manifestation of this problem is when the TCP stack\ntransmits in response of an incoming ACK.  This is currently\nunclassified.\n\nAs we already have a concept of packet ownership for accounting\npurposes in the skb-\u003esk pointer, this is a natural place to store\nthe classid in a persistent manner.\n\nThis patch adds the cls_cgroup classid in struct sock, filling up\nan existing hole on 64-bit :)\n\nThe value is set at socket creation time.  So all sockets created\nvia socket(2) automatically gains the ID of the thread creating it.\nWhenever another process touches the socket by either reading or\nwriting to it, we will change the socket classid to that of the\nprocess if it has a valid (non-zero) classid.\n\nFor sockets created on inbound connections through accept(2), we\ninherit the classid of the original listening socket through\nsk_clone, possibly preceding the actual accept(2) call.\n\nIn order to minimise risks, I have not made this the authoritative\nclassid.  For now it is only used as a backup when we execute\nwith soft IRQs disabled.  Once we\u0027re completely happy with its\nsemantics we can use it as the sole classid.\n\nFootnote: I have rearranged the error path on cls_group module\ncreation.  If we didn\u0027t do this, then there is a window where\nsomeone could create a tc rule using cls_group before the cgroup\nsubsystem has been registered.\n\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "7fee226ad2397b635e2fd565a59ca3ae08a164cd",
      "tree": "0bcd26150ad74ec1a237109de87a3d214a07fc22",
      "parents": [
        "ebda37c27d0c768947e9b058332d7ea798210cf8"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Tue May 11 23:19:48 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon May 17 17:18:50 2010 -0700"
      },
      "message": "net: add a noref bit on skb dst\n\nUse low order bit of skb-\u003e_skb_dst to tell dst is not refcounted.\n\nChange _skb_dst to _skb_refdst to make sure all uses are catched.\n\nskb_dst() returns the dst, regardless of noref bit set or not, but\nwith a lockdep check to make sure a noref dst is not given if current\nuser is not rcu protected.\n\nNew skb_dst_set_noref() helper to set an notrefcounted dst on a skb.\n(with lockdep check)\n\nskb_dst_drop() drops a reference only if skb dst was refcounted.\n\nskb_dst_force() helper is used to force a refcount on dst, when skb\nis queued and not anymore RCU protected.\n\nUse skb_dst_force() in __sk_add_backlog(), __dev_xmit_skb() if\n!IFF_XMIT_DST_RELEASE or skb enqueued on qdisc queue, in\nsock_queue_rcv_skb(), in __nf_queue().\n\nUse skb_dst_force() in dev_requeue_skb().\n\nNote: dst_use_noref() still dirties dst, we might transform it\nlater to do one dirtying per jiffies.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "a465419b1febb603821f924805529cff89cafeed",
      "tree": "5131fa2dbf624ebeb6cf61bf4dc1bc9464fe0bbd",
      "parents": [
        "3b098e2d7c693796cc4dffb07caa249fc0f70771"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Sun May 16 00:36:33 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun May 16 00:36:33 2010 -0700"
      },
      "message": "net: Introduce sk_route_nocaps\n\nTCP-MD5 sessions have intermittent failures, when route cache is\ninvalidated. ip_queue_xmit() has to find a new route, calls\nsk_setup_caps(sk, \u0026rt-\u003eu.dst), destroying the \n\nsk-\u003esk_route_caps \u0026\u003d ~NETIF_F_GSO_MASK\n\nthat MD5 desperately try to make all over its way (from\ntcp_transmit_skb() for example)\n\nSo we send few bad packets, and everything is fine when\ntcp_transmit_skb() is called again for this socket.\n\nSince ip_queue_xmit() is at a lower level than TCP-MD5, I chose to use a\nsocket field, sk_route_nocaps, containing bits to mask on sk_route_caps.\n\nReported-by: Bhaskar Dutta \u003cbhaskie@gmail.com\u003e\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "7ef527377b88ff05fb122a47619ea506c631c914",
      "tree": "2c2e774527d5f591b975834f43e8c6fd12fb38f2",
      "parents": [
        "47d29646a2c1c147d8a7598aeac2c87dd71ed638",
        "1183f3838c588545592c042c0ce15015661ce7f2"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun May 02 21:43:40 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun May 02 22:02:06 2010 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6\n"
    },
    {
      "commit": "1183f3838c588545592c042c0ce15015661ce7f2",
      "tree": "24de17b69f9b2d83720a550af130d1dbddf067e8",
      "parents": [
        "6f1464bf65fcaa57a4b32dae93de4e8bbdfaf7c5"
      ],
      "author": {
        "name": "Jan Engelhardt",
        "email": "jengelh@medozas.de",
        "time": "Sun May 02 13:42:39 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun May 02 13:42:39 2010 -0700"
      },
      "message": "net: fix compile error due to double return type in SOCK_DEBUG\n\nFix this one:\ninclude/net/sock.h: error: two or more data types in declaration specifiers\n\nSigned-off-by: Jan Engelhardt \u003cjengelh@medozas.de\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "43815482370c510c569fd18edb57afcb0fa8cab6",
      "tree": "063efaae3758402b84f056438b704d1de68f7837",
      "parents": [
        "83d7eb2979cd3390c375470225dd2d8f2009bc70"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Thu Apr 29 11:01:49 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat May 01 15:00:15 2010 -0700"
      },
      "message": "net: sock_def_readable() and friends RCU conversion\n\nsk_callback_lock rwlock actually protects sk-\u003esk_sleep pointer, so we\nneed two atomic operations (and associated dirtying) per incoming\npacket.\n\nRCU conversion is pretty much needed :\n\n1) Add a new structure, called \"struct socket_wq\" to hold all fields\nthat will need rcu_read_lock() protection (currently: a\nwait_queue_head_t and a struct fasync_struct pointer).\n\n[Future patch will add a list anchor for wakeup coalescing]\n\n2) Attach one of such structure to each \"struct socket\" created in\nsock_alloc_inode().\n\n3) Respect RCU grace period when freeing a \"struct socket_wq\"\n\n4) Change sk_sleep pointer in \"struct sock\" by sk_wq, pointer to \"struct\nsocket_wq\"\n\n5) Change sk_sleep() function to use new sk-\u003esk_wq instead of\nsk-\u003esk_sleep\n\n6) Change sk_has_sleeper() to wq_has_sleeper() that must be used inside\na rcu_read_lock() section.\n\n7) Change all sk_has_sleeper() callers to :\n  - Use rcu_read_lock() instead of read_lock(\u0026sk-\u003esk_callback_lock)\n  - Use wq_has_sleeper() to eventually wakeup tasks.\n  - Use rcu_read_unlock() instead of read_unlock(\u0026sk-\u003esk_callback_lock)\n\n8) sock_wake_async() is modified to use rcu protection as well.\n\n9) Exceptions :\n  macvtap, drivers/net/tun.c, af_unix use integrated \"struct socket_wq\"\ninstead of dynamically allocated ones. They dont need rcu freeing.\n\nSome cleanups or followups are probably needed, (possible\nsk_callback_lock conversion to a spinlock for example...).\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "767dd03369ac18af58efdef0383d6eb986eab426",
      "tree": "5af8a861110676a084078a168c27fd3935d41f13",
      "parents": [
        "21851264120b0bd1f953328cb131abcfa9305bc3"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Wed Apr 28 19:14:43 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Apr 30 16:29:42 2010 -0700"
      },
      "message": "net: speedup sock_recv_ts_and_drops()\n\nsock_recv_ts_and_drops() is fat and slow (~ 4% of cpu time on some\nprofiles)\n\nWe can test all socket flags at once to make fast path fast again.\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": "c58dc01babfd58ec9e71a6ce080150dc27755d88",
      "tree": "065c58b5236ea23ff0868a6bbf3c5233b990f0be",
      "parents": [
        "c4ee6a5348102b9cea49fb9adf88307445407911"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Apr 27 15:05:31 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Apr 27 15:11:48 2010 -0700"
      },
      "message": "net: Make RFS socket operations not be inet specific.\n\nIdea from Eric Dumazet.\n\nAs for placement inside of struct sock, I tried to choose a place\nthat otherwise has a 32-bit hole on 64-bit systems.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\nAcked-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\n"
    },
    {
      "commit": "0b53ff2eadb1db6818894435f85989fb05d7e718",
      "tree": "6c7ecececdb6a094c68b4af122aed788648a2b13",
      "parents": [
        "18f9f1365dad1237072d360bc487d8c7a1cae532"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Mon Apr 26 20:40:43 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Apr 27 12:53:26 2010 -0700"
      },
      "message": "net: fix a lockdep rcu warning in __sk_dst_set()\n\n__sk_dst_set() might be called while no state can be integrated in a\nrcu_dereference_check() condition.\n\nSo use rcu_dereference_raw() to shutup lockdep warnings (if\nCONFIG_PROVE_RCU is set)\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nAcked-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "f68c224fedff2157f3fad7f7da674cbc96567c84",
      "tree": "848340e2220cffa5de706d5a142b5beeaa02c643",
      "parents": [
        "40eaf96271526a9f71030dd1a199ce46c045752e"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Thu Apr 22 16:06:59 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Apr 22 16:06:59 2010 -0700"
      },
      "message": "dst: rcu check refinement\n\n__sk_dst_get() might be called from softirq, with socket lock held.\n\n[  159.026180] include/net/sock.h:1200 invoked rcu_dereference_check()\nwithout protection!\n[  159.026261] \n[  159.026261] other info that might help us debug this:\n[  159.026263] \n[  159.026425] \n[  159.026426] rcu_scheduler_active \u003d 1, debug_locks \u003d 0\n[  159.026552] 2 locks held by swapper/0:\n[  159.026609]  #0:  (\u0026icsk-\u003eicsk_retransmit_timer){+.-...}, at:\n[\u003cffffffff8104fc15\u003e] run_timer_softirq+0x105/0x350\n[  159.026839]  #1:  (slock-AF_INET){+.-...}, at: [\u003cffffffff81392b8f\u003e]\ntcp_write_timer+0x2f/0x1e0\n[  159.027063] \n[  159.027064] stack backtrace:\n[  159.027172] Pid: 0, comm: swapper Not tainted\n2.6.34-rc5-03707-gde498c8-dirty #36\n[  159.027252] Call Trace:\n[  159.027306]  \u003cIRQ\u003e  [\u003cffffffff810718ef\u003e] lockdep_rcu_dereference\n+0xaf/0xc0\n[  159.027411]  [\u003cffffffff8138e4f7\u003e] tcp_current_mss+0xa7/0xb0\n[  159.027537]  [\u003cffffffff8138fa49\u003e] tcp_write_wakeup+0x89/0x190\n[  159.027600]  [\u003cffffffff81391936\u003e] tcp_send_probe0+0x16/0x100\n[  159.027726]  [\u003cffffffff81392cd9\u003e] tcp_write_timer+0x179/0x1e0\n[  159.027790]  [\u003cffffffff8104fca1\u003e] run_timer_softirq+0x191/0x350\n[  159.027980]  [\u003cffffffff810477ed\u003e] __do_softirq+0xcd/0x200\n\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "aa395145165cb06a0d0885221bbe0ce4a564391d",
      "tree": "118b0403621f10db8dc3dbf12079f9af5b19e05d",
      "parents": [
        "ab9304717f7624c41927f442e6b6d418b2d8b3e4"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Tue Apr 20 13:03:51 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Apr 20 16:37:13 2010 -0700"
      },
      "message": "net: sk_sleep() helper\n\nDefine a new function to return the waitqueue of a \"struct sock\".\n\nstatic inline wait_queue_head_t *sk_sleep(struct sock *sk)\n{\n\treturn sk-\u003esk_sleep;\n}\n\nChange all read occurrences of sk_sleep by a call to this function.\n\nNeeded for a future RCU conversion. sk_sleep wont be a field directly\navailable.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "b6c6712a42ca3f9fa7f4a3d7c40e3a9dd1fd9e03",
      "tree": "42032b4978874e8ffcf6c851d13324b8c8c7c113",
      "parents": [
        "7a161ea92471087a1579239d7a58dd06eaa5601c"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Thu Apr 08 23:03:29 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Apr 13 01:41:33 2010 -0700"
      },
      "message": "net: sk_dst_cache RCUification\n\nWith latest CONFIG_PROVE_RCU stuff, I felt more comfortable to make this\nwork.\n\nsk-\u003esk_dst_cache is currently protected by a rwlock (sk_dst_lock)\n\nThis rwlock is readlocked for a very small amount of time, and dst\nentries are already freed after RCU grace period. This calls for RCU\nagain :)\n\nThis patch converts sk_dst_lock to a spinlock, and use RCU for readers.\n\n__sk_dst_get() is supposed to be called with rcu_read_lock() or if\nsocket locked by user, so use appropriate rcu_dereference_check()\ncondition (rcu_read_lock_held() || sock_owned_by_user(sk))\n\nThis patch avoids two atomic ops per tx packet on UDP connected sockets,\nfor example, and permits sk_dst_lock to be much less dirtied.\n\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": "4045635318538d3ddd2007720412fdc4b08f6a62",
      "tree": "ee358afe884cd8e8af594de4ea882879bd1ff994",
      "parents": [
        "10cc2b50eb4b01ca4dc014af2094d28b4ebe20d7"
      ],
      "author": {
        "name": "Zhu Yi",
        "email": "yi.zhu@intel.com",
        "time": "Sun Mar 07 16:21:39 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Mar 08 10:45:26 2010 -0800"
      },
      "message": "net: add __must_check to sk_add_backlog\n\nAdd the \"__must_check\" tag to sk_add_backlog() so that any failure to\ncheck and drop packets will be warned about.\n\nSigned-off-by: Zhu Yi \u003cyi.zhu@intel.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\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": "8eae939f1400326b06d0c9afe53d2a484a326871",
      "tree": "0896163cf1a00205fab76cc1c35855157a05cbbc",
      "parents": [
        "12c3400a84742f8bb0e4edc822e9ccba58781e0c"
      ],
      "author": {
        "name": "Zhu Yi",
        "email": "yi.zhu@intel.com",
        "time": "Thu Mar 04 18:01:40 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Mar 05 13:33:59 2010 -0800"
      },
      "message": "net: add limit for socket backlog\n\nWe got system OOM while running some UDP netperf testing on the loopback\ndevice. The case is multiple senders sent stream UDP packets to a single\nreceiver via loopback on local host. Of course, the receiver is not able\nto handle all the packets in time. But we surprisingly found that these\npackets were not discarded due to the receiver\u0027s sk-\u003esk_rcvbuf limit.\nInstead, they are kept queuing to sk-\u003esk_backlog and finally ate up all\nthe memory. We believe this is a secure hole that a none privileged user\ncan crash the system.\n\nThe root cause for this problem is, when the receiver is doing\n__release_sock() (i.e. after userspace recv, kernel udp_recvmsg -\u003e\nskb_free_datagram_locked -\u003e release_sock), it moves skbs from backlog to\nsk_receive_queue with the softirq enabled. In the above case, multiple\nbusy senders will almost make it an endless loop. The skbs in the\nbacklog end up eat all the system memory.\n\nThe issue is not only for UDP. Any protocols using socket backlog is\npotentially affected. The patch adds limit for socket backlog so that\nthe backlog size cannot be expanded endlessly.\n\nReported-by: Alex Shi \u003calex.shi@intel.com\u003e\nCc: David Miller \u003cdavem@davemloft.net\u003e\nCc: Arnaldo Carvalho de Melo \u003cacme@ghostprotocols.net\u003e\nCc: Alexey Kuznetsov \u003ckuznet@ms2.inr.ac.ru\nCc: \"Pekka Savola (ipv6)\" \u003cpekkas@netcore.fi\u003e\nCc: Patrick McHardy \u003ckaber@trash.net\u003e\nCc: Vlad Yasevich \u003cvladislav.yasevich@hp.com\u003e\nCc: Sridhar Samudrala \u003csri@us.ibm.com\u003e\nCc: Jon Maloy \u003cjon.maloy@ericsson.com\u003e\nCc: Allan Stephens \u003callan.stephens@windriver.com\u003e\nCc: Andrew Hendry \u003candrew.hendry@gmail.com\u003e\nSigned-off-by: Zhu Yi \u003cyi.zhu@intel.com\u003e\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nAcked-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "808f5114a9206fee855117d416440e1071ab375c",
      "tree": "cec3f04220909b77c0880029b63862553ad5161c",
      "parents": [
        "1cc523271ef0b6305c565a143e3d48f6fff826dd"
      ],
      "author": {
        "name": "stephen hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Mon Feb 22 07:57:18 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Feb 22 15:45:56 2010 -0800"
      },
      "message": "packet: convert socket list to RCU (v3)\n\nConvert AF_PACKET to use RCU, eliminating one more reader/writer lock.\n\nThere is no need for a real sk_del_node_init_rcu(), because sk_del_node_init\nis doing the equivalent thing to hlst_del_init_rcu already; but added\nsome comments to try and make that obvious.\n\nSigned-off-by: Stephen Hemminger \u003cshemminger@vyatta.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "1a5778aa000ebfec7f07eed0ffa2852ffb5d16bb",
      "tree": "86ec6c8f9f5a43e3bca90a45eec6dd32f565b2d6",
      "parents": [
        "5ecccb74dc91e22496a142b103ba958f93c29275"
      ],
      "author": {
        "name": "Ben Hutchings",
        "email": "ben@decadent.org.uk",
        "time": "Sun Feb 14 22:35:47 2010 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Feb 14 22:35:47 2010 -0800"
      },
      "message": "net: Fix first line of kernel-doc for a few functions\n\nThe function name must be followed by a space, hypen, space, and a\nshort description.\n\nSigned-off-by: Ben Hutchings \u003cben@decadent.org.uk\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "c4146644a56b1f213c4c5567c75771883bec33c7",
      "tree": "be9a92ed6f16d0517d7d19382921adeacd87a065",
      "parents": [
        "66655de6d132b726be64c324bc3f9ea366d20697"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Mon Feb 08 23:18:45 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Feb 10 11:12:07 2010 -0800"
      },
      "message": "net: add a wrapper sk_entry()\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "512615b6b843ff3ff5ad583f34c39b3f302f5f26",
      "tree": "7420705a314bc691bc478225148935dc67f71904",
      "parents": [
        "d4cada4ae1c012815f95fa507eb86a0ae9d607d7"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Sun Nov 08 10:17:58 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Nov 08 20:53:06 2009 -0800"
      },
      "message": "udp: secondary hash on (local port, local address)\n\nExtends udp_table to contain a secondary hash table.\n\nsocket anchor for this second hash is free, because UDP\ndoesnt use skc_bind_node : We define an union to hold\nboth skc_bind_node \u0026 a new hlist_nulls_node udp_portaddr_node\n\nudp_lib_get_port() inserts sockets into second hash chain\n(additional cost of one atomic op)\n\nudp_lib_unhash() deletes socket from second hash chain\n(additional cost of one atomic op)\n\nNote : No spinlock lockdep annotation is needed, because\nlock for the secondary hash chain is always get after\nlock for primary hash chain.\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": "e022f0b4a03f4fff9323b509df023b8af635716e",
      "tree": "f287633fd72c4f70882b768836101acff7d1bc62",
      "parents": [
        "748879776e3b738d53e64df6dbec7394b829462a"
      ],
      "author": {
        "name": "Krishna Kumar",
        "email": "krkumar2@in.ibm.com",
        "time": "Mon Oct 19 23:46:20 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Oct 20 18:55:45 2009 -0700"
      },
      "message": "net: Introduce sk_tx_queue_mapping\n\nIntroduce sk_tx_queue_mapping; and functions that set, test and\nget this value. Reset sk_tx_queue_mapping to -1 whenever the dst\ncache is set/reset, and in socket alloc. Setting txq to -1 and\nusing valid txq\u003d\u003c0 to n-1\u003e allows the tx path to use the value\nof sk_tx_queue_mapping directly instead of subtracting 1 on every\ntx.\n\nSigned-off-by: Krishna Kumar \u003ckrkumar2@in.ibm.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "421355de876b9f3fcc7e4cb6026e416fb12a5068",
      "tree": "fb814456af86c75e1eb9e330994dda461fc5b4f7",
      "parents": [
        "aace495933a981274b6491d71b915165a61defdc",
        "0fe7463a35aadfaf22d1ca58325ab3851b8d757c"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Oct 13 12:55:20 2009 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Oct 13 12:55:20 2009 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6\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": "5fdb9973c10c2d2e046da0976782ece25e78dc8b",
      "tree": "6b3b8309595e49173d935ed95e71fcc2788d4e24",
      "parents": [
        "53f7e35f8b7fc2f5620a863ac613bcf3080cb6ba"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Thu Oct 08 22:50:25 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Oct 11 23:03:52 2009 -0700"
      },
      "message": "net: Fix struct sock bitfield annotation\n\nSince commit a98b65a3 (net: annotate struct sock bitfield), we lost\n8 bytes in struct sock on 64bit arches because of\nkmemcheck_bitfield_end(flags) misplacement.\n\nFix this by putting together sk_shutdown, sk_no_check, sk_userlocks,\nsk_protocol and sk_type in the \u0027flags\u0027 32bits bitfield\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "bcdce7195e0eab55b37dbd53be53057f38006380",
      "tree": "b4480a2e43561adf2060d1b8da818535cc91dc04",
      "parents": [
        "bd32cafc4707ccc1e66fafdb47fac42217569070"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Tue Oct 06 17:28:29 2009 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Oct 06 17:28:29 2009 -0700"
      },
      "message": "net: speedup sk_wake_async()\n\nAn incoming datagram must bring into cpu cache *lot* of cache lines,\nin particular : (other parts omitted (hash chains, ip route cache...))\n\nOn 32bit arches :\n\noffsetof(struct sock, sk_rcvbuf)       \u003d0x30    (read)\noffsetof(struct sock, sk_lock)         \u003d0x34   (rw)\n\noffsetof(struct sock, sk_sleep)        \u003d0x50 (read)\noffsetof(struct sock, sk_rmem_alloc)   \u003d0x64   (rw)\noffsetof(struct sock, sk_receive_queue)\u003d0x74   (rw)\n\noffsetof(struct sock, sk_forward_alloc)\u003d0x98   (rw)\n\noffsetof(struct sock, sk_callback_lock)\u003d0xcc    (rw)\noffsetof(struct sock, sk_drops)        \u003d0xd8 (read if we add dropcount support, rw if frame dropped)\noffsetof(struct sock, sk_filter)       \u003d0xf8    (read)\n\noffsetof(struct sock, sk_socket)       \u003d0x138 (read)\n\noffsetof(struct sock, sk_data_ready)   \u003d0x15c   (read)\n\n\nWe can avoid sk-\u003esk_socket and socket-\u003efasync_list referencing on sockets\nwith no fasync() structures. (socket-\u003efasync_list ptr is probably already in cache\nbecause it shares a cache line with socket-\u003ewait, ie location pointed by sk-\u003esk_sleep)\n\nThis avoids one cache line load per incoming packet for common cases (no fasync())\n\nWe can leave (or even move in a future patch) sk-\u003esk_socket in a cold location\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.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": "4dc6dc7162c08b9965163c9ab3f9375d4adff2c7",
      "tree": "f4b9959e9ca5e5b8bdb6301663a15e0f67d4c68c",
      "parents": [
        "303d67c288319768b19ed8dbed429fef7eb7c275"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Wed Jul 15 23:13:10 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Jul 16 18:05:26 2009 -0700"
      },
      "message": "net: sock_copy() fixes\n\nCommit e912b1142be8f1e2c71c71001dc992c6e5eb2ec1\n(net: sk_prot_alloc() should not blindly overwrite memory)\ntook care of not zeroing whole new socket at allocation time.\n\nsock_copy() is another spot where we should be very careful.\nWe should not set refcnt to a non null value, until\nwe are sure other fields are correctly setup, or\na lockless reader could catch this socket by mistake,\nwhile not fully (re)initialized.\n\nThis patch puts sk_node \u0026 sk_refcnt to the very beginning\nof struct sock to ease sock_copy() \u0026 sk_prot_alloc() job.\n\nWe add appropriate smp_wmb() before sk_refcnt initializations\nto match our RCU requirements (changes to sock keys should\nbe committed to memory before sk_refcnt setting)\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "ad46276952f1af34cd91d46d49ba13d347d56367",
      "tree": "55cf35156794ab34d8a607c25fd044c37231f9e4",
      "parents": [
        "a57de0b4336e48db2811a2030bb68dba8dd09d88"
      ],
      "author": {
        "name": "Jiri Olsa",
        "email": "jolsa@redhat.com",
        "time": "Wed Jul 08 12:10:31 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Jul 09 17:06:58 2009 -0700"
      },
      "message": "memory barrier: adding smp_mb__after_lock\n\nAdding smp_mb__after_lock define to be used as a smp_mb call after\na lock.\n\nMaking it nop for x86, since {read|write|spin}_lock() on x86 are\nfull memory barriers.\n\nSigned-off-by: Jiri Olsa \u003cjolsa@redhat.com\u003e\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "a57de0b4336e48db2811a2030bb68dba8dd09d88",
      "tree": "a01c189d5fd55c69c9e2e842241e84b46728bc60",
      "parents": [
        "1b614fb9a00e97b1eab54d4e442d405229c059dd"
      ],
      "author": {
        "name": "Jiri Olsa",
        "email": "jolsa@redhat.com",
        "time": "Wed Jul 08 12:09:13 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Jul 09 17:06:57 2009 -0700"
      },
      "message": "net: adding memory barrier to the poll and receive callbacks\n\nAdding memory barrier after the poll_wait function, paired with\nreceive callbacks. Adding fuctions sock_poll_wait and sk_has_sleeper\nto wrap the memory barrier.\n\nWithout the memory barrier, following race can happen.\nThe race fires, when following code paths meet, and the tp-\u003ercv_nxt\nand __add_wait_queue updates stay in CPU caches.\n\nCPU1                         CPU2\n\nsys_select                   receive packet\n  ...                        ...\n  __add_wait_queue           update tp-\u003ercv_nxt\n  ...                        ...\n  tp-\u003ercv_nxt check          sock_def_readable\n  ...                        {\n  schedule                      ...\n                                if (sk-\u003esk_sleep \u0026\u0026 waitqueue_active(sk-\u003esk_sleep))\n                                        wake_up_interruptible(sk-\u003esk_sleep)\n                                ...\n                             }\n\nIf there was no cache the code would work ok, since the wait_queue and\nrcv_nxt are opposit to each other.\n\nMeaning that once tp-\u003ercv_nxt is updated by CPU2, the CPU1 either already\npassed the tp-\u003ercv_nxt check and sleeps, or will get the new value for\ntp-\u003ercv_nxt and will return with new data mask.\nIn both cases the process (CPU1) is being added to the wait queue, so the\nwaitqueue_active (CPU2) call cannot miss and will wake up CPU1.\n\nThe bad case is when the __add_wait_queue changes done by CPU1 stay in its\ncache, and so does the tp-\u003ercv_nxt update on CPU2 side.  The CPU1 will then\nendup calling schedule and sleep forever if there are no more data on the\nsocket.\n\nCalls to poll_wait in following modules were ommited:\n\tnet/bluetooth/af_bluetooth.c\n\tnet/irda/af_irda.c\n\tnet/irda/irnet/irnet_ppp.c\n\tnet/mac80211/rc80211_pid_debugfs.c\n\tnet/phonet/socket.c\n\tnet/rds/af_rds.c\n\tnet/rfkill/core.c\n\tnet/sunrpc/cache.c\n\tnet/sunrpc/rpc_pipe.c\n\tnet/tipc/socket.c\n\nSigned-off-by: Jiri Olsa \u003cjolsa@redhat.com\u003e\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "09ce42d3167e3f20b501fa780c2415332330fac5",
      "tree": "2f0a6e2e3ec51187f4df78e8c75aa31602a6edd4",
      "parents": [
        "d7ed9c05ebf56c04811276207d7110706debe09f",
        "7959ea254ed18faee41160b1c50b3c9664735967"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jun 24 10:01:12 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jun 24 10:01:12 2009 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6:\n  bnx2: Fix the behavior of ethtool when ONBOOT\u003dno\n  qla3xxx: Don\u0027t sleep while holding lock.\n  qla3xxx: Give the PHY time to come out of reset.\n  ipv4 routing: Ensure that route cache entries are usable and reclaimable with caching is off\n  net: Move rx skb_orphan call to where needed\n  ipv6: Use correct data types for ICMPv6 type and code\n  net: let KS8842 driver depend on HAS_IOMEM\n  can: let SJA1000 driver depend on HAS_IOMEM\n  netxen: fix firmware init handshake\n  netxen: fix build with without CONFIG_PM\n  netfilter: xt_rateest: fix comparison with self\n  netfilter: xt_quota: fix incomplete initialization\n  netfilter: nf_log: fix direct userspace memory access in proc handler\n  netfilter: fix some sparse endianess warnings\n  netfilter: nf_conntrack: fix conntrack lookup race\n  netfilter: nf_conntrack: fix confirmation race condition\n  netfilter: nf_conntrack: death_by_timeout() fix\n"
    },
    {
      "commit": "d55d87fdff8252d0e2f7c28c2d443aee17e9d70f",
      "tree": "a4bfb0a47525672c690b63e85bf3f47f4ab014f7",
      "parents": [
        "d5fdd6babcfc2b0e6a8da1acf492a69fb54b4c47"
      ],
      "author": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Mon Jun 22 02:25:25 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jun 23 16:36:25 2009 -0700"
      },
      "message": "net: Move rx skb_orphan call to where needed\n\nIn order to get the tun driver to account packets, we need to be\nable to receive packets with destructors set.  To be on the safe\nside, I added an skb_orphan call for all protocols by default since\nsome of them (IP in particular) cannot handle receiving packets\ndestructors properly.\n\nNow it seems that at least one protocol (CAN) expects to be able\nto pass skb-\u003esk through the rx path without getting clobbered.\n\nSo this patch attempts to fix this properly by moving the skb_orphan\ncall to where it\u0027s actually needed.  In particular, I\u0027ve added it\nto skb_set_owner_[rw] which is what most users of skb-\u003edestructor\ncall.\n\nThis is actually an improvement for tun too since it means that\nwe only give back the amount charged to the socket when the skb\nis passed to another socket that will also be charged accordingly.\n\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nTested-by: Oliver Hartkopp \u003colver@hartkopp.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "d2aa4550379f92e929af7ed1dd4f55e6a1e331f8",
      "tree": "5ef0fc69a507f0d701fd157b6652427eabd5efdd",
      "parents": [
        "9e3e4b1d2d13bead8d52703c82a02b55f108b491",
        "cb2107be43d2fc5eadec58b92b54bf32c00bfff3"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 18 14:07:15 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 18 14:07:15 2009 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6: (55 commits)\n  netxen: fix tx ring accounting\n  netxen: fix detection of cut-thru firmware mode\n  forcedeth: fix dma api mismatches\n  atm: sk_wmem_alloc initial value is one\n  net: correct off-by-one write allocations reports\n  via-velocity : fix no link detection on boot\n  Net / e100: Fix suspend of devices that cannot be power managed\n  TI DaVinci EMAC : Fix rmmod error\n  net: group address list and its count\n  ipv4: Fix fib_trie rebalancing, part 2\n  pkt_sched: Update drops stats in act_police\n  sky2: version 1.23\n  sky2: add GRO support\n  sky2: skb recycling\n  sky2: reduce default transmit ring\n  sky2: receive counter update\n  sky2: fix shutdown synchronization\n  sky2: PCI irq issues\n  sky2: more receive shutdown\n  sky2: turn off pause during shutdown\n  ...\n\nManually fix trivial conflict in net/core/skbuff.c due to kmemcheck\n"
    },
    {
      "commit": "c564039fd83ea16a86a96d52632794b24849e507",
      "tree": "42c9f525d08ea2e7d36c0231cc628587a175a39b",
      "parents": [
        "1d4ac5d5ef9dd965ae211ebe8acbf83dc4d9571b"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Tue Jun 16 10:12:03 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jun 17 04:31:25 2009 -0700"
      },
      "message": "net: sk_wmem_alloc has initial value of one, not zero\n\ncommit 2b85a34e911bf483c27cfdd124aeb1605145dc80\n(net: No more expensive sock_hold()/sock_put() on each tx)\nchanged initial sk_wmem_alloc value.\n\nSome protocols check sk_wmem_alloc value to determine if a timer\nmust delay socket deallocation. We must take care of the sk_wmem_alloc\nvalue being one instead of zero when no write allocations are pending.\n\nReported by Ingo Molnar, and full diagnostic from David Miller.\n\nThis patch introduces three helpers to get read/write allocations\nand a followup patch will use these helpers to report correct\nwrite allocations to user.\n\nReported-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "b3fec0fe35a4ff048484f1408385a27695d4273b",
      "tree": "088c23f098421ea681d9976a83aad73d15be1027",
      "parents": [
        "e1f5b94fd0c93c3e27ede88b7ab652d086dc960f",
        "722f2a6c87f34ee0fd0130a8cf45f81e0705594a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 16 13:09:51 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 16 13:09:51 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus2\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/vegard/kmemcheck\n\n* \u0027for-linus2\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/vegard/kmemcheck: (39 commits)\n  signal: fix __send_signal() false positive kmemcheck warning\n  fs: fix do_mount_root() false positive kmemcheck warning\n  fs: introduce __getname_gfp()\n  trace: annotate bitfields in struct ring_buffer_event\n  net: annotate struct sock bitfield\n  c2port: annotate bitfield for kmemcheck\n  net: annotate inet_timewait_sock bitfields\n  ieee1394/csr1212: fix false positive kmemcheck report\n  ieee1394: annotate bitfield\n  net: annotate bitfields in struct inet_sock\n  net: use kmemcheck bitfields API for skbuff\n  kmemcheck: introduce bitfield API\n  kmemcheck: add opcode self-testing at boot\n  x86: unify pte_hidden\n  x86: make _PAGE_HIDDEN conditional\n  kmemcheck: make kconfig accessible for other architectures\n  kmemcheck: enable in the x86 Kconfig\n  kmemcheck: add hooks for the page allocator\n  kmemcheck: add hooks for page- and sg-dma-mappings\n  kmemcheck: don\u0027t track page tables\n  ...\n"
    },
    {
      "commit": "a98b65a3ad71e702e760bc63f57684301628e837",
      "tree": "6ec3d174f315e9b77faf25c354f5eda99bd31301",
      "parents": [
        "c53bd2e1949ddbe06fe2a6079c0658d58ce25edb"
      ],
      "author": {
        "name": "Vegard Nossum",
        "email": "vegard.nossum@gmail.com",
        "time": "Thu Feb 26 14:46:57 2009 +0100"
      },
      "committer": {
        "name": "Vegard Nossum",
        "email": "vegard.nossum@gmail.com",
        "time": "Mon Jun 15 15:49:36 2009 +0200"
      },
      "message": "net: annotate struct sock bitfield\n\n2009/2/24 Ingo Molnar \u003cmingo@elte.hu\u003e:\n\u003e ok, this is the last warning i have from today\u0027s overnight -tip\n\u003e testruns - a 32-bit system warning in sock_init_data():\n\u003e\n\u003e [    2.610389] NET: Registered protocol family 16\n\u003e [    2.616138] initcall netlink_proto_init+0x0/0x170 returned 0 after 7812 usecs\n\u003e [    2.620010] WARNING: kmemcheck: Caught 32-bit read from uninitialized memory (f642c184)\n\u003e [    2.624002] 010000000200000000000000604990c000000000000000000000000000000000\n\u003e [    2.634076]  i i i i i i u u i i i i i i i i i i i i i i i i i i i i i i i i\n\u003e [    2.641038]          ^\n\u003e [    2.643376]\n\u003e [    2.644004] Pid: 1, comm: swapper Not tainted (2.6.29-rc6-tip-01751-g4d1c22c-dirty #885)\n\u003e [    2.648003] EIP: 0060:[\u003cc07141a1\u003e] EFLAGS: 00010282 CPU: 0\n\u003e [    2.652008] EIP is at sock_init_data+0xa1/0x190\n\u003e [    2.656003] EAX: 0001a800 EBX: f6836c00 ECX: 00463000 EDX: c0e46fe0\n\u003e [    2.660003] ESI: f642c180 EDI: c0b83088 EBP: f6863ed8 ESP: c0c412ec\n\u003e [    2.664003]  DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068\n\u003e [    2.668003] CR0: 8005003b CR2: f682c400 CR3: 00b91000 CR4: 000006f0\n\u003e [    2.672003] DR0: 00000000 DR1: 00000000 DR2: 00000000 DR3: 00000000\n\u003e [    2.676003] DR6: ffff4ff0 DR7: 00000400\n\u003e [    2.680002]  [\u003cc07423e5\u003e] __netlink_create+0x35/0xa0\n\u003e [    2.684002]  [\u003cc07443cc\u003e] netlink_kernel_create+0x4c/0x140\n\u003e [    2.688002]  [\u003cc072755e\u003e] rtnetlink_net_init+0x1e/0x40\n\u003e [    2.696002]  [\u003cc071b601\u003e] register_pernet_operations+0x11/0x30\n\u003e [    2.700002]  [\u003cc071b72c\u003e] register_pernet_subsys+0x1c/0x30\n\u003e [    2.704002]  [\u003cc0bf3c8c\u003e] rtnetlink_init+0x4c/0x100\n\u003e [    2.708002]  [\u003cc0bf4669\u003e] netlink_proto_init+0x159/0x170\n\u003e [    2.712002]  [\u003cc0101124\u003e] do_one_initcall+0x24/0x150\n\u003e [    2.716002]  [\u003cc0bbf3c7\u003e] do_initcalls+0x27/0x40\n\u003e [    2.723201]  [\u003cc0bbf3fc\u003e] do_basic_setup+0x1c/0x20\n\u003e [    2.728002]  [\u003cc0bbfb8a\u003e] kernel_init+0x5a/0xa0\n\u003e [    2.732002]  [\u003cc0103e47\u003e] kernel_thread_helper+0x7/0x10\n\u003e [    2.736002]  [\u003cffffffff\u003e] 0xffffffff\n\nWe fix this false positive by annotating the bitfield in struct\nsock.\n\nReported-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Vegard Nossum \u003cvegard.nossum@gmail.com\u003e\n"
    },
    {
      "commit": "2b85a34e911bf483c27cfdd124aeb1605145dc80",
      "tree": "3cea3e8a27b62de2f92e759641c27200d8bde421",
      "parents": [
        "f2333a014c1e13ac8e1b73a6fd77731c524eff78"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Thu Jun 11 02:55:43 2009 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Jun 11 02:55:43 2009 -0700"
      },
      "message": "net: No more expensive sock_hold()/sock_put() on each tx\n\nOne of the problem with sock memory accounting is it uses\na pair of sock_hold()/sock_put() for each transmitted packet.\n\nThis slows down bidirectional flows because the receive path\nalso needs to take a refcount on socket and might use a different\ncpu than transmit path or transmit completion path. So these\ntwo atomic operations also trigger cache line bounces.\n\nWe can see this in tx or tx/rx workloads (media gateways for example),\nwhere sock_wfree() can be in top five functions in profiles.\n\nWe use this sock_hold()/sock_put() so that sock freeing\nis delayed until all tx packets are completed.\n\nAs we also update sk_wmem_alloc, we could offset sk_wmem_alloc\nby one unit at init time, until sk_free() is called.\nOnce sk_free() is called, we atomic_dec_and_test(sk_wmem_alloc)\nto decrement initial offset and atomicaly check if any packets\nare in flight.\n\nskb_set_owner_w() doesnt call sock_hold() anymore\n\nsock_wfree() doesnt call sock_put() anymore, but check if sk_wmem_alloc\nreached 0 to perform the final freeing.\n\nDrawback is that a skb-\u003etruesize error could lead to unfreeable sockets, or\neven worse, prematurely calling __sk_free() on a live socket.\n\nNice speedups on SMP. tbench for example, going from 2691 MB/s to 2711 MB/s\non my 8 cpu dev machine, even if tbench was not really hitting sk_refcnt\ncontention point. 5 % speedup on a UDP transmit workload (depends\non number of flows), lowering TX completion cpu usage.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "e70049b9e74267dd47e1ffa62302073487afcb48",
      "tree": "2cd000c0751ef31c9044b020d63f278cdf4f332d",
      "parents": [
        "d18921a0e319ab512f8186b1b1142c7b8634c779",
        "f7e603ad8f78cd3b59e33fa72707da0cbabdf699"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Feb 24 03:50:29 2009 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Feb 24 03:50:29 2009 -0800"
      },
      "message": "Merge branch \u0027master\u0027 of /home/davem/src/GIT/linux-2.6/\n"
    },
    {
      "commit": "92a0acce186cde8ead56c6915d9479773673ea1a",
      "tree": "97b7663f77f8274cb52d429c8a7db97c70daf745",
      "parents": [
        "34edaa88324004baf4884fb0388f86059d9c4878"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Feb 17 21:24:05 2009 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Feb 17 21:24:05 2009 -0800"
      },
      "message": "net: Kill skb_truesize_check(), it only catches false-positives.\n\nA long time ago we had bugs, primarily in TCP, where we would modify\nskb-\u003etruesize (for TSO queue collapsing) in ways which would corrupt\nthe socket memory accounting.\n\nskb_truesize_check() was added in order to try and catch this error\nmore systematically.\n\nHowever this debugging check has morphed into a Frankenstein of sorts\nand these days it does nothing other than catch false-positives.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "20d4947353be60e909e6b1a79d241457edd6833f",
      "tree": "939ced518fc52e57df9ee9efb0cd14b6e26a3bc4",
      "parents": [
        "ac45f602ee3d1b6f326f68bc0c2591ceebf05ba4"
      ],
      "author": {
        "name": "Patrick Ohly",
        "email": "patrick.ohly@intel.com",
        "time": "Thu Feb 12 05:03:38 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Feb 15 22:43:35 2009 -0800"
      },
      "message": "net: socket infrastructure for SO_TIMESTAMPING\n\nThe overlap with the old SO_TIMESTAMP[NS] options is handled so\nthat time stamping in software (net_enable_timestamp()) is\nenabled when SO_TIMESTAMP[NS] and/or SO_TIMESTAMPING_RX_SOFTWARE\nis set.  It\u0027s disabled if all of these are off.\n\nSigned-off-by: Patrick Ohly \u003cpatrick.ohly@intel.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "5e30589521518bff36fd2638b3c3d69679c50436",
      "tree": "6ac985658a06b0787e4354d0d16d380ea9b16a5a",
      "parents": [
        "ac178ef0ae9eb44fd527d87aa9b6394e05f56e1f",
        "d2f8d7ee1a9b4650b4e43325b321801264f7c37a"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Feb 14 23:12:00 2009 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Feb 14 23:12:00 2009 -0800"
      },
      "message": "Merge branch \u0027master\u0027 of /home/davem/src/GIT/linux-2.6/\n\nConflicts:\n\tdrivers/net/wireless/iwlwifi/iwl-agn.c\n\tdrivers/net/wireless/iwlwifi/iwl3945-base.c\n"
    },
    {
      "commit": "99709372736a216f99eb32b76fba835a2bfc93a8",
      "tree": "62a84b976965436b841c65b63e52240d0b06bc29",
      "parents": [
        "fb0886745a75ce98bde3aac421adc69fe61a1905"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Thu Feb 12 16:43:17 2009 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Feb 12 16:43:17 2009 -0800"
      },
      "message": "net: don\u0027t use in_atomic() in gfp_any()\n\nThe problem is that in_atomic() will return false inside spinlocks if\nCONFIG_PREEMPT\u003dn.  This will lead to deadlockable GFP_KERNEL allocations\nfrom spinlocked regions.\n\nSecondly, if CONFIG_PREEMPT\u003dy, this bug solves itself because networking\nwill instead use GFP_ATOMIC from this callsite.  Hence we won\u0027t get the\nmight_sleep() debugging warnings which would have informed us of the buggy\ncallsites.\n\nSolve both these problems by switching to in_interrupt().  Now, if someone\nruns a gfp_any() allocation from inside spinlock we will get the warning\nif CONFIG_PREEMPT\u003dy.\n\nI reviewed all callsites and most of them were too complex for my little\nbrain and none of them documented their interface requirements.  I have no\nidea what this patch will do.\n\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "4cc7f68d65558f683c702d4fe3a5aac4c5227b97",
      "tree": "88f2987e503790d2015a7f0a3b5748d05a0df140",
      "parents": [
        "9a279bcbe347496799711155ed41a89bc40f79c5"
      ],
      "author": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Wed Feb 04 16:55:54 2009 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Feb 04 16:55:54 2009 -0800"
      },
      "message": "net: Reexport sock_alloc_send_pskb\n\nThe function sock_alloc_send_pskb is completely useless if not\nexported since most of the code in it won\u0027t be used as is.  In\nfact, this code has already been duplicated in the tun driver.\n\nNow that we need accounting in the tun driver, we can in fact\nuse this function as is.  So this patch marks it for export again.\n\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "dd24c00191d5e4a1ae896aafe33c6b8095ab4bd1",
      "tree": "e955c09e0b288e50c706b6ee409229d5a930c80c",
      "parents": [
        "1748376b6626acf59c24e9592ac67b3fe2a0e026"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Tue Nov 25 21:17:14 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Nov 25 21:17:14 2008 -0800"
      },
      "message": "net: Use a percpu_counter for orphan_count\n\nInstead of using one atomic_t per protocol, use a percpu_counter\nfor \"orphan_count\", to reduce cache line contention on\nheavy duty network servers. \n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "1748376b6626acf59c24e9592ac67b3fe2a0e026",
      "tree": "65a28205daf1ca92e31389440764fc407365014e",
      "parents": [
        "c1b56878fb68e9c14070939ea4537ad4db79ffae"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Tue Nov 25 21:16:35 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Nov 25 21:16:35 2008 -0800"
      },
      "message": "net: Use a percpu_counter for sockets_allocated\n\nInstead of using one atomic_t per protocol, use a percpu_counter\nfor \"sockets_allocated\", to reduce cache line contention on\nheavy duty network servers. \n\nNote : We revert commit (248969ae31e1b3276fc4399d67ce29a5d81e6fd9\nnet: af_unix can make unix_nr_socks visbile in /proc),\nsince it is not anymore used after sock_prot_inuse_add() addition\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "198d6ba4d7f48c94f990f4604f0b3d73925e0ded",
      "tree": "56bbdf8ba2553c23c8099da9344a8f1d1aba97ab",
      "parents": [
        "9a57f7fabd383920585ed8b74eacd117c6551f2d",
        "7f0f598a0069d1ab072375965a4b69137233169c"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Nov 18 23:38:23 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Nov 18 23:38:23 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/isdn/i4l/isdn_net.c\n\tfs/cifs/connect.c\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": "e8f6fbf62de37cbc2e179176ac7010d5f4396b67",
      "tree": "ac22d719c3c93d24b7eeda395b3271be60bfc661",
      "parents": [
        "1fa989e80a9a104bf3b81842a5f4c1867d7aa9c4"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Nov 12 01:38:36 2008 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Nov 13 23:19:10 2008 -0800"
      },
      "message": "lockdep: include/linux/lockdep.h - fix warning in net/bluetooth/af_bluetooth.c\n\nfix this warning:\n\n  net/bluetooth/af_bluetooth.c:60: warning: ‘bt_key_strings’ defined but not used\n  net/bluetooth/af_bluetooth.c:71: warning: ‘bt_slock_key_strings’ defined but not used\n\nthis is a lockdep macro problem in the !LOCKDEP case.\n\nWe cannot convert it to an inline because the macro works on multiple types,\nbut we can mark the parameter used.\n\n[ also clean up a misaligned tab in sock_lock_init_class_and_name() ]\n\n[ also remove #ifdefs from around af_family_clock_key strings - which\n  were certainly added to get rid of the ugly build warnings. ]\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "2378982487c492541d17adc0a870e7e83b07ba43",
      "tree": "0763aee8034a2db3c3949a6b9d7952263420335e",
      "parents": [
        "e4412cb8a6b4190cf73ae44c859fd7e3727d8b13"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Wed Nov 12 23:25:32 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Nov 12 23:25:32 2008 -0800"
      },
      "message": "net: ifdef struct sock::sk_async_wait_queue\n\nEvery user is under CONFIG_NET_DMA already, so ifdef field as well.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "d5f642384e9da75393160350f75bbb9a527f7c58",
      "tree": "098e581485de2878ce716f7a6b45af2e89505551",
      "parents": [
        "d2ad3ca88da02baeccd5216780f1fe983c6953ba"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Tue Nov 04 14:45:58 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Nov 04 14:45:58 2008 -0800"
      },
      "message": "net: #ifdef -\u003esk_security\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "a1744d3bee19d3b9cbfb825ab316a101b9c9f109",
      "tree": "c0e2324c09beca0eb5782eb5abf241ea2b7a4a11",
      "parents": [
        "275f165fa970174f8a98205529750e8abb6c0a33",
        "a432226614c5616e3cfd211e0acffa0acfb4770c"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Oct 31 00:17:34 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Oct 31 00:17:34 2008 -0700"
      },
      "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/p54/p54common.c\n"
    },
    {
      "commit": "ad1d967c88e349c7e822ad75dd3247a2a50d2ea3",
      "tree": "4564a715df604f9e8816f60f7bc6ab0d211c848c",
      "parents": [
        "194dcdba5a11a0238aef7ed91f32df77cb31505b"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Thu Oct 30 23:54:35 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Oct 30 23:54:35 2008 -0700"
      },
      "message": "net: delete excess kernel-doc notation\n\nRemove excess kernel-doc function parameters from networking header\n\u0026 driver files:\n\nWarning(include/net/sock.h:946): Excess function parameter or struct member \u0027sk\u0027 description in \u0027sk_filter_release\u0027\nWarning(include/linux/netdevice.h:1545): Excess function parameter or struct member \u0027cpu\u0027 description in \u0027netif_tx_lock\u0027\nWarning(drivers/net/wan/z85230.c:712): Excess function parameter or struct member \u0027regs\u0027 description in \u0027z8530_interrupt\u0027\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\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"
    },
    {
      "commit": "def8b4faff5ca349beafbbfeb2c51f3602a6ef3a",
      "tree": "a90fbb0b6ae2a49c507465801f31df77bc5ebf9d",
      "parents": [
        "b057efd4d226fcc3a92b0dc6d8ea8e8185ecb260"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Tue Oct 28 13:24:06 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Oct 28 13:24:06 2008 -0700"
      },
      "message": "net: reduce structures when XFRM\u003dn\n\nifdef out\n* struct sk_buff::sp\t\t(pointer)\n* struct dst_entry::xfrm\t(pointer)\n* struct sock::sk_policy\t(2 pointers)\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "c57943a1c96214ee68f3890bb6772841ffbfd606",
      "tree": "bfe79b29240d442c8ea104a89c2e827032b2824e",
      "parents": [
        "b339a47c370ec669f789c5989f54eec1d78574bb"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Tue Oct 07 14:18:42 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Oct 07 14:18:42 2008 -0700"
      },
      "message": "net: wrap sk-\u003esk_backlog_rcv()\n\nWrap calling sk-\u003esk_backlog_rcv() in a function. This will allow extending the\ngeneric sk_backlog_rcv behaviour.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "23542618deb77cfed312842fe8c41ed19fb16470",
      "tree": "9658279a6e3593846a9127c7a8bffb7ce0077d62",
      "parents": [
        "607c4aaf03041c8bd81555a0218050c0f895088e"
      ],
      "author": {
        "name": "KOVACS Krisztian",
        "email": "hidden@sch.bme.hu",
        "time": "Tue Oct 07 12:41:01 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Oct 07 12:41:01 2008 -0700"
      },
      "message": "inet: Don\u0027t lookup the socket if there\u0027s a socket attached to the skb\n\nUse the socket cached in the skb if it\u0027s present.\n\nSigned-off-by: KOVACS Krisztian \u003chidden@sch.bme.hu\u003e\nAcked-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "af01d537463714e36e2c96d2da35902b76cd6827",
      "tree": "6972a43882b0f5809a02d1f3866726cc78c02fe8",
      "parents": [
        "a627266570605a98c5fda5b8234d9e92015e4d14"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Thu Aug 28 02:53:51 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Aug 28 02:53:51 2008 -0700"
      },
      "message": "net: more #ifdef CONFIG_COMPAT\n\nAll users of struct proto::compat_[gs]etsockopt and\nstruct inet_connection_sock_af_ops::compat_[gs]etsockopt are under\n#ifdef already, so use it in structure definition too.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "5c52ba170f8167511bdb65b981f4582100c40675",
      "tree": "1dab120003eb696dfb4ca18c40861274a317739d",
      "parents": [
        "cf1100a7a4f2573f50f9a923b53373977328e3c8"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Wed Jul 16 20:28:10 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jul 16 20:28:10 2008 -0700"
      },
      "message": "sock: add net to prot-\u003eenter_memory_pressure callback\n\nThe tcp_enter_memory_pressure calls NET_INC_STATS, but doesn\u0027t\nhave where to get the net from.\n\nI decided to add a sk argument, not the net itself, only to factor\nall the required sock_net(sk) calls inside the enter_memory_pressure \ncallback itself.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "972692e0db9b0a62329ca394062b58917ddbd03c",
      "tree": "6060599150b57de1f94ed85f8078da098fb8eb6a",
      "parents": [
        "5bbc1722d52ad3df062d5742a7e958276e57ebd7"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jun 17 22:41:38 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jun 17 22:41:38 2008 -0700"
      },
      "message": "net: Add sk_set_socket() helper.\n\nIn order to more easily grep for all things that set\nsk-\u003esk_socket, add sk_set_socket() helper inline function.\n\nSuggested (although only half-seriously) by Evgeniy Polyakov.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "cb61cb9b8b5ef6c2697d84e5015e314626eb2fba",
      "tree": "430dd8d5b56d0a9911750ffcbd97563ce68d1b27",
      "parents": [
        "fe2c802ab62aa63d276deafa905875f3455f2621"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Tue Jun 17 21:04:56 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jun 17 21:04:56 2008 -0700"
      },
      "message": "udp: sk_drops handling\n\nIn commits 33c732c36169d7022ad7d6eb474b0c9be43a2dc1 ([IPV4]: Add raw\ndrops counter) and a92aa318b4b369091fd80433c80e62838db8bc1c ([IPV6]:\nAdd raw drops counter), Wang Chen added raw drops counter for\n/proc/net/raw \u0026 /proc/net/raw6\n\nThis patch adds this capability to UDP sockets too (/proc/net/udp \u0026\n/proc/net/udp6).\n\nThis means that \u0027RcvbufErrors\u0027 errors found in /proc/net/snmp can be also\nbe examined for each udp socket.\n\n# grep Udp: /proc/net/snmp\nUdp: InDatagrams NoPorts InErrors OutDatagrams RcvbufErrors SndbufErrors\nUdp: 23971006 75 899420 16390693 146348 0\n\n# cat /proc/net/udp\n sl  local_address rem_address   st tx_queue rx_queue tr tm-\u003ewhen retrnsmt  ---\nuid  timeout inode ref pointer drops\n 75: 00000000:02CB 00000000:0000 07 00000000:00000000 00:00000000 00000000  ---\n  0        0 2358 2 ffff81082a538c80 0\n111: 00000000:006F 00000000:0000 07 00000000:00000000 00:00000000 00000000  ---\n  0        0 2286 2 ffff81042dd35c80 146348\n\nIn this example, only port 111 (0x006F) was flooded by messages that\nuser program could not read fast enough. 146348 messages were lost.\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "338db085518a8436cdecd33f7b52a06ec16d9ec1",
      "tree": "d8f9c2ea1fa8fe9701e3c7f85452984d98819d1a",
      "parents": [
        "22196d3648581b253f927186b30075fb005287b0"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jun 17 01:09:00 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jun 17 01:09:00 2008 -0700"
      },
      "message": "net: Kill SOCK_SLEEP_PRE and SOCK_SLEEP_POST, no users.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "7d06b2e053d2d536348e3a0f6bb02982a41bea37",
      "tree": "ec6a5c3f448e84cd431a0397b9e2a87ca25aec17",
      "parents": [
        "4ae127d1b6c71f9240dd4245f240e6dd8fc98014"
      ],
      "author": {
        "name": "Brian Haley",
        "email": "brian.haley@hp.com",
        "time": "Sat Jun 14 17:04:49 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Jun 14 17:04:49 2008 -0700"
      },
      "message": "net: change proto destroy method to return void\n\nChange struct proto destroy function pointer to return void.  Noticed\nby Al Viro.\n\nSigned-off-by: Brian Haley \u003cbrian.haley@hp.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "65a18ec58e5e6186103f62f720acea94dfb26f4e",
      "tree": "aa0e58979c343d4519ba9dfa3a1e6a416e98e16b",
      "parents": [
        "5d1e4468a7705db7c1415a65fd16f07113afc1b2"
      ],
      "author": {
        "name": "Denis V. Lunev",
        "email": "den@openvz.org",
        "time": "Wed Apr 16 01:59:46 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Apr 16 01:59:46 2008 -0700"
      },
      "message": "[NETNS]: Add netns refcnt debug for kernel sockets.\n\nProtocol control sockets and netlink kernel sockets should not prevent the\nnamespace stop request. They are initialized and disposed in a special way by\nsk_change_net/sk_release_kernel.\n\nSigned-off-by: Denis V. Lunev \u003cden@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "43db6d65e0ef943a361cb91f8baa49132009227b",
      "tree": "5770f1dac28a209bb6e0c04f5948c454bb6a8733",
      "parents": [
        "b715631fad3ed320b85d386a84a6fb0b3f86b0b9"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Thu Apr 10 01:43:09 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Apr 10 01:43:09 2008 -0700"
      },
      "message": "socket: sk_filter deinline\n\nThe sk_filter function is too big to be inlined. This saves 2296 bytes\nof text on allyesconfig.\n\nSigned-off-by: Stephen Hemminger \u003cshemminger@vyatta.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "c29a0bc4dfc4d833eb702b1929cec96a3eeb9f7a",
      "tree": "4917ad0bd8979dcae34f626032b28e62b9e358fd",
      "parents": [
        "8efa6e93cb2666dceafc4844057fdcb9aa324fb7"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Mon Mar 31 19:41:46 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Mar 31 19:41:46 2008 -0700"
      },
      "message": "[SOCK][NETNS]: Add a struct net argument to sock_prot_inuse_add and _get.\n\nThis counter is about to become per-proto-and-per-net, so we\u0027ll need \ntwo arguments to determine which cell in this \"table\" to work with.\n\nAll the places, but proc already pass proper net to it - proc will be\ntuned a bit later.\n\nSome indentation with spaces in proc files is done to keep the file\ncoding style consistent.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@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": "60e7663d462af3994f292cb3691ea4f7371a9220",
      "tree": "84eb3c792c8f3c46d77e0296855ea37ae573b24a",
      "parents": [
        "1338d466d9c3f8a65cc6d83c629cd906f2a989f8"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Fri Mar 28 16:39:10 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Mar 28 16:39:10 2008 -0700"
      },
      "message": "[SOCK]: Drop per-proto inuse init and fre functions (v2).\n\nConstructive part of the set is finished here. We have to remove the\npcounter, so start with its init and free functions.\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": "1338d466d9c3f8a65cc6d83c629cd906f2a989f8",
      "tree": "2f30913c1c9c6d3c0616ac593e79b0431cc150d3",
      "parents": [
        "13ff3d6fa4e6d8b6ee7c64245a0078e6a0e6f977"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Fri Mar 28 16:38:43 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Mar 28 16:38:43 2008 -0700"
      },
      "message": "[SOCK]: Introduce a percpu inuse counters array (v2).\n\nAnd redirect sock_prot_inuse_add and _get to use one.\n\nAs far as the dereferences are concerned. Before the patch we made\n1 dereference to proto-\u003einuse.add call, the call itself and then\ncalled the __get_cpu_var() on a static variable. After the patch we \nmake a direct call, then one dereference to proto-\u003einuse_idx and \nthen the same __get_cpu_var() on a still static variable. So this \npatch doesn\u0027t seem to produce performance penalty on SMP.\n\nThis is not per-net yet, but I will deliberately make NET_NS\u003dy case\nseparated from NET_NS\u003dn one, since it\u0027ll cost us one-or-two more \ndereferences to get the struct net and the inuse counter.\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": "13ff3d6fa4e6d8b6ee7c64245a0078e6a0e6f977",
      "tree": "c52580ac89aff1b4eabbd94e6cb73af15e91051f",
      "parents": [
        "bc578a54f0fd489d0722303f9a52508495ccaf9a"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Fri Mar 28 16:38:17 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Mar 28 16:38:17 2008 -0700"
      },
      "message": "[SOCK]: Enumerate struct proto-s to facilitate percpu inuse accounting (v2).\n\nThe inuse counters are going to become a per-cpu array.  Introduce an\nindex for this array on the struct proto.\n\nTo handle the case of proto register-unregister-register loop the\nbitmap is used. All its bits manipulations are protected with\nproto_list_lock and a sanity check for the bitmap being exhausted is\nalso added.\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": "f5aa23fd49063745f85644dd7a9330acd706add6",
      "tree": "51ff4c7006fe7f7551b29f24ec1830e19dc7a278",
      "parents": [
        "9c2f5746b9cd536f0007709196d85a7e7d0070fa"
      ],
      "author": {
        "name": "Denis V. Lunev",
        "email": "den@openvz.org",
        "time": "Wed Mar 26 00:48:17 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Mar 26 00:48:17 2008 -0700"
      },
      "message": "[NETNS]: Compilation warnings under CONFIG_NET_NS.\n\nRecent commits from YOSHIFUJI Hideaki \u003cyoshfuji@linux-ipv6.org\u003e\nhave been introduced a several compilation warnings\n\u0027assignment discards qualifiers from pointer target type\u0027\ndue to extra const modifier in the inline call parameters of\n{dev|sock|twsk}_net_set.\n\nDrop it.\n\nSigned-off-by: Denis V. Lunev \u003cden@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "3b1e0a655f8eba44ab1ee2a1068d169ccfb853b9",
      "tree": "09edb35f32ebcfb1b4dad904425128a110ef16ee",
      "parents": [
        "c346dca10840a874240c78efe3f39acf4312a1f2"
      ],
      "author": {
        "name": "YOSHIFUJI Hideaki",
        "email": "yoshfuji@linux-ipv6.org",
        "time": "Wed Mar 26 02:26:21 2008 +0900"
      },
      "committer": {
        "name": "YOSHIFUJI Hideaki",
        "email": "yoshfuji@linux-ipv6.org",
        "time": "Wed Mar 26 04:39:55 2008 +0900"
      },
      "message": "[NET] NETNS: Omit sock-\u003esk_net without CONFIG_NET_NS.\n\nIntroduce per-sock inlines: sock_net(), sock_net_set()\nand per-inet_timewait_sock inlines: twsk_net(), twsk_net_set().\nWithout CONFIG_NET_NS, no namespace other than \u0026init_net exists.\nLet\u0027s explicitly define them to help compiler optimizations.\n\nSigned-off-by: YOSHIFUJI Hideaki \u003cyoshfuji@linux-ipv6.org\u003e\n"
    },
    {
      "commit": "fc8717baa8f52dd8d1b90df9008300ef3ec794ed",
      "tree": "149c5e1c8db5bcf2af47caeb732f900bc722875f",
      "parents": [
        "6ba5a3c52da00015e739469e3b00cd6d0d4c5c67"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Sat Mar 22 16:56:51 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Mar 22 16:56:51 2008 -0700"
      },
      "message": "[RAW]: Add raw_hashinfo member on struct proto.\n\nSorry for the patch sequence confusion :| but I found that the similar\nthing can be done for raw sockets easily too late.\n\nExpand the proto.h union with the raw_hashinfo member and use it in\nraw_prot and rawv6_prot. This allows to drop the protocol specific\nversions of hash and unhash callbacks.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "39d8cda76cfb1178455f9d196b39e773878e6c05",
      "tree": "b58af892ccb3fd232078a87148c1dc9622be0c84",
      "parents": [
        "22aba383ce52f8ca8740f9a74dc66b1b68138813"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Sat Mar 22 16:50:58 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Mar 22 16:50:58 2008 -0700"
      },
      "message": "[SOCK]: Add udp_hash member to struct proto.\n\nInspired by the commit ab1e0a13 ([SOCK] proto: Add hashinfo member to \nstruct proto) from Arnaldo, I made similar thing for UDP/-Lite IPv4 \nand -v6 protocols.\n\nThe result is not that exciting, but it removes some levels of\nindirection in udpxxx_get_port and saves some space in code and text.\n\nThe first step is to union existing hashinfo and new udp_hash on the\nstruct proto and give a name to this union, since future initialization \nof tcpxxx_prot, dccp_vx_protinfo and udpxxx_protinfo will cause gcc \nwarning about inability to initialize anonymous member this way.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "4cd9029d25f6612302f82634620f107c65f790b1",
      "tree": "f98b5afba51838a8fbf47b2eecf5adceef6eb2fc",
      "parents": [
        "28518fc1701a757a3df8aa2d2ac2e5d1efd1c3e5"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Fri Mar 21 15:54:53 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Mar 21 15:54:53 2008 -0700"
      },
      "message": "socket: SOCK_DEBUG type checking\n\nUse the inline trick (same as pr_debug) to get checking of debug\nstatements even if no code is generated.\n\nSigned-off-by: Stephen Hemminger \u003cshemminger@vyatta.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "82cc1a7a56872056af0ead6c7d695aa223f36695",
      "tree": "0891cf854a40cac90fc4fec3bd6b5ecb213d4452",
      "parents": [
        "a25606c845856e5ca5ed54d23cab077e3a49bf10"
      ],
      "author": {
        "name": "Peter P Waskiewicz Jr",
        "email": "peter.p.waskiewicz.jr@intel.com",
        "time": "Fri Mar 21 03:43:19 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Mar 21 03:43:19 2008 -0700"
      },
      "message": "[NET]: Add per-connection option to set max TSO frame size\n\nUpdate: My mailer ate one of Jarek\u0027s feedback mails...  Fixed the\nparameter in netif_set_gso_max_size() to be u32, not u16.  Fixed the\nwhitespace issue due to a patch import botch.  Changed the types from\nu32 to unsigned int to be more consistent with other variables in the\narea.  Also brought the patch up to the latest net-2.6.26 tree.\n\nUpdate: Made gso_max_size container 32 bits, not 16.  Moved the\nlocation of gso_max_size within netdev to be less hotpath.  Made more\nconsistent names between the sock and netdev layers, and added a\ndefine for the max GSO size.\n\nUpdate: Respun for net-2.6.26 tree.\n\nUpdate: changed max_gso_frame_size and sk_gso_max_size from signed to\nunsigned - thanks Stephen!\n\nThis patch adds the ability for device drivers to control the size of\nthe TSO frames being sent to them, per TCP connection.  By setting the\nnetdevice\u0027s gso_max_size value, the socket layer will set the GSO\nframe size based on that value.  This will propogate into the TCP\nlayer, and send TSO\u0027s of that size to the hardware.\n\nThis can be desirable to help tune the bursty nature of TSO on a\nper-adapter basis, where one may have 1 GbE and 10 GbE devices\ncoexisting in a system, one running multiqueue and the other not, etc.\n\nThis can also be desirable for devices that cannot support full 64 KB\nTSO\u0027s, but still want to benefit from some level of segmentation\noffloading.\n\nSigned-off-by: Peter P Waskiewicz Jr \u003cpeter.p.waskiewicz.jr@intel.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "edf0208702007ec1f6a36756fdd005f771a4cf17",
      "tree": "f323141ddde44db532d984ea7bf769a05220aa0c",
      "parents": [
        "9dfbec1fb2bedff6b118504055cd9f0485edba45"
      ],
      "author": {
        "name": "Denis V. Lunev",
        "email": "den@openvz.org",
        "time": "Fri Feb 29 11:18:32 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Feb 29 11:18:32 2008 -0800"
      },
      "message": "[NET]: Make netlink_kernel_release publically available as sk_release_kernel.\n\nThis staff will be needed for non-netlink kernel sockets, which should\nalso not pin a namespace like tcp_socket and icmp_socket.\n\nSigned-off-by: Denis V. Lunev \u003cden@openvz.org\u003e\nAcked-by: Daniel Lezcano \u003cdlezcano@fr.ibm.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "31729363418ea25b01aa9410838c38e36792e44c",
      "tree": "a6ddbab1cc5c6f5b732401b2c3521b41cfbec72a",
      "parents": [
        "2df96af03d97e98cbea9f9cb71fc56ea5fc544b2"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Mon Feb 18 20:52:13 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Feb 18 20:52:13 2008 -0800"
      },
      "message": "net: fix kernel-doc warnings in header files\n\nAdd missing structure kernel-doc descriptions to sock.h \u0026 skbuff.h\nto fix kernel-doc warnings.\n\n(I think that Stephen H. sent a similar patch, but I can\u0027t find it.\nI just want to kill the warnings, with either patch.)\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "ab1e0a13d70299e792fd0527cefd070c1405fa5b",
      "tree": "d470e7b94b0e33ea59b12713366f1bee0b94f78c",
      "parents": [
        "9dc7f30e3bac329998a2a9bb814bd0abc7cb58e2"
      ],
      "author": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@redhat.com",
        "time": "Sun Feb 03 04:06:04 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Feb 03 04:28:52 2008 -0800"
      },
      "message": "[SOCK] proto: Add hashinfo member to struct proto\n\nThis way we can remove TCP and DCCP specific versions of\n\nsk-\u003esk_prot-\u003eget_port: both v4 and v6 use inet_csk_get_port\nsk-\u003esk_prot-\u003ehash:     inet_hash is directly used, only v6 need\n                       a specific version to deal with mapped sockets\nsk-\u003esk_prot-\u003eunhash:   both v4 and v6 use inet_hash directly\n\nstruct inet_connection_sock_af_ops also gets a new member, bind_conflict, so\nthat inet_csk_get_port can find the per family routine.\n\nNow only the lookup routines receive as a parameter a struct inet_hashtable.\n\nWith this we further reuse code, reducing the difference among INET transport\nprotocols.\n\nEventually work has to be done on UDP and SCTP to make them share this\ninfrastructure and get as a bonus inet_diag interfaces so that iproute can be\nused with these protocols.\n\nnet-2.6/net/ipv4/inet_hashtables.c:\n  struct proto\t\t\t     |   +8\n  struct inet_connection_sock_af_ops |   +8\n 2 structs changed\n  __inet_hash_nolisten               |  +18\n  __inet_hash                        | -210\n  inet_put_port                      |   +8\n  inet_bind_bucket_create            |   +1\n  __inet_hash_connect                |   -8\n 5 functions changed, 27 bytes added, 218 bytes removed, diff: -191\n\nnet-2.6/net/core/sock.c:\n  proto_seq_show                     |   +3\n 1 function changed, 3 bytes added, diff: +3\n\nnet-2.6/net/ipv4/inet_connection_sock.c:\n  inet_csk_get_port                  |  +15\n 1 function changed, 15 bytes added, diff: +15\n\nnet-2.6/net/ipv4/tcp.c:\n  tcp_set_state                      |   -7\n 1 function changed, 7 bytes removed, diff: -7\n\nnet-2.6/net/ipv4/tcp_ipv4.c:\n  tcp_v4_get_port                    |  -31\n  tcp_v4_hash                        |  -48\n  tcp_v4_destroy_sock                |   -7\n  tcp_v4_syn_recv_sock               |   -2\n  tcp_unhash                         | -179\n 5 functions changed, 267 bytes removed, diff: -267\n\nnet-2.6/net/ipv6/inet6_hashtables.c:\n  __inet6_hash |   +8\n 1 function changed, 8 bytes added, diff: +8\n\nnet-2.6/net/ipv4/inet_hashtables.c:\n  inet_unhash                        | +190\n  inet_hash                          | +242\n 2 functions changed, 432 bytes added, diff: +432\n\nvmlinux:\n 16 functions changed, 485 bytes added, 492 bytes removed, diff: -7\n\n/home/acme/git/net-2.6/net/ipv6/tcp_ipv6.c:\n  tcp_v6_get_port                    |  -31\n  tcp_v6_hash                        |   -7\n  tcp_v6_syn_recv_sock               |   -9\n 3 functions changed, 47 bytes removed, diff: -47\n\n/home/acme/git/net-2.6/net/dccp/proto.c:\n  dccp_destroy_sock                  |   -7\n  dccp_unhash                        | -179\n  dccp_hash                          |  -49\n  dccp_set_state                     |   -7\n  dccp_done                          |   +1\n 5 functions changed, 1 bytes added, 242 bytes removed, diff: -241\n\n/home/acme/git/net-2.6/net/dccp/ipv4.c:\n  dccp_v4_get_port                   |  -31\n  dccp_v4_request_recv_sock          |   -2\n 2 functions changed, 33 bytes removed, diff: -33\n\n/home/acme/git/net-2.6/net/dccp/ipv6.c:\n  dccp_v6_get_port                   |  -31\n  dccp_v6_hash                       |   -7\n  dccp_v6_request_recv_sock          |   +5\n 3 functions changed, 5 bytes added, 38 bytes removed, diff: -33\n\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "4a19ec5800fc3bb64e2d87c4d9fdd9e636086fe0",
      "tree": "610bd4e7dbcbdae25ba3806f4256745e98617825",
      "parents": [
        "036c2e27bc3a6498afb35de017d810194032d765"
      ],
      "author": {
        "name": "Laszlo Attila Toth",
        "email": "panther@balabit.hu",
        "time": "Wed Jan 30 19:08:16 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Jan 31 19:27:19 2008 -0800"
      },
      "message": "[NET]: Introducing socket mark socket option.\n\nA userspace program may wish to set the mark for each packets its send\nwithout using the netfilter MARK target. Changing the mark can be used\nfor mark based routing without netfilter or for packet filtering.\n\nIt requires CAP_NET_ADMIN capability.\n\nSigned-off-by: Laszlo Attila Toth \u003cpanther@balabit.hu\u003e\nAcked-by: Patrick McHardy \u003ckaber@trash.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "9993e7d313e80bdc005d09c7def91903e0068f07",
      "tree": "ed7c65b35fd3392948ab2f6b225f69225fdcbba8",
      "parents": [
        "e186932b3d26bd975022a1e254407e95dddceae7"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Jan 10 21:56:38 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 28 15:01:42 2008 -0800"
      },
      "message": "[TCP]: Do not purge sk_forward_alloc entirely in tcp_delack_timer().\n\nOtherwise we beat heavily on the global tcp_memory atomics\nwhen all of the sockets in the system are slowly sending\nperioding packet clumps.\n\nNoticed and suggested by Eric Dumazet.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "65f7651788e18fadb2fbb7276af935d7871e1803",
      "tree": "dcad32d4344d6d11d80061773d9d1dbc9ae92223",
      "parents": [
        "571e7682026fd0e25833d103a3eeb74be29bf199"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Thu Jan 03 20:46:48 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 28 15:00:36 2008 -0800"
      },
      "message": "[NET]: prot_inuse cleanups and optimizations\n\n1) Cleanups (all functions are prefixed by sock_prot_inuse)\n\nsock_prot_inc_use(prot) -\u003e sock_prot_inuse_add(prot,-1)\nsock_prot_dec_use(prot) -\u003e sock_prot_inuse_add(prot,-1)\nsock_prot_inuse()       -\u003e sock_prot_inuse_get()\n\nNew functions :\n\nsock_prot_inuse_init() and sock_prot_inuse_free() to abstract pcounter use.\n\n2) if CONFIG_PROC_FS\u003dn, we can zap \u0027inuse\u0027 member from \"struct proto\",\nsince nobody wants to read the inuse value.\n\nThis saves 1372 bytes on i386/SMP 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": "3ab224be6d69de912ee21302745ea45a99274dbc",
      "tree": "335dcef1cfacfefe3f36c21d5f144e011bc3bfba",
      "parents": [
        "a06b494b61de44617dd58612164bdde56fca7bfb"
      ],
      "author": {
        "name": "Hideo Aoki",
        "email": "haoki@redhat.com",
        "time": "Mon Dec 31 00:11:19 2007 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 28 15:00:18 2008 -0800"
      },
      "message": "[NET] CORE: Introducing new memory accounting interface.\n\nThis patch introduces new memory accounting functions for each network\nprotocol. Most of them are renamed from memory accounting functions\nfor stream protocols. At the same time, some stream memory accounting\nfunctions are removed since other functions do same thing.\n\nRenaming:\n\tsk_stream_free_skb()\t\t-\u003e\tsk_wmem_free_skb()\n\t__sk_stream_mem_reclaim()\t-\u003e\t__sk_mem_reclaim()\n\tsk_stream_mem_reclaim()\t\t-\u003e\tsk_mem_reclaim()\n\tsk_stream_mem_schedule \t\t-\u003e    \t__sk_mem_schedule()\n\tsk_stream_pages()      \t\t-\u003e\tsk_mem_pages()\n\tsk_stream_rmem_schedule()\t-\u003e\tsk_rmem_schedule()\n\tsk_stream_wmem_schedule()\t-\u003e\tsk_wmem_schedule()\n\tsk_charge_skb()\t\t\t-\u003e\tsk_mem_charge()\n\nRemoveing\n\tsk_stream_rfree():\tconsolidates into sock_rfree()\n\tsk_stream_set_owner_r(): consolidates into skb_set_owner_r()\n\tsk_stream_mem_schedule()\n\nThe following functions are added.\n    \tsk_has_account(): check if the protocol supports accounting\n\tsk_mem_uncharge(): do the opposite of sk_mem_charge()\n\nIn addition, to achieve consolidation, updating sk_wmem_queued is\nremoved from sk_mem_charge().\n\nNext, to consolidate memory accounting functions, this patch adds\nmemory accounting calls to network core functions. Moreover, present\nmemory accounting call is renamed to new accounting call.\n\nFinally we replace present memory accounting calls with new interface\nin TCP and SCTP.\n\nSigned-off-by: Takahiro Yasui \u003ctyasui@redhat.com\u003e\nSigned-off-by: Hideo Aoki \u003chaoki@redhat.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "21371f768bf7127ee45bfaadd17899df6a439e8f",
      "tree": "91b5debf1d861a40c942a33f1286b70031a94305",
      "parents": [
        "b15c4bcd15741b31019379298edfca28dc78029d"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Mon Dec 24 20:57:56 2007 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 28 15:00:05 2008 -0800"
      },
      "message": "[SOCK] Avoid divides in sk_stream_pages() and __sk_stream_mem_reclaim()\n\nsk_forward_alloc being signed, we should take care of divides by\nSK_STREAM_MEM_QUANTUM we do in sk_stream_pages() and\n__sk_stream_mem_reclaim()\n\nThis patchs introduces SK_STREAM_MEM_QUANTUM_SHIFT, defined\nas ilog2(SK_STREAM_MEM_QUANTUM), to be able to use right\nshifts instead of plain divides.\n\nThis should help compiler to choose right shifts instead of\nexpensive divides (as seen with CONFIG_CC_OPTIMIZE_FOR_SIZE\u003dy on x86)\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "8df09ea3b8ccfe0c94844102d33fa46f57c08d9e",
      "tree": "a7e91a1e2c9eea21b1e1a6a67bd855899627aafe",
      "parents": [
        "ce55dd3610f7ac29bf8d159c2e2ace9aaf2c3038"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Fri Dec 21 03:07:41 2007 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 28 14:59:59 2008 -0800"
      },
      "message": "[SOCK] Avoid integer divides where not necessary in include/net/sock.h\n\nBecause sk_wmem_queued, sk_sndbuf are signed, a divide per two\nmay force compiler to use an integer divide.\n\nWe can instead use a right shift.\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "41380930d2cbdc0abf7513a675864258b7ac973d",
      "tree": "bded49b68abc1d1414acd7bb10dadc01b84fd232",
      "parents": [
        "8b7817f3a959ed99d7443afc12f78a7e1fcc2063"
      ],
      "author": {
        "name": "Harvey Harrison",
        "email": "harvey.harrison@gmail.com",
        "time": "Wed Dec 12 10:46:51 2007 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 28 14:57:23 2008 -0800"
      },
      "message": "[NET]: Remove FASTCALL macro\n\nX86_32 was the last user of the FASTCALL macro, now that it\nuses regparm(3) by default, this macro expands to nothing.\n\nSigned-off-by: Harvey Harrison \u003charvey.harrison@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "33eb9cfc700ae9ce621d47d6ca6d6b4ad7cd97f3",
      "tree": "d5e3c0e9644249fa327c613571613c43ec474c6b",
      "parents": [
        "7e2e109cef0d59abcb9aca8b82993e304ed8970c"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Wed Dec 05 01:37:34 2007 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 28 14:56:26 2008 -0800"
      },
      "message": "[NET]: Isolate the net/core/ sysctl table\n\nUsing ctl paths we can put all the stuff, related to net/core/\nsysctl table, into one file and remove all the references on it.\n\nAs a good side effect this hides the \"core_table\" name from\nthe global scope :)\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    }
  ],
  "next": "0eeb8ffcfeaa0d909ce39147f7b8fdd6cef1aacd"
}
