)]}'
{
  "log": [
    {
      "commit": "2f53384424251c06038ae612e56231b96ab610ee",
      "tree": "e3524210033983e5727c88e21bb3e6a766b20ae4",
      "parents": [
        "e675f0cc9a872fd152edc0c77acfed19bf28b81e"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Tue Apr 03 09:37:01 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Apr 03 17:35:43 2012 -0400"
      },
      "message": "tcp: allow splice() to build full TSO packets\n\nvmsplice()/splice(pipe, socket) call do_tcp_sendpages() one page at a\ntime, adding at most 4096 bytes to an skb. (assuming PAGE_SIZE\u003d4096)\n\nThe call to tcp_push() at the end of do_tcp_sendpages() forces an\nimmediate xmit when pipe is not already filled, and tso_fragment() try\nto split these skb to MSS multiples.\n\n4096 bytes are usually split in a skb with 2 MSS, and a remaining\nsub-mss skb (assuming MTU\u003d1500)\n\nThis makes slow start suboptimal because many small frames are sent to\nqdisc/driver layers instead of big ones (constrained by cwnd and packets\nin flight of course)\n\nIn fact, applications using sendmsg() (adding an additional memory copy)\ninstead of vmsplice()/splice()/sendfile() are a bit faster because of\nthis anomaly, especially if serving small files in environments with\nlarge initial [c]wnd.\n\nCall tcp_push() only if MSG_MORE is not set in the flags parameter.\n\nThis bit is automatically provided by splice() internals but for the\nlast page, or on all pages if user specified SPLICE_F_MORE splice()\nflag.\n\nIn some workloads, this can reduce number of sent logical packets by an\norder of magnitude, making zero-copy TCP actually faster than\none-copy :)\n\nReported-by: Tom Herbert \u003ctherbert@google.com\u003e\nCc: Nandita Dukkipati \u003cnanditad@google.com\u003e\nCc: Neal Cardwell \u003cncardwell@google.com\u003e\nCc: Tom Herbert \u003ctherbert@google.com\u003e\nCc: Yuchung Cheng \u003cycheng@google.com\u003e\nCc: H.K. Jerry Chu \u003chkchu@google.com\u003e\nCc: Maciej Żenczykowski \u003cmaze@google.com\u003e\nCc: Mahesh Bandewar \u003cmaheshb@google.com\u003e\nCc: Ilpo Järvinen \u003cilpo.jarvinen@helsinki.fi\u003e\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail\u003ecom\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "afd465030acb4098abcb6b965a5aebc7ea2209e0",
      "tree": "59c93e8eda99cd59339dfbb77f1d2c4f79c634ee",
      "parents": [
        "058bd4d2a4ff0aaa4a5381c67e776729d840c785"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Mon Mar 12 07:03:32 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Mar 12 17:05:21 2012 -0700"
      },
      "message": "net: ipv4: Standardize prefixes for message logging\n\nAdd #define pr_fmt(fmt) as appropriate.\n\nAdd \"IPv4: \", \"TCP: \", and \"IPsec: \" to appropriate files.\nStandardize on \"UDPLite: \" for appropriate uses.\nSome prefixes were previously \"UDPLITE: \" and \"UDP-Lite: \".\n\nAdd KBUILD_MODNAME \": \" to icmp and gre.\nRemove embedded prefixes as appropriate.\n\nAdd missing \"\\n\" to pr_info in gre.c.\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "058bd4d2a4ff0aaa4a5381c67e776729d840c785",
      "tree": "4d1ea864a8740676c7e7c5a03cdaa67fc5f29418",
      "parents": [
        "43db362d3adda9e0a915ddb9a8d1a41186e19179"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Sun Mar 11 18:36:11 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Mar 11 23:42:51 2012 -0700"
      },
      "message": "net: Convert printks to pr_\u003clevel\u003e\n\nUse a more current kernel messaging style.\n\nConvert a printk block to print_hex_dump.\nCoalesce formats, align arguments.\nUse %s, __func__ instead of embedding function names.\n\nSome messages that were prefixed with \u003cfoo\u003e_close are\nnow prefixed with \u003cfoo\u003e_fini.  Some ah4 and esp messages\nare now not prefixed with \"ip \".\n\nThe intent of this patch is to later add something like\n  #define pr_fmt(fmt) \"IPv4: \" fmt.\nto standardize the output messages.\n\nText size is trivially reduced. (x86-32 allyesconfig)\n\n$ size net/ipv4/built-in.o*\n   text\t   data\t    bss\t    dec\t    hex\tfilename\n 887888\t  31558\t 249696\t1169142\t 11d6f6\tnet/ipv4/built-in.o.new\n 887934\t  31558\t 249800\t1169292\t 11d78c\tnet/ipv4/built-in.o.old\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "074b85175a43a23fdbde60f55feea636e0bf0f85",
      "tree": "e6f6fdd82854b2bf25ea5b404cee010806a8fced",
      "parents": [
        "1d6f2097865e64963e90cce04980dce2f9fc023f"
      ],
      "author": {
        "name": "Dimitri Sivanich",
        "email": "sivanich@sgi.com",
        "time": "Wed Feb 08 12:39:07 2012 -0800"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Feb 13 20:45:38 2012 -0500"
      },
      "message": "vfs: fix panic in __d_lookup() with high dentry hashtable counts\n\nWhen the number of dentry cache hash table entries gets too high\n(2147483648 entries), as happens by default on a 16TB system, use of a\nsigned integer in the dcache_init() initialization loop prevents the\ndentry_hashtable from getting initialized, causing a panic in\n__d_lookup().  Fix this in dcache_init() and similar areas.\n\nSigned-off-by: Dimitri Sivanich \u003csivanich@sgi.com\u003e\nAcked-by: David S. Miller \u003cdavem@davemloft.net\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "c43b874d5d714f271b80d4c3f49e05d0cbf51ed2",
      "tree": "c56f3500327b081228d4c7369d39740e9bb4a0a9",
      "parents": [
        "786f528119722f564a22ad953411374e06116333"
      ],
      "author": {
        "name": "Jason Wang",
        "email": "jasowang@redhat.com",
        "time": "Thu Feb 02 00:07:00 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Feb 02 14:34:41 2012 -0500"
      },
      "message": "tcp: properly initialize tcp memory limits\n\nCommit 4acb4190 tries to fix the using uninitialized value\nintroduced by commit 3dc43e3,  but it would make the\nper-socket memory limits too small.\n\nThis patch fixes this and also remove the redundant codes\nintroduced in 4acb4190.\n\nSigned-off-by: Jason Wang \u003cjasowang@redhat.com\u003e\nAcked-by: Glauber Costa \u003cglommer@parallels.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "efcdbf24fd5daa88060869e51ed49f68b7ac8708",
      "tree": "8c771a1ef2c93f1ba959709d6ffb4fd56af53699",
      "parents": [
        "48c3883999cb06246911e29356d194f96f1c75ef"
      ],
      "author": {
        "name": "Arun Sharma",
        "email": "asharma@fb.com",
        "time": "Mon Jan 30 14:16:06 2012 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Feb 01 14:41:50 2012 -0500"
      },
      "message": "net: Disambiguate kernel message\n\nSome of our machines were reporting:\n\nTCP: too many of orphaned sockets\n\neven when the number of orphaned sockets was well below the\nlimit.\n\nWe print a different message depending on whether we\u0027re out\nof TCP memory or there are too many orphaned sockets.\n\nAlso move the check out of line and cleanup the messages\nthat were printed.\n\nSigned-off-by: Arun Sharma \u003casharma@fb.com\u003e\nSuggested-by: Mohan Srinivasan \u003cmohan@fb.com\u003e\nCc: netdev@vger.kernel.org\nCc: linux-kernel@vger.kernel.org\nCc: David Miller \u003cdavem@davemloft.net\u003e\nCc: Glauber Costa \u003cglommer@parallels.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Joe Perches \u003cjoe@perches.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "4acb41903b2f99f3dffd4c3df9acc84ca5942cb2",
      "tree": "3a2dc1739d654effecd86749e49a40d41019e645",
      "parents": [
        "8a8ee9aff6c3077dd9c2c7a77478e8ed362b96c6"
      ],
      "author": {
        "name": "Glauber Costa",
        "email": "glommer@parallels.com",
        "time": "Mon Jan 30 01:20:17 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 30 12:41:06 2012 -0500"
      },
      "message": "net/tcp: Fix tcp memory limits initialization when !CONFIG_SYSCTL\n\nsysctl_tcp_mem() initialization was moved to sysctl_tcp_ipv4.c\nin commit 3dc43e3e4d0b52197d3205214fe8f162f9e0c334, since it\nbecame a per-ns value.\n\nThat code, however, will never run when CONFIG_SYSCTL is\ndisabled, leading to bogus values on those fields - causing hung\nTCP sockets.\n\nThis patch fixes it by keeping an initialization code in\ntcp_init(). It will be overwritten by the first net namespace\ninit if CONFIG_SYSCTL is compiled in, and do the right thing if\nit is compiled out.\n\nIt is also named properly as tcp_init_mem(), to properly signal\nits non-sysctl side effect on TCP limits.\n\nReported-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Glauber Costa \u003cglommer@parallels.com\u003e\nCc: David S. Miller \u003cdavem@davemloft.net\u003e\nLink: http://lkml.kernel.org/r/4F22D05A.8030604@parallels.com\n[ renamed the function, tidied up the changelog a bit ]\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "3dc43e3e4d0b52197d3205214fe8f162f9e0c334",
      "tree": "1770affeb483a6b4f06cde9f2a2f1289b41496d6",
      "parents": [
        "d1a4c0b37c296e600ffe08edb0db2dc1b8f550d7"
      ],
      "author": {
        "name": "Glauber Costa",
        "email": "glommer@parallels.com",
        "time": "Sun Dec 11 21:47:05 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Dec 12 19:04:11 2011 -0500"
      },
      "message": "per-netns ipv4 sysctl_tcp_mem\n\nThis patch allows each namespace to independently set up\nits levels for tcp memory pressure thresholds. This patch\nalone does not buy much: we need to make this values\nper group of process somehow. This is achieved in the\npatches that follows in this patchset.\n\nSigned-off-by: Glauber Costa \u003cglommer@parallels.com\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCC: David S. Miller \u003cdavem@davemloft.net\u003e\nCC: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "0a5912db7b4f9c3ff3bd0dbb67f36484a3b21a35",
      "tree": "7613fdb0ea204f9b55662d850bb83a722fb89532",
      "parents": [
        "b474ae77609b725098d5a7cc8f69c1c528710d53"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Mon Dec 05 01:07:15 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Dec 05 18:30:03 2011 -0500"
      },
      "message": "tcp: remove TCP_OFF and TCP_PAGE macros\n\nAs mentioned by Joe Perches, TCP_OFF() and TCP_PAGE() macros are\nuseless.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "761965eab38d2cbc59c36e355c59609e3a04705a",
      "tree": "53bc45ee752f8d31323962e5af2e0451376c3b35",
      "parents": [
        "117632e64d2a5f464e491fe221d7169a3814a77b"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Sun Dec 04 07:05:17 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Dec 04 13:20:40 2011 -0500"
      },
      "message": "tcp: tcp_sendmsg() page recycling\n\nIf our TCP_PAGE(sk) is not shared (page_count() \u003d\u003d 1), we can set page\noffset to 0.\n\nThis permits better filling of the pages on small to medium tcp writes.\n\n\"tbench 16\" results on my dev server (2x4x2 machine) :\n\nBefore : 3072 MB/s\nAfter  : 3146 MB/s  (2.4 % gain)\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "f07d960df33c5aef8f513efce0fd201f962f94a1",
      "tree": "33f1313283e85a642f4126029e47e4ec1f606282",
      "parents": [
        "4d77d2b567ec66a443792d99e96ac760991d80d0"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Mon Nov 28 22:41:47 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Nov 29 13:17:03 2011 -0500"
      },
      "message": "tcp: avoid frag allocation for small frames\n\ntcp_sendmsg() uses select_size() helper to choose skb head size when a\nnew skb must be allocated.\n\nIf GSO is enabled for the socket, current strategy is to force all\npayload data to be outside of headroom, in PAGE fragments.\n\nThis strategy is not welcome for small packets, wasting memory.\n\nExperiments show that best results are obtained when using 2048 bytes\nfor skb head (This includes the skb overhead and various headers)\n\nThis patch provides better len/truesize ratios for packets sent to\nloopback device, and reduce memory needs for in-flight loopback packets,\nparticularly on arches with big pages.\n\nIf a sender sends many 1-byte packets to an unresponsive application,\nreceiver rmem_alloc will grow faster and will stop queuing these packets\nsooner, or will collapse its receive queue to free excess memory.\n\nnetperf -t TCP_RR results are improved by ~4 %, and many workloads are\nimproved as well (tbench, mysql...)\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "690e99c4ba73fc18643b38fa032022b8758ad4d3",
      "tree": "73745636f1b9cab69eb2738f84f4b0d4cb36db5f",
      "parents": [
        "8b7ff200010600ef7cd9d002f9f8f97edfc7578e"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Mon Nov 28 00:27:47 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Nov 28 18:58:24 2011 -0500"
      },
      "message": "tcp: tcp_sendmsg() wrong access to sk_route_caps\n\nNow sk_route_caps is u64, its dangerous to use an integer to store\nresult of an AND operator. It wont work if NETIF_F_SG is moved on the\nupper part of u64.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nCC: Michał Mirosław \u003cmirq-linux@rere.qmqm.pl\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "c8f44affb7244f2ac3e703cab13d55ede27621bb",
      "tree": "62e7aea2916a8d7cab825fe500670c5113854c0f",
      "parents": [
        "a59e2ecb859f2ab03bb2e230709f8039472ad2c3"
      ],
      "author": {
        "name": "Michał Mirosław",
        "email": "mirq-linux@rere.qmqm.pl",
        "time": "Tue Nov 15 15:29:55 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Nov 16 17:43:10 2011 -0500"
      },
      "message": "net: introduce and use netdev_features_t for device features sets\n\nv2:\tadd couple missing conversions in drivers\n\tsplit unexporting netdev_fix_features()\n\timplemented %pNF\n\tconvert sock::sk_route_(no?)caps\n\nSigned-off-by: Michał Mirosław \u003cmirq-linux@rere.qmqm.pl\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "78d81d15b74246c7cedf84894434890b33da3907",
      "tree": "cf2dd0b8d51204c4a956f443adaa2c90732aa0b0",
      "parents": [
        "8b1857357acd919b9a7fa391afbea30123fdfaec"
      ],
      "author": {
        "name": "Flavio Leitner",
        "email": "fbl@redhat.com",
        "time": "Mon Oct 24 08:15:10 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Oct 24 17:36:08 2011 -0400"
      },
      "message": "TCP: remove TCP_DEBUG\n\nIt was enabled by default and the messages guarded\nby the define are useful.\n\nSigned-off-by: Flavio Leitner \u003cfbl@redhat.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "ca35a0ef85e8ed6df6d5ab01fb6c3530cca0c469",
      "tree": "3a6d0c107ec48823bb3e437f1f91d2276facb46d",
      "parents": [
        "01718e36df750670d0f840932a4d166522ead6c3"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Mon Oct 24 01:52:35 2011 -0400"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Oct 24 01:52:35 2011 -0400"
      },
      "message": "tcp: md5: dont write skb head in tcp_md5_hash_header()\n\ntcp_md5_hash_header() writes into skb header a temporary zero value,\nthis might confuse other users of this area.\n\nSince tcphdr is small (20 bytes), copy it in a temporary variable and\nmake the change in the copy.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "cf533ea53ebfae41be15b103d78e7ebec30b9969",
      "tree": "51ed3c69f4a15117fefe5cbd291a75010beb0f4b",
      "parents": [
        "f04565ddf52e401880f8ba51de0dff8ba51c99fd"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Fri Oct 21 05:22:42 2011 -0400"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Oct 21 05:22:42 2011 -0400"
      },
      "message": "tcp: add const qualifiers where possible\n\nAdding const qualifiers to pointers can ease code review, and spot some\nbugs. It might allow compiler to optimize code further.\n\nFor example, is it legal to temporary write a null cksum into tcphdr\nin tcp_md5_hash_header() ? I am afraid a sniffer could catch the\ntemporary null value...\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "9e903e085262ffbf1fc44a17ac06058aca03524a",
      "tree": "4acefc97ba38c1733474d25c0b2053b56af97db1",
      "parents": [
        "dd767856a36e00b631d65ebc4bb81b19915532d6"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Tue Oct 18 21:00:24 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Oct 19 03:10:46 2011 -0400"
      },
      "message": "net: add skb frag size accessors\n\nTo ease skb-\u003etruesize sanitization, its better to be able to localize\nall references to skb frags size.\n\nDefine accessors : skb_frag_size() to fetch frag size, and\nskb_frag_size_{set|add|sub}() to manipulate it.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "b5c5693bb723a019deac3cd1345f3e7233c8a67e",
      "tree": "e5136c3e7a6efee0453f2012882e0d95eed7672d",
      "parents": [
        "0654011d900670884197d9a06ad17b378dfde831"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Mon Oct 03 14:01:21 2011 -0400"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Oct 03 14:01:21 2011 -0400"
      },
      "message": "tcp: report ECN_SEEN in tcp_info\n\nAllows ss command (iproute2) to display \"ecnseen\" if at least one packet\nwith ECT(0) or ECT(1) or ECN was received by this socket.\n\n\"ecn\" means ECN was negotiated at session establishment (TCP level)\n\n\"ecnseen\" means we received at least one packet with ECT fields set (IP\nlevel)\n\nss -i\n...\nESTAB      0      0   192.168.20.110:22  192.168.20.144:38016\nino:5950 sk:f178e400\n\t mem:(r0,w0,f0,t0) ts sack ecn ecnseen bic wscale:7,8 rto:210\nrtt:12.5/7.5 cwnd:10 send 9.3Mbps rcv_space:14480\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "4de075e0438ba54b8f42cbbc1263d404229dc997",
      "tree": "dc2400d1539cb462e9b441d841577e8bc8f0048d",
      "parents": [
        "b82d1bb4fd206ed305f9e955eeffc4a678149442"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Tue Sep 27 13:25:05 2011 -0400"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Sep 27 13:25:05 2011 -0400"
      },
      "message": "tcp: rename tcp_skb_cb flags\n\nRename struct tcp_skb_cb \"flags\" to \"tcp_flags\" to ease code review and\nmaintenance.\n\nIts content is a combination of FIN/SYN/RST/PSH/ACK/URG/ECE/CWR flags\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "765cf9976e937f1cfe9159bf4534967c8bf8eb6d",
      "tree": "671d57668c3f10a22e76704ad6d2c9f0a2e1f9f1",
      "parents": [
        "b9fa1fbf98178c8bbda23ff1d3ed0731bb3c0bd1"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Mon Sep 12 20:28:37 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Sep 17 01:15:46 2011 -0400"
      },
      "message": "tcp: md5: remove one indirection level in tcp_md5sig_pool\n\ntcp_md5sig_pool is currently an \u0027array\u0027 (a percpu object) of pointers to\nstruct tcp_md5sig_pool. Only the pointers are NUMA aware, but objects\nthemselves are all allocated on a single node.\n\nRemove this extra indirection to get proper percpu memory (NUMA aware)\nand make code simpler.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "aff65da0f1be5daec44231972b6b5fc45bfa7a58",
      "tree": "71c557deaf7a07ad1dbb1b52ff5593c8e75a8ebb",
      "parents": [
        "ea2ab69379a941c6f8884e290fdd28c93936a778"
      ],
      "author": {
        "name": "Ian Campbell",
        "email": "Ian.Campbell@citrix.com",
        "time": "Mon Aug 22 23:44:59 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Aug 24 17:52:11 2011 -0700"
      },
      "message": "net: ipv4: convert to SKB frag APIs\n\nSigned-off-by: Ian Campbell \u003cian.campbell@citrix.com\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: Alexey Kuznetsov \u003ckuznet@ms2.inr.ac.ru\u003e\nCc: \"Pekka Savola (ipv6)\" \u003cpekkas@netcore.fi\u003e\nCc: James Morris \u003cjmorris@namei.org\u003e\nCc: Hideaki YOSHIFUJI \u003cyoshfuji@linux-ipv6.org\u003e\nCc: Patrick McHardy \u003ckaber@trash.net\u003e\nCc: netdev@vger.kernel.org\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "f03d78db65085609938fdb686238867e65003181",
      "tree": "03b8e492d91ad6819a44e0d454af2292e884964c",
      "parents": [
        "eebb02b1f03b3722d678bfcb560f3b26661ab0d2"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Thu Jul 07 00:27:05 2011 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Jul 07 00:27:05 2011 -0700"
      },
      "message": "net: refine {udp|tcp|sctp}_mem limits\n\nCurrent tcp/udp/sctp global memory limits are not taking into account\nhugepages allocations, and allow 50% of ram to be used by buffers of a\nsingle protocol [ not counting space used by sockets / inodes ...]\n\nLets use nr_free_buffer_pages() and allow a default of 1/8 of kernel ram\nper protocol, and a minimum of 128 pages.\nHeavy duty machines sysadmins probably need to tweak limits anyway.\n\n\nReferences: https://bugzilla.stlinux.com/show_bug.cgi?id\u003d38032\nReported-by: starlight \u003cstarlight@binnacle.cx\u003e\nSuggested-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "c6e1a0d12ca7b4f22c58e55a16beacfb7d3d8462",
      "tree": "6955c20538050329d0bdffdf24a787507ae6fdf1",
      "parents": [
        "14f98f258f1936e0dba77474bd7eda63f61a9826"
      ],
      "author": {
        "name": "Tom Herbert",
        "email": "therbert@google.com",
        "time": "Mon Apr 04 22:30:30 2011 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Apr 04 22:30:30 2011 -0700"
      },
      "message": "net: Allow no-cache copy from user on transmit\n\nThis patch uses __copy_from_user_nocache on transmit to bypass data\ncache for a performance improvement.  skb_add_data_nocache and\nskb_copy_to_page_nocache can be called by sendmsg functions to use\nthis feature, initial support is in tcp_sendmsg.  This functionality is\nconfigurable per device using ethtool.\n\nPresumably, this feature would only be useful when the driver does\nnot touch the data.  The feature is turned on by default if a device\nindicates that it does some form of checksum offload; it is off by\ndefault for devices that do no checksum offload or indicate no checksum\nis necessary.  For the former case copy-checksum is probably done\nanyway, in the latter case the device is likely loopback in which case\nthe no cache copy is probably not beneficial.\n\nThis patch was tested using 200 instances of netperf TCP_RR with\n1400 byte request and one byte reply.  Platform is 16 core AMD x86.\n\nNo-cache copy disabled:\n   672703 tps, 97.13% utilization\n   50/90/99% latency:244.31 484.205 1028.41\n\nNo-cache copy enabled:\n   702113 tps, 96.16% utilization,\n   50/90/99% latency 238.56 467.56 956.955\n\nUsing 14000 byte request and response sizes demonstrate the\neffects more dramatically:\n\nNo-cache copy disabled:\n   79571 tps, 34.34 %utlization\n   50/90/95% latency 1584.46 2319.59 5001.76\n\nNo-cache copy enabled:\n   83856 tps, 34.81% utilization\n   50/90/95% latency 2508.42 2622.62 2735.88\n\nNote especially the effect on latency tail (95th percentile).\n\nThis seems to provide a nice performance improvement and is\nconsistent in the tests I ran.  Presumably, this would provide\nthe greatest benfits in the presence of an application workload\nstressing the cache and a lot of transmit data happening.\n\nSigned-off-by: Tom Herbert \u003ctherbert@google.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "2f4e1b3970973bbb57cc3a3b9d67e67c1c648c37",
      "tree": "d7b4d7d64ed8a02c3cd10064eb9d8e177d2be5c3",
      "parents": [
        "ee3f1aaf930b7cfbf3d34eff1e5e076393227e90"
      ],
      "author": {
        "name": "Mario Schuknecht",
        "email": "m.schuknecht@dresearch.de",
        "time": "Wed Mar 09 14:08:09 2011 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Mar 09 14:08:09 2011 -0800"
      },
      "message": "tcp: ioctl type SIOCOUTQNSD returns amount of data not sent\n\nIn contrast to SIOCOUTQ which returns the amount of data sent\nbut not yet acknowledged plus data not yet sent this patch only\nreturns the data not sent.\n\nFor various methods of live streaming bitrate control it may\nbe helpful to know how much data are in the tcp outqueue are\nnot sent yet.\n\nSigned-off-by: Mario Schuknecht \u003cm.schuknecht@dresearch.de\u003e\nSigned-off-by: Steffen Sledz \u003csledz@dresearch.de\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "089c34827e52346f0303d1e6a7b744c1f4da3095",
      "tree": "79f42bd0c4782aca57f3fe9d0f941f5c04b566a4",
      "parents": [
        "81146ec1b85067e70b71e81b5ecd9998ce054c0e"
      ],
      "author": {
        "name": "Shan Wei",
        "email": "shanwei@cn.fujitsu.com",
        "time": "Sat Feb 19 21:55:45 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Feb 20 11:10:14 2011 -0800"
      },
      "message": "tcp: Remove debug macro of TCP_CHECK_TIMER\n\nNow, TCP_CHECK_TIMER is not used for debuging, it does nothing.\nAnd, it has been there for several years, maybe 6 years.\n\nRemove it to keep code clearer.\n\nSigned-off-by: Shan Wei \u003cshanwei@cn.fujitsu.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "04ed3e741d0f133e02bed7fa5c98edba128f90e7",
      "tree": "3dde4ca8306e98536faa69bccf0e47a2549c088f",
      "parents": [
        "57422dc530115e427dff464cc0a32bcd0efb5008"
      ],
      "author": {
        "name": "Michał Mirosław",
        "email": "mirq-linux@rere.qmqm.pl",
        "time": "Mon Jan 24 15:32:47 2011 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 24 15:32:47 2011 -0800"
      },
      "message": "net: change netdev-\u003efeatures to u32\n\nQuoting Ben Hutchings: we presumably won\u0027t be defining features that\ncan only be enabled on 64-bit architectures.\n\nOccurences found by `grep -r` on net/, drivers/net, include/\n\n[ Move features and vlan_features next to each other in\n  struct netdev, as per Eric Dumazet\u0027s suggestion -DaveM ]\n\nSigned-off-by: Michał Mirosław \u003cmirq-linux@rere.qmqm.pl\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "fe6c791570efe717946ea7b7dd50aec96b70d551",
      "tree": "1becb5e8aea7a9c9a7d78f987bd73b0a5d8ee434",
      "parents": [
        "f8bf5681cf15f77692c8ad8cb95d059ff7c622c9",
        "f19872575ff7819a3723154657a497d9bca66b33"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Dec 08 13:15:38 2010 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Dec 08 13:47:38 2010 -0800"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6\n\nConflicts:\n\tdrivers/net/wireless/ath/ath9k/ar9003_eeprom.c\n\tnet/llc/af_llc.c\n"
    },
    {
      "commit": "c39508d6f118308355468314ff414644115a07f3",
      "tree": "c69cfd271855fa4b81398f9ddcb3dc286489d71a",
      "parents": [
        "4448008eb12f4b6bb9993584de8ec1d20b708d6f"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Nov 24 11:47:22 2010 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Nov 24 11:47:22 2010 -0800"
      },
      "message": "tcp: Make TCP_MAXSEG minimum more correct.\n\nUse TCP_MIN_MSS instead of constant 64.\n\nReported-by: Min Zhang \u003cmzhang@mvista.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "c25ecd0a21d5e08160cb5cc984f9e2b8ee347443",
      "tree": "0e4dcacf1bf603f259b8d27445a10e60fa8d00d7",
      "parents": [
        "190683a9d5457e6d962c232ffbecac3ab158dddd",
        "9457b24a0955bbdd2e89220a75de69fe09501bba"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Nov 14 11:57:05 2010 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Nov 14 11:57:05 2010 -0800"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6\n"
    },
    {
      "commit": "7a1abd08d52fdeddb3e9a5a33f2f15cc6a5674d2",
      "tree": "f566af2a622e5416056c70633576a1a46b8bf6aa",
      "parents": [
        "8d987e5c75107ca7515fa19e857cfa24aab6ec8f"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Nov 10 21:35:37 2010 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Nov 10 21:35:37 2010 -0800"
      },
      "message": "tcp: Increase TCP_MAXSEG socket option minimum.\n\nAs noted by Steve Chen, since commit\nf5fff5dc8a7a3f395b0525c02ba92c95d42b7390 (\"tcp: advertise MSS\nrequested by user\") we can end up with a situation where\ntcp_select_initial_window() does a divide by a zero (or\neven negative) mss value.\n\nThe problem is that sometimes we effectively subtract\nTCPOLEN_TSTAMP_ALIGNED and/or TCPOLEN_MD5SIG_ALIGNED from the mss.\n\nFix this by increasing the minimum from 8 to 64.\n\nReported-by: Steve Chen \u003cschen@mvista.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "8d987e5c75107ca7515fa19e857cfa24aab6ec8f",
      "tree": "6392c5f08f0df39d42a079336f6be3960ac404dc",
      "parents": [
        "67286640f638f5ad41a946b9a3dc75327950248f"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Tue Nov 09 23:24:26 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Nov 10 12:12:00 2010 -0800"
      },
      "message": "net: avoid limits overflow\n\nRobin Holt tried to boot a 16TB machine and found some limits were\nreached : sysctl_tcp_mem[2], sysctl_udp_mem[2]\n\nWe can switch infrastructure to use long \"instead\" of \"int\", now\natomic_long_t primitives are available for free.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nReported-by: Robin Holt \u003cholt@sgi.com\u003e\nReviewed-by: Robin Holt \u003cholt@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "2af6fd8b18ceed416c9dfa675287c765aabf7d43",
      "tree": "6ddfb64096961839e0cf5a349ff8ff977ca9d542",
      "parents": [
        "b194a3674fba6d9f9e470084d192c7cb99194a62"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Sat Oct 30 11:08:53 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Nov 09 09:22:32 2010 -0800"
      },
      "message": "net/ipv4/tcp.c: Update WARN uses\n\nCoalesce long formats.\nAlign arguments.\nRemove KERN_\u003clevel\u003e.\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "21a180cda012e1f93e362dd4a9b0bfd3d8c92940",
      "tree": "0e0d10baa3fdcd8ffbc6881076ff1695808dad9d",
      "parents": [
        "c7d4426a98a5f6654cd0b4b33d9dab2e77192c18",
        "51e97a12bef19b7e43199fc153cf9bd5f2140362"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Oct 04 11:56:38 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Oct 04 11:56:38 2010 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6\n\nConflicts:\n\tnet/ipv4/Kconfig\n\tnet/ipv4/tcp_timer.c\n"
    },
    {
      "commit": "01db403cf99f739f86903314a489fb420e0e254f",
      "tree": "bf04fbfb3ed88d6cf7abeea1ab5209be36907882",
      "parents": [
        "0b20406cda621c2495d10baab1e87127ceb43337"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Sep 27 20:24:54 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Sep 27 20:24:54 2010 -0700"
      },
      "message": "tcp: Fix \u003e4GB writes on 64-bit.\n\nFixes kernel bugzilla #16603\n\ntcp_sendmsg() truncates iov_len to an \u0027int\u0027 which a 4GB write to write\nzero bytes, for example.\n\nThere is also the problem higher up of how verify_iovec() works.  It\nwants to prevent the total length from looking like an error return\nvalue.\n\nHowever it does this using \u0027int\u0027, but syscalls return \u0027long\u0027 (and\nthus signed 64-bit on 64-bit machines).  So it could trigger\nfalse-positives on 64-bit as written.  So fix it to use \u0027long\u0027.\n\nReported-by: Olaf Bonorden \u003cbono@onlinehome.de\u003e\nReported-by: Daniel Büse \u003cdbuese@gmx.de\u003e\nReported-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "e40051d134f7ee95c8c1f7a3471e84eafc9ab326",
      "tree": "88eb44e49a75721ae926665a2c42f08badac9d07",
      "parents": [
        "42099d7a3941d4aaf853caac92b3ae76149fc6e7",
        "2cc6d2bf3d6195fabcf0febc192c01f99519a8f3"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Sep 27 01:03:03 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Sep 27 01:03:03 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/qlcnic/qlcnic_init.c\n\tnet/ipv4/ip_output.c\n"
    },
    {
      "commit": "a4d258036ed9b2a1811c3670c6099203a0f284a0",
      "tree": "58412022664aef745a99d254d20cf1a66aabda44",
      "parents": [
        "9828e6e6e3f19efcb476c567b9999891d051f52f"
      ],
      "author": {
        "name": "Tom Marshall",
        "email": "tdm.code@gmail.com",
        "time": "Mon Sep 20 15:42:05 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Sep 20 15:42:05 2010 -0700"
      },
      "message": "tcp: Fix race in tcp_poll\n\nIf a RST comes in immediately after checking sk-\u003esk_err, tcp_poll will\nreturn POLLIN but not POLLOUT.  Fix this by checking sk-\u003esk_err at the end\nof tcp_poll.  Additionally, ensure the correct order of operations on SMP\nmachines with memory barriers.\n\nSigned-off-by: Tom Marshall \u003ctdm.code@gmail.com\u003e\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "e548833df83c3554229eff0672900bfe958b45fd",
      "tree": "85efc4a76dc356593d6d394776aeb845dc580fb6",
      "parents": [
        "cbd9da7be869f676afc204e1a664163778c770bd",
        "053d8f6622701f849fda2ca2c9ae596c13599ba9"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Sep 09 22:27:33 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Sep 09 22:27:33 2010 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6\n\nConflicts:\n\tnet/mac80211/main.c\n"
    },
    {
      "commit": "dca43c75e7e545694a9dd6288553f55c53e2a3a3",
      "tree": "4df6b0b295ecd571fa95004b486d9af1636d6a30",
      "parents": [
        "409456b10f87b28303643fec37543103f9ada00c"
      ],
      "author": {
        "name": "Jerry Chu",
        "email": "hkchu@google.com",
        "time": "Fri Aug 27 19:13:28 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Aug 30 13:23:33 2010 -0700"
      },
      "message": "tcp: Add TCP_USER_TIMEOUT socket option.\n\nThis patch provides a \"user timeout\" support as described in RFC793. The\nsocket option is also needed for the the local half of RFC5482 \"TCP User\nTimeout Option\".\n\nTCP_USER_TIMEOUT is a TCP level socket option that takes an unsigned int,\nwhen \u003e 0, to specify the maximum amount of time in ms that transmitted\ndata may remain unacknowledged before TCP will forcefully close the\ncorresponding connection and return ETIMEDOUT to the application. If\n0 is given, TCP will continue to use the system default.\n\nIncreasing the user timeouts allows a TCP connection to survive extended\nperiods without end-to-end connectivity. Decreasing the user timeouts\nallows applications to \"fail fast\" if so desired. Otherwise it may take\nupto 20 minutes with the current system defaults in a normal WAN\nenvironment.\n\nThe socket option can be made during any state of a TCP connection, but\nis only effective during the synchronized states of a connection\n(ESTABLISHED, FIN-WAIT-1, FIN-WAIT-2, CLOSE-WAIT, CLOSING, or LAST-ACK).\nMoreover, when used with the TCP keepalive (SO_KEEPALIVE) option,\nTCP_USER_TIMEOUT will overtake keepalive to determine when to close a\nconnection due to keepalive failure.\n\nThe option does not change in anyway when TCP retransmits a packet, nor\nwhen a keepalive probe will be sent.\n\nThis option, like many others, will be inherited by an acceptor from its\nlistener.\n\nSigned-off-by: H.K. Jerry Chu \u003chkchu@google.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "d84ba638e4ba3c40023ff997aa5e8d3ed002af36",
      "tree": "45bff01d15301cb6fc2f27d53fdfcbbf1f2355b1",
      "parents": [
        "c5ed63d66f24fd4f7089b5a6e087b0ce7202aa8e"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Tue Aug 24 16:05:48 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Aug 25 23:02:48 2010 -0700"
      },
      "message": "tcp: select(writefds) don\u0027t hang up when a peer close connection\n\nThis issue come from ruby language community. Below test program\nhang up when only run on Linux.\n\n\t% uname -mrsv\n\tLinux 2.6.26-2-486 #1 Sat Dec 26 08:37:39 UTC 2009 i686\n\t% ruby -rsocket -ve \u0027\n\tBasicSocket.do_not_reverse_lookup \u003d true\n\tserv \u003d TCPServer.open(\"127.0.0.1\", 0)\n\ts1 \u003d TCPSocket.open(\"127.0.0.1\", serv.addr[1])\n\ts2 \u003d serv.accept\n\ts2.close\n\ts1.write(\"a\") rescue p $!\n\ts1.write(\"a\") rescue p $!\n\tThread.new {\n\t  s1.write(\"a\")\n\t}.join\u0027\n\truby 1.9.3dev (2010-07-06 trunk 28554) [i686-linux]\n\t#\u003cErrno::EPIPE: Broken pipe\u003e\n\t[Hang Here]\n\nFreeBSD, Solaris, Mac doesn\u0027t. because Ruby\u0027s write() method call\nselect() internally. and tcp_poll has a bug.\n\nSUS defined \u0027ready for writing\u0027 of select() as following.\n\n|  A descriptor shall be considered ready for writing when a call to an output\n|  function with O_NONBLOCK clear would not block, whether or not the function\n|  would transfer data successfully.\n\nThat said, EPIPE situation is clearly one of \u0027ready for writing\u0027.\n\nWe don\u0027t have read-side issue because tcp_poll() already has read side\nshutdown care.\n\n|        if (sk-\u003esk_shutdown \u0026 RCV_SHUTDOWN)\n|                mask |\u003d POLLIN | POLLRDNORM | POLLRDHUP;\n\nSo, Let\u0027s insert same logic in write side.\n\n- reference url\n  http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/31065\n  http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/31068\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "c5ed63d66f24fd4f7089b5a6e087b0ce7202aa8e",
      "tree": "140df25fef28c94f9ec1e5c29b4a8d0876da2fe8",
      "parents": [
        "ad1af0fedba14f82b240a03fe20eb9b2fdbd0357"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Wed Aug 25 23:02:17 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Aug 25 23:02:17 2010 -0700"
      },
      "message": "tcp: fix three tcp sysctls tuning\n\nAs discovered by Anton Blanchard, current code to autotune \ntcp_death_row.sysctl_max_tw_buckets, sysctl_tcp_max_orphans and\nsysctl_max_syn_backlog makes little sense.\n\nThe bigger a page is, the less tcp_max_orphans is : 4096 on a 512GB\nmachine in Anton\u0027s case.\n\n(tcp_hashinfo.bhash_size * sizeof(struct inet_bind_hashbucket))\nis much bigger if spinlock debugging is on. Its wrong to select bigger\nlimits in this case (where kernel structures are also bigger)\n\nbhash_size max is 65536, and we get this value even for small machines. \n\nA better ground is to use size of ehash table, this also makes code\nshorter and more obvious.\n\nBased on a patch from Anton, and another from David.\n\nReported-and-tested-by: Anton Blanchard \u003canton@samba.org\u003e\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "ad1af0fedba14f82b240a03fe20eb9b2fdbd0357",
      "tree": "4d53aa8bc2d9df782aa792e52670ab55c7a44d5b",
      "parents": [
        "b2bc85631e72485b984bcd202a104591874babba"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Aug 25 02:27:49 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Aug 25 02:27:49 2010 -0700"
      },
      "message": "tcp: Combat per-cpu skew in orphan tests.\n\nAs reported by Anton Blanchard when we use\npercpu_counter_read_positive() to make our orphan socket limit checks,\nthe check can be off by up to num_cpus_online() * batch (which is 32\nby default) which on a 128 cpu machine can be as large as the default\norphan limit itself.\n\nFix this by doing the full expensive sum check if the optimized check\ntriggers.\n\nReported-by: Anton Blanchard \u003canton@samba.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\nAcked-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\n"
    },
    {
      "commit": "00dad5e479531e379aba7358600cc768725d4f1f",
      "tree": "652199eacee32c2cf317f5a54da8265973d29978",
      "parents": [
        "c477d0447db08068a497e7beb892b2b2a7bff64b",
        "3a3dfb062c2e086c202d34f09ce29634515ad256"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Aug 02 22:22:46 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Aug 02 22:22:46 2010 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6\n\nConflicts:\n\tdrivers/net/e1000e/hw.h\n\tnet/bridge/br_device.c\n\tnet/bridge/br_input.c\n"
    },
    {
      "commit": "3c0fef0b7d36e5f8d3ea3731a8228102274e3c23",
      "tree": "71e201a342dcd11946891da0d900e7fd81a23217",
      "parents": [
        "99e6d06521f2a522ff5aaa812552f68220507c67"
      ],
      "author": {
        "name": "Josh Hunt",
        "email": "johunt@akamai.com",
        "time": "Fri Jul 30 13:49:35 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Aug 02 17:25:06 2010 -0700"
      },
      "message": "net: Add getsockopt support for TCP thin-streams\n\nInitial TCP thin-stream commit did not add getsockopt support for the new\nsocket options: TCP_THIN_LINEAR_TIMEOUTS and TCP_THIN_DUPACK. This adds support\nfor them.\n\nSigned-off-by: Josh Hunt \u003cjohunt@akamai.com\u003e\nTested-by: Andreas Petlund \u003capetlund@simula.no\u003e\nAcked-by: Andreas Petlund \u003capetlund@simula.no\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "a3bdb549e30e7a263f7a589747c40e9c50110315",
      "tree": "ac14f82ebe454fdbc00c3f1298a293e03e1f1592",
      "parents": [
        "eeaf61d8891f9c9ed12c1a667e72bf83f0857954"
      ],
      "author": {
        "name": "Dmitry Popov",
        "email": "dp@highloadlab.com",
        "time": "Thu Jul 29 01:59:36 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jul 30 23:04:07 2010 -0700"
      },
      "message": "tcp: cookie transactions setsockopt memory leak\n\nThere is a bug in do_tcp_setsockopt(net/ipv4/tcp.c),\nTCP_COOKIE_TRANSACTIONS case.\nIn some cases (when tp-\u003ecookie_values \u003d\u003d NULL) new tcp_cookie_values\nstructure can be allocated (at cvp), but not bound to\ntp-\u003ecookie_values. So a memory leak occurs.\n\nSigned-off-by: Dmitry Popov \u003cdp@highloadlab.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "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": "3a047bf87b1b6f69c62ab9fb28072c639cb7e2fa",
      "tree": "b134b9942d2b378b1afd81b07ffdfb948cd1439e",
      "parents": [
        "d809ec895505e6f35fb1965f0946381ab4eaa474"
      ],
      "author": {
        "name": "Changli Gao",
        "email": "xiaosuo@gmail.com",
        "time": "Mon Jul 12 21:00:12 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jul 14 14:45:15 2010 -0700"
      },
      "message": "rfs: call sock_rps_record_flow() in tcp_splice_read()\n\nrfs: call sock_rps_record_flow() in tcp_splice_read()\n\ncall sock_rps_record_flow() in tcp_splice_read(), so the applications using\nsplice(2) or sendfile(2) can utilize RFS.\n\nSigned-off-by: Changli Gao \u003cxiaosuo@gmail.com\u003e\n----\n net/ipv4/tcp.c |    1 +\n 1 file changed, 1 insertion(+)\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "7ba42910073f8432934d61a6c08b1023c408fb62",
      "tree": "4f74648133eaf6cbea26d59c43d34e7153648f5d",
      "parents": [
        "53d3176b282cc105493babb0fef36c8b873f6201"
      ],
      "author": {
        "name": "Changli Gao",
        "email": "xiaosuo@gmail.com",
        "time": "Sat Jul 10 20:41:55 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jul 12 20:21:46 2010 -0700"
      },
      "message": "inet, inet6: make tcp_sendmsg() and tcp_sendpage() through inet_sendmsg() and inet_sendpage()\n\na new boolean flag no_autobind is added to structure proto to avoid the autobind\ncalls when the protocol is TCP. Then sock_rps_record_flow() is called int the\nTCP\u0027s sendmsg() and sendpage() pathes.\n\nSigned-off-by: Changli Gao \u003cxiaosuo@gmail.com\u003e\n----\n include/net/inet_common.h |    4 ++++\n include/net/sock.h        |    1 +\n include/net/tcp.h         |    8 ++++----\n net/ipv4/af_inet.c        |   15 +++++++++------\n net/ipv4/tcp.c            |   11 +++++------\n net/ipv4/tcp_ipv4.c       |    3 +++\n net/ipv6/af_inet6.c       |    8 ++++----\n net/ipv6/tcp_ipv6.c       |    3 +++\n 8 files changed, 33 insertions(+), 20 deletions(-)\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "4bc2f18ba4f22a90ab593c0a580fc9a19c4777b6",
      "tree": "bb39f427bd468d0e34a73ebc788db726406fa261",
      "parents": [
        "ba80a2522899ea71a5b201bae60bdfd99126af95"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Fri Jul 09 21:22:10 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jul 12 12:57:54 2010 -0700"
      },
      "message": "net/ipv4: EXPORT_SYMBOL cleanups\n\nCodingStyle cleanups\n\nEXPORT_SYMBOL should immediately follow the symbol declaration.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "7a9b2d59507d85569b8a456688ef40cf2ac73e48",
      "tree": "436533da6f680a0b4b6860e0219a2e594ac16735",
      "parents": [
        "b6b3ecc71a0664d44ed8d087d583aee98fbf492a"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Thu Jun 24 00:52:37 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jun 28 23:24:29 2010 -0700"
      },
      "message": "net: use this_cpu_ptr()\n\nuse this_cpu_ptr(p) instead of per_cpu_ptr(p, smp_processor_id())\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "565b7b2d2e632b5792879c0c9cccdd9eecd31195",
      "tree": "f5bbe0e7a2719f6076a567cb3a68ff47f0c4bcb9",
      "parents": [
        "7a938f80264f2cbfb0c0841b450eab42a8093281"
      ],
      "author": {
        "name": "Konstantin Khorenko",
        "email": "khorenko@openvz.org",
        "time": "Thu Jun 24 21:54:58 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Jun 24 21:54:58 2010 -0700"
      },
      "message": "tcp: do not send reset to already closed sockets\n\ni\u0027ve found that tcp_close() can be called for an already closed\nsocket, but still sends reset in this case (tcp_send_active_reset())\nwhich seems to be incorrect.  Moreover, a packet with reset is sent\nwith different source port as original port number has been already\ncleared on socket.  Besides that incrementing stat counter for\nLINUX_MIB_TCPABORTONCLOSE also does not look correct in this case.\n\nInitially this issue was found on 2.6.18-x RHEL5 kernel, but the same\nseems to be true for the current mainstream kernel (checked on\n2.6.35-rc3).  Please, correct me if i missed something.\n\nHow that happens:\n\n1) the server receives a packet for socket in TCP_CLOSE_WAIT state\n   that triggers a tcp_reset():\n\nCall Trace:\n \u003cIRQ\u003e  [\u003cffffffff8025b9b9\u003e] tcp_reset+0x12f/0x1e8\n [\u003cffffffff80046125\u003e] tcp_rcv_state_process+0x1c0/0xa08\n [\u003cffffffff8003eb22\u003e] tcp_v4_do_rcv+0x310/0x37a\n [\u003cffffffff80028bea\u003e] tcp_v4_rcv+0x74d/0xb43\n [\u003cffffffff8024ef4c\u003e] ip_local_deliver_finish+0x0/0x259\n [\u003cffffffff80037131\u003e] ip_local_deliver+0x200/0x2f4\n [\u003cffffffff8003843c\u003e] ip_rcv+0x64c/0x69f\n [\u003cffffffff80021d89\u003e] netif_receive_skb+0x4c4/0x4fa\n [\u003cffffffff80032eca\u003e] process_backlog+0x90/0xec\n [\u003cffffffff8000cc50\u003e] net_rx_action+0xbb/0x1f1\n [\u003cffffffff80012d3a\u003e] __do_softirq+0xf5/0x1ce\n [\u003cffffffff8001147a\u003e] handle_IRQ_event+0x56/0xb0\n [\u003cffffffff8006334c\u003e] call_softirq+0x1c/0x28\n [\u003cffffffff80070476\u003e] do_softirq+0x2c/0x85\n [\u003cffffffff80070441\u003e] do_IRQ+0x149/0x152\n [\u003cffffffff80062665\u003e] ret_from_intr+0x0/0xa\n \u003cEOI\u003e  [\u003cffffffff80008a2e\u003e] __handle_mm_fault+0x6cd/0x1303\n [\u003cffffffff80008903\u003e] __handle_mm_fault+0x5a2/0x1303\n [\u003cffffffff80033a9d\u003e] cache_free_debugcheck+0x21f/0x22e\n [\u003cffffffff8006a263\u003e] do_page_fault+0x49a/0x7dc\n [\u003cffffffff80066487\u003e] thread_return+0x89/0x174\n [\u003cffffffff800c5aee\u003e] audit_syscall_exit+0x341/0x35c\n [\u003cffffffff80062e39\u003e] error_exit+0x0/0x84\n\ntcp_rcv_state_process()\n...  // (sk_state \u003d\u003d TCP_CLOSE_WAIT here)\n...\n        /* step 2: check RST bit */\n        if(th-\u003erst) {\n                tcp_reset(sk);\n                goto discard;\n        }\n...\n---------------------------------\ntcp_rcv_state_process\n tcp_reset\n  tcp_done\n   tcp_set_state(sk, TCP_CLOSE);\n     inet_put_port\n      __inet_put_port\n       inet_sk(sk)-\u003enum \u003d 0;\n\n   sk-\u003esk_shutdown \u003d SHUTDOWN_MASK;\n\n2) After that the process (socket owner) tries to write something to\n   that socket and \"inet_autobind\" sets a _new_ (which differs from\n   the original!) port number for the socket:\n\n Call Trace:\n  [\u003cffffffff80255a12\u003e] inet_bind_hash+0x33/0x5f\n  [\u003cffffffff80257180\u003e] inet_csk_get_port+0x216/0x268\n  [\u003cffffffff8026bcc9\u003e] inet_autobind+0x22/0x8f\n  [\u003cffffffff80049140\u003e] inet_sendmsg+0x27/0x57\n  [\u003cffffffff8003a9d9\u003e] do_sock_write+0xae/0xea\n  [\u003cffffffff80226ac7\u003e] sock_writev+0xdc/0xf6\n  [\u003cffffffff800680c7\u003e] _spin_lock_irqsave+0x9/0xe\n  [\u003cffffffff8001fb49\u003e] __pollwait+0x0/0xdd\n  [\u003cffffffff8008d533\u003e] default_wake_function+0x0/0xe\n  [\u003cffffffff800a4f10\u003e] autoremove_wake_function+0x0/0x2e\n  [\u003cffffffff800f0b49\u003e] do_readv_writev+0x163/0x274\n  [\u003cffffffff80066538\u003e] thread_return+0x13a/0x174\n  [\u003cffffffff800145d8\u003e] tcp_poll+0x0/0x1c9\n  [\u003cffffffff800c56d3\u003e] audit_syscall_entry+0x180/0x1b3\n  [\u003cffffffff800f0dd0\u003e] sys_writev+0x49/0xe4\n  [\u003cffffffff800622dd\u003e] tracesys+0xd5/0xe0\n\n3) sendmsg fails at last with -EPIPE (\u003d\u003e \u0027write\u0027 returns -EPIPE in userspace):\n\nF: tcp_sendmsg1 -EPIPE: sk\u003dffff81000bda00d0, sport\u003d49847, old_state\u003d7, new_state\u003d7, sk_err\u003d0, sk_shutdown\u003d3\n\nCall Trace:\n [\u003cffffffff80027557\u003e] tcp_sendmsg+0xcb/0xe87\n [\u003cffffffff80033300\u003e] release_sock+0x10/0xae\n [\u003cffffffff8016f20f\u003e] vgacon_cursor+0x0/0x1a7\n [\u003cffffffff8026bd32\u003e] inet_autobind+0x8b/0x8f\n [\u003cffffffff8003a9d9\u003e] do_sock_write+0xae/0xea\n [\u003cffffffff80226ac7\u003e] sock_writev+0xdc/0xf6\n [\u003cffffffff800680c7\u003e] _spin_lock_irqsave+0x9/0xe\n [\u003cffffffff8001fb49\u003e] __pollwait+0x0/0xdd\n [\u003cffffffff8008d533\u003e] default_wake_function+0x0/0xe\n [\u003cffffffff800a4f10\u003e] autoremove_wake_function+0x0/0x2e\n [\u003cffffffff800f0b49\u003e] do_readv_writev+0x163/0x274\n [\u003cffffffff80066538\u003e] thread_return+0x13a/0x174\n [\u003cffffffff800145d8\u003e] tcp_poll+0x0/0x1c9\n [\u003cffffffff800c56d3\u003e] audit_syscall_entry+0x180/0x1b3\n [\u003cffffffff800f0dd0\u003e] sys_writev+0x49/0xe4\n [\u003cffffffff800622dd\u003e] tracesys+0xd5/0xe0\n\ntcp_sendmsg()\n...\n        /* Wait for a connection to finish. */\n        if ((1 \u003c\u003c sk-\u003esk_state) \u0026 ~(TCPF_ESTABLISHED | TCPF_CLOSE_WAIT)) {\n                int old_state \u003d sk-\u003esk_state;\n                if ((err \u003d sk_stream_wait_connect(sk, \u0026timeo)) !\u003d 0) {\nif (f_d \u0026\u0026 (err \u003d\u003d -EPIPE)) {\n        printk(\"F: tcp_sendmsg1 -EPIPE: sk\u003d%p, sport\u003d%u, old_state\u003d%d, new_state\u003d%d, \"\n                \"sk_err\u003d%d, sk_shutdown\u003d%d\\n\",\n                sk, ntohs(inet_sk(sk)-\u003esport), old_state, sk-\u003esk_state,\n                sk-\u003esk_err, sk-\u003esk_shutdown);\n        dump_stack();\n}\n                        goto out_err;\n                }\n        }\n...\n\n4) Then the process (socket owner) understands that it\u0027s time to close\n   that socket and does that (and thus triggers sending reset packet):\n\nCall Trace:\n...\n [\u003cffffffff80032077\u003e] dev_queue_xmit+0x343/0x3d6\n [\u003cffffffff80034698\u003e] ip_output+0x351/0x384\n [\u003cffffffff80251ae9\u003e] dst_output+0x0/0xe\n [\u003cffffffff80036ec6\u003e] ip_queue_xmit+0x567/0x5d2\n [\u003cffffffff80095700\u003e] vprintk+0x21/0x33\n [\u003cffffffff800070f0\u003e] check_poison_obj+0x2e/0x206\n [\u003cffffffff80013587\u003e] poison_obj+0x36/0x45\n [\u003cffffffff8025dea6\u003e] tcp_send_active_reset+0x15/0x14d\n [\u003cffffffff80023481\u003e] dbg_redzone1+0x1c/0x25\n [\u003cffffffff8025dea6\u003e] tcp_send_active_reset+0x15/0x14d\n [\u003cffffffff8000ca94\u003e] cache_alloc_debugcheck_after+0x189/0x1c8\n [\u003cffffffff80023405\u003e] tcp_transmit_skb+0x764/0x786\n [\u003cffffffff8025df8a\u003e] tcp_send_active_reset+0xf9/0x14d\n [\u003cffffffff80258ff1\u003e] tcp_close+0x39a/0x960\n [\u003cffffffff8026be12\u003e] inet_release+0x69/0x80\n [\u003cffffffff80059b31\u003e] sock_release+0x4f/0xcf\n [\u003cffffffff80059d4c\u003e] sock_close+0x2c/0x30\n [\u003cffffffff800133c9\u003e] __fput+0xac/0x197\n [\u003cffffffff800252bc\u003e] filp_close+0x59/0x61\n [\u003cffffffff8001eff6\u003e] sys_close+0x85/0xc7\n [\u003cffffffff800622dd\u003e] tracesys+0xd5/0xe0\n\nSo, in brief:\n\n* a received packet for socket in TCP_CLOSE_WAIT state triggers\n  tcp_reset() which clears inet_sk(sk)-\u003enum and put socket into\n  TCP_CLOSE state\n\n* an attempt to write to that socket forces inet_autobind() to get a\n  new port (but the write itself fails with -EPIPE)\n\n* tcp_close() called for socket in TCP_CLOSE state sends an active\n  reset via socket with newly allocated port\n\nThis adds an additional check in tcp_close() for already closed\nsockets. We do not want to send anything to closed sockets.\n\nSigned-off-by: Konstantin Khorenko \u003ckhorenko@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "a3433f35a55f7604742cae620c6dc6edfc70db6a",
      "tree": "4ce6d169e402c03a48319a9db4055cc31df00d42",
      "parents": [
        "f350a0a87374418635689471606454abc7beaa3a"
      ],
      "author": {
        "name": "Changli Gao",
        "email": "xiaosuo@gmail.com",
        "time": "Sat Jun 12 14:01:43 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jun 15 11:56:19 2010 -0700"
      },
      "message": "tcp: unify tcp flag macros\n\nunify tcp flag macros: TCPHDR_FIN, TCPHDR_SYN, TCPHDR_RST, TCPHDR_PSH,\nTCPHDR_ACK, TCPHDR_URG, TCPHDR_ECE and TCPHDR_CWR. TCBCB_FLAG_* are replaced\nwith the corresponding TCPHDR_*.\n\nSigned-off-by: Changli Gao \u003cxiaosuo@gmail.com\u003e\n----\n include/net/tcp.h                      |   24 ++++++-------\n net/ipv4/tcp.c                         |    8 ++--\n net/ipv4/tcp_input.c                   |    2 -\n net/ipv4/tcp_output.c                  |   59 ++++++++++++++++-----------------\n net/netfilter/nf_conntrack_proto_tcp.c |   32 ++++++-----------\n net/netfilter/xt_TCPMSS.c              |    4 --\n 6 files changed, 58 insertions(+), 71 deletions(-)\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "d7fd1b5747fff3bde92777bcaf705d98ae6f8b6f",
      "tree": "8cdac5dba6b350fd759eadd324e706639180a162",
      "parents": [
        "15e83ed78864d0625e87a85f09b297c0919a4797"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Mon May 17 20:40:51 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon May 31 00:24:02 2010 -0700"
      },
      "message": "tcp: tcp_md5_hash_skb_data() frag_list handling\n\ntcp_md5_hash_skb_data() should handle skb-\u003efrag_list, and eventually\nrecurse.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "ccbd6a5a4f76e821ed36f69fdaf59817c3a7f18e",
      "tree": "9fd681809e588913cc312f63ae0e701f18599afc",
      "parents": [
        "935e2a26b85003c0bd52b6c92712c2f77a5f9d33"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Fri May 14 10:58:26 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon May 17 17:44:35 2010 -0700"
      },
      "message": "net: Remove unnecessary semicolons after switch statements\n\nAlso added an explicit break; to avoid\na fallthrough in net/ipv4/tcp_input.c\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "6811d58fc148c393f80a9f5a9db49d7e75cdc546",
      "tree": "c25d5b0e49ec848943d35f819e748d157ccb492e",
      "parents": [
        "c4949f074332a64baeb2ead6ab9319ca37642f96",
        "c02db8c6290bb992442fec1407643c94cc414375"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun May 16 22:26:58 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun May 16 22:26:58 2010 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6\n\nConflicts:\n\tinclude/linux/if_link.h\n"
    },
    {
      "commit": "35790c0421121364883a167bab8a2e37e1f67f78",
      "tree": "a3e032a9ba6bb77337176bef407d7408d6a10a4d",
      "parents": [
        "d77f873fdd21912803836da78f627d2efd267082"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Sun May 16 00:34:04 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun May 16 00:34:04 2010 -0700"
      },
      "message": "tcp: fix MD5 (RFC2385) support\n\nTCP MD5 support uses percpu data for temporary storage. It currently\ndisables preemption so that same storage cannot be reclaimed by another\nthread on same cpu.\n\nWe also have to make sure a softirq handler wont try to use also same\ncontext. Various bug reports demonstrated corruptions.\n\nFix is to disable preemption and BH.\n\nReported-by: Bhaskar Dutta \u003cbhaskie@gmail.com\u003e\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "6c37e5de456987f5bc80879afde05aa120784095",
      "tree": "1459ee69ef3c7172a82d07a7b8aea00836eedda5",
      "parents": [
        "dcdca2c49bb6328bbc7cd8d73434c308b5dd0df2"
      ],
      "author": {
        "name": "Flavio Leitner",
        "email": "fleitner@redhat.com",
        "time": "Mon Apr 26 18:33:27 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Apr 27 12:53:25 2010 -0700"
      },
      "message": "TCP: avoid to send keepalive probes if receiving data\n\nRFC 1122 says the following:\n...\n  Keep-alive packets MUST only be sent when no data or\n  acknowledgement packets have been received for the\n  connection within an interval.\n...\n\nThe acknowledgement packet is reseting the keepalive\ntimer but the data packet isn\u0027t. This patch fixes it by\nchecking the timestamp of the last received data packet\ntoo when the keepalive timer expires.\n\nSigned-off-by: Flavio Leitner \u003cfleitner@redhat.com\u003e\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nAcked-by: Ilpo Järvinen \u003cilpo.jarvinen@helsinki.fi\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "0eae88f31ca2b88911ce843452054139e028771f",
      "tree": "90f50197d8e1e50e3621e9c525bd4ca2634fe368",
      "parents": [
        "cb903bf4ee2d6e53210e2174d363e10698112042"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Tue Apr 20 19:06:52 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Apr 20 19:06:52 2010 -0700"
      },
      "message": "net: Fix various endianness glitches\n\nSparse can help us find endianness bugs, but we need to make some\ncleanups to be able to more easily spot real bugs.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "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": "cb4361c1dc29cd870f664c004b1817106fbce0fa",
      "tree": "c31533210d738c9074b21b8f31fe0399b39545f0",
      "parents": [
        "309361e09ca9e9670dc8664e5d14125bf82078af",
        "fb9e2d887243499b8d28efcf80821c4f6a092395"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 06 08:34:06 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 06 08:34:06 2010 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (37 commits)\n  smc91c92_cs: fix the problem of \"Unable to find hardware address\"\n  r8169: clean up my printk uglyness\n  net: Hook up cxgb4 to Kconfig and Makefile\n  cxgb4: Add main driver file and driver Makefile\n  cxgb4: Add remaining driver headers and L2T management\n  cxgb4: Add packet queues and packet DMA code\n  cxgb4: Add HW and FW support code\n  cxgb4: Add register, message, and FW definitions\n  netlabel: Fix several rcu_dereference() calls used without RCU read locks\n  bonding: fix potential deadlock in bond_uninit()\n  net: check the length of the socket address passed to connect(2)\n  stmmac: add documentation for the driver.\n  stmmac: fix kconfig for crc32 build error\n  be2net: fix bug in vlan rx path for big endian architecture\n  be2net: fix flashing on big endian architectures\n  be2net: fix a bug in flashing the redboot section\n  bonding: bond_xmit_roundrobin() fix\n  drivers/net: Add missing unlock\n  net: gianfar - align BD ring size console messages\n  net: gianfar - initialize per-queue statistics\n  ...\n"
    },
    {
      "commit": "baff42ab1494528907bf4d5870359e31711746ae",
      "tree": "82cfffb254ea1f5b95701d328375228f7ab343e6",
      "parents": [
        "c0cd884af045338476b8e69a61fceb3f34ff22f1"
      ],
      "author": {
        "name": "Steven J. Magnani",
        "email": "steve@digidescorp.com",
        "time": "Tue Mar 30 13:56:01 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Mar 30 13:56:01 2010 -0700"
      },
      "message": "net: Fix oops from tcp_collapse() when using splice()\n\ntcp_read_sock() can have a eat skbs without immediately advancing copied_seq.\nThis can cause a panic in tcp_collapse() if it is called as a result\nof the recv_actor dropping the socket lock.\n\nA userspace program that splices data from a socket to either another\nsocket or to a file can trigger this bug.\n\nSigned-off-by: Steven J. Magnani \u003csteve@digidescorp.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": "73852e8151b7d7a529fbe019ab6d2d0c02d8f3f2",
      "tree": "724151d30c232e38ea947705986cfe60a3359241",
      "parents": [
        "f5d410f2ea7ba340f11815a56e05b9fa9421c421"
      ],
      "author": {
        "name": "Steven J. Magnani",
        "email": "steve@digidescorp.com",
        "time": "Tue Mar 16 05:22:44 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Mar 20 14:29:02 2010 -0700"
      },
      "message": "NET_DMA: free skbs periodically\n\nUnder NET_DMA, data transfer can grind to a halt when userland issues a\nlarge read on a socket with a high RCVLOWAT (i.e., 512 KB for both).\nThis appears to be because the NET_DMA design queues up lots of memcpy\noperations, but doesn\u0027t issue or wait for them (and thus free the\nassociated skbs) until it is time for tcp_recvmesg() to return.\nThe socket hangs when its TCP window goes to zero before enough data is\navailable to satisfy the read.\n\nPeriodically issue asynchronous memcpy operations, and free skbs for ones\nthat have completed, to prevent sockets from going into zero-window mode.\n\nSigned-off-by: Steven J. Magnani \u003csteve@digidescorp.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "b634f87522dff87712df8bda2a6c9061954d552a",
      "tree": "fad85992b6d2566ba635434339da7567966ce1a6",
      "parents": [
        "22001a13d09d82772e831dcdac0553994a4bac5d"
      ],
      "author": {
        "name": "Alexandra Kossovsky",
        "email": "Alexandra.Kossovsky@oktetlabs.ru",
        "time": "Thu Mar 18 20:29:24 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Mar 18 20:29:24 2010 -0700"
      },
      "message": "tcp: Fix OOB POLLIN avoidance.\n\nFrom: Alexandra.Kossovsky@oktetlabs.ru\n\nFixes kernel bugzilla #15541\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "7e38017557bc0b87434d184f8804cadb102bb903",
      "tree": "30c4a0793bd28f6731ade58786c06f9cf33115df",
      "parents": [
        "36e31b0af58728071e8023cf8e20c5166b700717"
      ],
      "author": {
        "name": "Andreas Petlund",
        "email": "apetlund@simula.no",
        "time": "Thu Feb 18 04:48:19 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Feb 18 15:43:09 2010 -0800"
      },
      "message": "net: TCP thin dupack\n\nThis patch enables fast retransmissions after one dupACK for\nTCP if the stream is identified as thin. This will reduce\nlatencies for thin streams that are not able to trigger fast\nretransmissions due to high packet interarrival time. This\nmechanism is only active if enabled by iocontrol or syscontrol\nand the stream is identified as thin.\n\nSigned-off-by: Andreas Petlund \u003capetlund@simula.no\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "36e31b0af58728071e8023cf8e20c5166b700717",
      "tree": "8b4d251bf78965ac7501bea9011786b8255a3312",
      "parents": [
        "5aa4b32fc86408705337e941ed716880c63d1590"
      ],
      "author": {
        "name": "Andreas Petlund",
        "email": "apetlund@simula.no",
        "time": "Thu Feb 18 02:47:01 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Feb 18 15:43:08 2010 -0800"
      },
      "message": "net: TCP thin linear timeouts\n\nThis patch will make TCP use only linear timeouts if the\nstream is thin. This will help to avoid the very high latencies\nthat thin stream suffer because of exponential backoff. This\nmechanism is only active if enabled by iocontrol or syscontrol\nand the stream is identified as thin. A maximum of 6 linear\ntimeouts is tried before exponential backoff is resumed.\n\nSigned-off-by: Andreas Petlund \u003capetlund@simula.no\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "7d720c3e4f0c4fc152a6bf17e24244a3c85412d2",
      "tree": "36e037187ce79acb211702bea22e99c625787757",
      "parents": [
        "2bb4646fce8d09916b351d1a62f98db7cec6fc41"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 16 15:20:26 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Feb 16 23:05:38 2010 -0800"
      },
      "message": "percpu: add __percpu sparse annotations to net\n\nAdd __percpu sparse annotations to net.\n\nThese annotations are to make sparse consider percpu variables to be\nin a different address space and warn if accessed without going\nthrough percpu accessors.  This patch doesn\u0027t affect normal builds.\n\nThe macro and type tricks around snmp stats make things a bit\ninteresting.  DEFINE/DECLARE_SNMP_STAT() macros mark the target field\nas __percpu and SNMP_UPD_PO_STATS() macro is updated accordingly.  All\nsnmp_mib_*() users which used to cast the argument to (void **) are\nupdated to cast it to (void __percpu **).\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: David S. Miller \u003cdavem@davemloft.net\u003e\nCc: Patrick McHardy \u003ckaber@trash.net\u003e\nCc: Arnaldo Carvalho de Melo \u003cacme@ghostprotocols.net\u003e\nCc: Vlad Yasevich \u003cvladislav.yasevich@hp.com\u003e\nCc: netdev@vger.kernel.org\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "def87cf42069a6d4fd42a2ede8f19c620a292568",
      "tree": "1e8e97b452dd95d389feb4f04c0f25b6a9264412",
      "parents": [
        "afeca340c078e17ca233b3c68c3c3a70c56bfe1d"
      ],
      "author": {
        "name": "Krishna Kumar",
        "email": "krkumar2@in.ibm.com",
        "time": "Thu Dec 10 07:16:59 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Dec 23 14:13:29 2009 -0800"
      },
      "message": "tcp: Slightly optimize tcp_sendmsg\n\nSlightly optimize tcp_sendmsg since NETIF_F_SG is used many\ntimes iteratively in the loop. The only other modification is\nto change:\n\t\t\t} else if (i \u003d\u003d MAX_SKB_FRAGS ||\n\t\t\t\t   (!i \u0026\u0026\n\t\t\t\t   !(sk-\u003esk_route_caps \u0026 NETIF_F_SG))) {\n\tto:\n\t\t\t} else if (i \u003d\u003d MAX_SKB_FRAGS || !sg) {\n\nThe reason why this change is correct: this code (other than\nthe MAX_SKB_FRAGS case) executes only due to the else part\nof: \"if (skb_tailroom(skb) \u003e 0) {\" - i.e. there was no space\nin the skb to put the data inline. Hence SG is false is a\nsufficient condition, and there is no way a fragment can be\nadded to the skb.\n\nChangelog:\n\t- Added the above explanation for the change\n\nSigned-off-by: Krishna Kumar \u003ckrkumar2@in.ibm.com\u003e\nAcked-by: Ilpo Järvinen \u003cilpo.jarvinen@helsinki.fi\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "afeca340c078e17ca233b3c68c3c3a70c56bfe1d",
      "tree": "f7b308856bdd21f41ea61cf6b74cd28e50b0448f",
      "parents": [
        "12d50c46dc0f7fd2e625c4befaa5fa5740a7a594"
      ],
      "author": {
        "name": "Krishna Kumar",
        "email": "krkumar2@in.ibm.com",
        "time": "Thu Dec 10 07:16:52 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Dec 23 14:13:28 2009 -0800"
      },
      "message": "tcp: Remove unrequired operations in tcp_push()\n\nRemove unrequired operations in tcp_push()\n\nChangelog:\n\tRemoved a temporary skb variable from tcp_push()\n\nSigned-off-by: Krishna Kumar \u003ckrkumar2@in.ibm.com\u003e\nAcked-by: Ilpo Järvinen \u003cilpo.jarvinen@helsinki.fi\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "3dc789320e1b310cb505dcd94512c279abcd5e1c",
      "tree": "b6173953ccff6c9bfd83096c97027c2d338287d1",
      "parents": [
        "e61444d9209821469ed0d5a9128dcf2e494533ea"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Dec 08 20:07:54 2009 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Dec 08 20:07:54 2009 -0800"
      },
      "message": "tcp: Remove runtime check that can never be true.\n\nGCC even warns about it, as reported by Andrew Morton:\n\nnet/ipv4/tcp.c: In function \u0027do_tcp_getsockopt\u0027:\nnet/ipv4/tcp.c:2544: warning: comparison is always false due to limited range of data type\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "e56fb50f2b7958b931c8a2fc0966061b3f3c8f3a",
      "tree": "392f548e99f5d098286cea54fb9e18ac8c31e672",
      "parents": [
        "435cf559f02ea3a3159eb316f97dc88bdebe9432"
      ],
      "author": {
        "name": "William Allen Simpson",
        "email": "william.allen.simpson@gmail.com",
        "time": "Wed Dec 02 18:19:30 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Dec 02 22:07:25 2009 -0800"
      },
      "message": "TCPCT part 1e: implement socket option TCP_COOKIE_TRANSACTIONS\n\nProvide per socket control of the TCP cookie option and SYN/SYNACK data.\n\nThis is a straightforward re-implementation of an earlier (year-old)\npatch that no longer applies cleanly, with permission of the original\nauthor (Adam Langley):\n\n    http://thread.gmane.org/gmane.linux.network/102586\n\nThe principle difference is using a TCP option to carry the cookie nonce,\ninstead of a user configured offset in the data.\n\nAllocations have been rearranged to avoid requiring GFP_ATOMIC.\n\nRequires:\n   net: TCP_MSS_DEFAULT, TCP_MSS_DESIRED\n   TCPCT part 1c: sysctl_tcp_cookie_size, socket option TCP_COOKIE_TRANSACTIONS\n   TCPCT part 1d: define TCP cookie option, extend existing struct\u0027s\n\nSigned-off-by: William.Allen.Simpson@gmail.com\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "da5c78c82629a167794436e4306b4cf1faddea90",
      "tree": "c933fdc0583b592c01885890ebf770840555d28b",
      "parents": [
        "e6b4d11367519bc71729c09d05a126b133c755be"
      ],
      "author": {
        "name": "William Allen Simpson",
        "email": "william.allen.simpson@gmail.com",
        "time": "Wed Dec 02 18:12:09 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Dec 02 22:07:23 2009 -0800"
      },
      "message": "TCPCT part 1b: generate Responder Cookie secret\n\nDefine (missing) hash message size for SHA1.\n\nDefine hashing size constants specific to TCP cookies.\n\nAdd new function: tcp_cookie_generator().\n\nMaintain global secret values for tcp_cookie_generator().\n\nThis is a significantly revised implementation of earlier (15-year-old)\nPhoturis [RFC-2522] code for the KA9Q cooperative multitasking platform.\n\nLinux RCU technique appears to be well-suited to this application, though\nneither of the circular queue items are freed.\n\nThese functions will also be used in subsequent patches that implement\nadditional features.\n\nSigned-off-by: William.Allen.Simpson@gmail.com\nAcked-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "ff9c38bba37937adb909cceb2a6521f2e92e17c6",
      "tree": "93bd6152d9fa28348be99ef1c788040cc7b7a94d",
      "parents": [
        "65c0cfafce9575319fb6f70080fbe226e5617e3b",
        "b2722b1c3a893ec6021508da15b32282ec79f4da"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Dec 01 22:13:38 2009 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Dec 01 22:13:38 2009 -0800"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6\n\nConflicts:\n\tnet/mac80211/ht.c\n"
    },
    {
      "commit": "1fdf475aa141a669af8db6ccc7015f0b725087de",
      "tree": "7298a884935feb59352566ca6119856a0e322cb5",
      "parents": [
        "0cae200eec6330cd2c20b24279597be1da50dc93"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Mon Nov 30 12:53:30 2009 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Nov 30 12:53:30 2009 -0800"
      },
      "message": "tcp: tcp_disconnect() should clear window_clamp\n\nNFS can reuse its TCP socket after calling tcp_disconnect().\n\nWe noticed window scaling was not negotiated in SYN packet of next\nconnection request.\n\nFix is to clear tp-\u003ewindow_clamp in tcp_disconnect().\n\nReported-by: Krzysztof Oledzki \u003cole@ans.pl\u003e\nTested-by: Krzysztof Oledzki \u003cole@ans.pl\u003e\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "a2bfbc072e279ff81e6b336acff612b9bc2e5281",
      "tree": "89cfe21911e1539e1b7f89d8a10d42abecba2a18",
      "parents": [
        "5c427ff9e4cc61625d48172ea082ae99e21eea6a",
        "82b3cc1a2f5e46300a9dec4a8cc8106dc20a4c23"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Nov 17 00:05:02 2009 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Nov 17 00:05:02 2009 -0800"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6\n\nConflicts:\n\tdrivers/net/can/Kconfig\n"
    },
    {
      "commit": "d792c1006fe92448217b71513d3955868358271d",
      "tree": "918d3fea89ab7f053a0a3f15c2b2feff24f81ef5",
      "parents": [
        "d01032e4fd33110f9f3a085a36cb819c1dfc5827"
      ],
      "author": {
        "name": "Ilpo Järvinen",
        "email": "ilpo.jarvinen@helsinki.fi",
        "time": "Fri Nov 13 13:56:33 2009 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Nov 13 13:56:33 2009 -0800"
      },
      "message": "tcp: provide more information on the tcp receive_queue bugs\n\nThe addition of rcv_nxt allows to discern whether the skb\nwas out of place or tp-\u003ecopied. Also catch fancy combination\nof flags if necessary (sadly we might miss the actual causer\nflags as it might have already returned).\n\nBtw, we perhaps would want to forward copied_seq in\nsomewhere or otherwise we might have some nice loop with\nWARN stuff within but where to do that safely I don\u0027t\nknow at this stage until more is known (but it is not\nmade significantly worse by this patch).\n\nSigned-off-by: Ilpo Järvinen \u003cilpo.jarvinen@helsinki.fi\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "cfadf853f6cd9689f79a63ca960c6f9d6665314f",
      "tree": "35418e342d9783f0974ea33ef03875aa21d2362a",
      "parents": [
        "05423b241311c9380b7280179295bac7794281b6",
        "f568a926a353d6816b3704d7367f34371df44ce7"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Oct 27 01:03:26 2009 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Oct 27 01:03:26 2009 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6\n\nConflicts:\n\tdrivers/net/sh_eth.c\n"
    },
    {
      "commit": "c62f4c453ab4b0240ab857bfd089da2c01ad91e7",
      "tree": "2c99ed102d752d762cc051ee1e89539e0453bdc0",
      "parents": [
        "74eee2e8d08048c847d1998c686e12a477ff939a"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Thu Oct 22 21:37:56 2009 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Oct 22 21:37:56 2009 -0700"
      },
      "message": "net: use WARN() for the WARN_ON in commit b6b39e8f3fbbb\n\nCommit b6b39e8f3fbbb (tcp: Try to catch MSG_PEEK bug) added a printk()\nto the WARN_ON() that\u0027s in tcp.c. This patch changes this combination\nto WARN(); the advantage of WARN() is that the printk message shows up\ninside the message, so that kerneloops.org will collect the message.\n\nIn addition, this gets rid of an extra if() statement.\n\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "b6b39e8f3fbbb31001b836afec87bcaf4811a7bf",
      "tree": "33cf8d3732bde60abc7651b0ecf78e297d7b0afb",
      "parents": [
        "55b8050353c4a212c94d7156e2bd5885225b869b"
      ],
      "author": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Mon Oct 19 19:41:06 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Oct 20 00:51:57 2009 -0700"
      },
      "message": "tcp: Try to catch MSG_PEEK bug\n\nThis patch tries to print out more information when we hit the\nMSG_PEEK bug in tcp_recvmsg.  It\u0027s been around since at least\n2005 and it\u0027s about time that we finally fix it.\n\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "b103cf34382f26ff48a87931b83f13b177b47c1a",
      "tree": "6922379bca3fc9935d394bc474a91b859ac06813",
      "parents": [
        "0c3d79bce48034018e840468ac5a642894a521a3"
      ],
      "author": {
        "name": "Julian Anastasov",
        "email": "ja@ssi.bg",
        "time": "Mon Oct 19 10:10:40 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Oct 19 19:19:06 2009 -0700"
      },
      "message": "tcp: fix TCP_DEFER_ACCEPT retrans calculation\n\nFix TCP_DEFER_ACCEPT conversion between seconds and\nretransmission to match the TCP SYN-ACK retransmission periods\nbecause the time is converted to such retransmissions. The old\nalgorithm selects one more retransmission in some cases. Allow\nup to 255 retransmissions.\n\nSigned-off-by: Julian Anastasov \u003cja@ssi.bg\u003e\nAcked-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "c720c7e8383aff1cb219bddf474ed89d850336e3",
      "tree": "4f12337e6690fccced376db9f501eaf98614a65e",
      "parents": [
        "988ade6b8e27e79311812f83a87b5cea11fabcd7"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Thu Oct 15 06:30:45 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Oct 18 18:52:53 2009 -0700"
      },
      "message": "inet: rename some inet_sock fields\n\nIn order to have better cache layouts of struct sock (separate zones\nfor rx/tx paths), we need this preliminary patch.\n\nGoal is to transfert fields used at lookup time in the first\nread-mostly cache line (inside struct sock_common) and move sk_refcnt\nto a separate cache line (only written by rx path)\n\nThis patch adds inet_ prefix to daddr, rcv_saddr, dport, num, saddr,\nsport and id fields. This allows a future patch to define these\nfields as macros, like sk_refcnt, without name clashes.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "f373b53b5fe67aa4a6f28f921a529cc90f88e79b",
      "tree": "b2cae9152aed2e30b7a39c114678b9355ab5c14f",
      "parents": [
        "c3faca053d0a9c877597935b434150b422dbc6fb"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Fri Oct 09 00:16:19 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Oct 13 03:44:02 2009 -0700"
      },
      "message": "tcp: replace ehash_size by ehash_mask\n\nStoring the mask (size - 1) instead of the size allows fast path to be\na bit faster.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "42324c62704365d6a3e89138dea55909d2f26afe",
      "tree": "6a56f042aebb4e0dbc8da7e904d79989e42b3666",
      "parents": [
        "914a9ab386a288d0f22252fc268ecbc048cdcbd5"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Thu Oct 01 15:26:00 2009 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Oct 02 09:46:05 2009 -0700"
      },
      "message": "net: splice() from tcp to pipe should take into account O_NONBLOCK\n\ntcp_splice_read() doesnt take into account socket\u0027s O_NONBLOCK flag\n\nBefore this patch :\n\nsplice(socket,0,pipe,0,128*1024,SPLICE_F_MOVE);\ncauses a random endless block (if pipe is full) and\nsplice(socket,0,pipe,0,128*1024,SPLICE_F_MOVE | SPLICE_F_NONBLOCK);\nwill return 0 immediately if the TCP buffer is empty.\n\nUser application has no way to instruct splice() that socket should be in blocking mode\nbut pipe in nonblock more.\n\nMany projects cannot use splice(tcp -\u003e pipe) because of this flaw.\n\nhttp://git.samba.org/?p\u003dsamba.git;a\u003dhistory;f\u003dsource3/lib/recvfile.c;h\u003dea0159642137390a0f7e57a123684e6e63e47581;hb\u003dHEAD\nhttp://lkml.indiana.edu/hypermail/linux/kernel/0807.2/0687.html\n\nLinus introduced  SPLICE_F_NONBLOCK in commit 29e350944fdc2dfca102500790d8ad6d6ff4f69d\n(splice: add SPLICE_F_NONBLOCK flag )\n\n  It doesn\u0027t make the splice itself necessarily nonblocking (because the\n  actual file descriptors that are spliced from/to may block unless they\n  have the O_NONBLOCK flag set), but it makes the splice pipe operations\n  nonblocking.\n\nLinus intention was clear : let SPLICE_F_NONBLOCK control the splice pipe mode only\n\nThis patch instruct tcp_splice_read() to use the underlying file O_NONBLOCK\nflag, as other socket operations do.\n\nUsers will then call :\n\nsplice(socket,0,pipe,0,128*1024,SPLICE_F_MOVE | SPLICE_F_NONBLOCK );\n\nto block on data coming from socket (if file is in blocking mode),\nand not block on pipe output (to avoid deadlock)\n\nFirst version of this patch was submitted by Octavian Purdila\n\nReported-by: Volker Lendecke \u003cvl@samba.org\u003e\nReported-by: Jason Gunthorpe \u003cjgunthorpe@obsidianresearch.com\u003e\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: Octavian Purdila \u003copurdila@ixiacom.com\u003e\nAcked-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nAcked-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "4fdb78d3093a347456e108b77d56d493d29071b2",
      "tree": "2ad6dc10dc3603d40caaa26fbdb6684f30987a4e",
      "parents": [
        "28ad3957b913855e8d41a27f7b90bed944809625"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Thu Oct 01 15:02:20 2009 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Oct 01 15:02:20 2009 -0700"
      },
      "message": "net/ipv4/tcp.c: fix min() type mismatch warning\n\nnet/ipv4/tcp.c: In function \u0027do_tcp_setsockopt\u0027:\nnet/ipv4/tcp.c:2050: warning: comparison of distinct pointer types lacks a cast\n\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\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": "4481374ce88ba8f460c8b89f2572027bd27057d0",
      "tree": "6896601b6a1da0e3e932ffa75fcff966c834c02c",
      "parents": [
        "4738e1b9cf8f9e28d7de080a5e6ce5d0095ea18f"
      ],
      "author": {
        "name": "Jan Beulich",
        "email": "JBeulich@novell.com",
        "time": "Mon Sep 21 17:03:05 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:38 2009 -0700"
      },
      "message": "mm: replace various uses of num_physpages by totalram_pages\n\nSizing of memory allocations shouldn\u0027t depend on the number of physical\npages found in a system, as that generally includes (perhaps a huge amount\nof) non-RAM pages.  The amount of what actually is usable as storage\nshould instead be used as a basis here.\n\nSome of the calculations (i.e.  those not intending to use high memory)\nshould likely even use (totalram_pages - totalhigh_pages).\n\nSigned-off-by: Jan Beulich \u003cjbeulich@novell.com\u003e\nAcked-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Dave Airlie \u003cairlied@linux.ie\u003e\nCc: Kyle McMartin \u003ckyle@mcmartin.ca\u003e\nCc: Jeremy Fitzhardinge \u003cjeremy@goop.org\u003e\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nCc: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: Patrick McHardy \u003ckaber@trash.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0b6a05c1dbebe8c616e2e5b0f52b7a01fd792911",
      "tree": "18b5a2d16ac3fa8dd6d4528469725c216aed428c",
      "parents": [
        "036d6a673fa0a2e2c5b72a3b1d1b86114c1711c0"
      ],
      "author": {
        "name": "Ilpo Järvinen",
        "email": "ilpo.jarvinen@helsinki.fi",
        "time": "Tue Sep 15 01:30:10 2009 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Sep 15 01:30:10 2009 -0700"
      },
      "message": "tcp: fix ssthresh u16 leftover\n\nIt was once upon time so that snd_sthresh was a 16-bit quantity.\n...That has not been true for long period of time. I run across\nsome ancient compares which still seem to trust such legacy.\nPut all that magic into a single place, I hopefully found all\nof them.\n\nCompile tested, though linking of allyesconfig is ridiculous\nnowadays it seems.\n\nSigned-off-by: Ilpo Järvinen \u003cilpo.jarvinen@helsinki.fi\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "aa1330766c49199bdab4d4a9096d98b072df9044",
      "tree": "98787478dbef0faa7caee09c4996abcda723a608",
      "parents": [
        "05c6a8d7a7d778f26d8eb821556988993b766092"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Wed Sep 02 23:45:45 2009 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Sep 02 23:45:45 2009 -0700"
      },
      "message": "tcp: replace hard coded GFP_KERNEL with sk_allocation\n\nThis fixed a lockdep warning which appeared when doing stress\nmemory tests over NFS:\n\n\tinconsistent {RECLAIM_FS-ON-W} -\u003e {IN-RECLAIM_FS-W} usage.\n\n\tpage reclaim \u003d\u003e nfs_writepage \u003d\u003e tcp_sendmsg \u003d\u003e lock sk_lock\n\n\tmount_root \u003d\u003e nfs_root_data \u003d\u003e tcp_close \u003d\u003e lock sk_lock \u003d\u003e\n\t\t\ttcp_send_fin \u003d\u003e alloc_skb_fclone \u003d\u003e page reclaim\n\nDavid raised a concern that if the allocation fails in tcp_send_fin(), and it\u0027s\nGFP_ATOMIC, we are going to yield() (which sleeps) and loop endlessly waiting\nfor the allocation to succeed.\n\nBut fact is, the original GFP_KERNEL also sleeps. GFP_ATOMIC+yield() looks\nweird, but it is no worse the implicit sleep inside GFP_KERNEL. Both could\nloop endlessly under memory pressure.\n\nCC: Arnaldo Carvalho de Melo \u003cacme@ghostprotocols.net\u003e\nCC: David S. Miller \u003cdavem@davemloft.net\u003e\nCC: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "df19a6267705456f463871ae2aabc44299909d2a",
      "tree": "59654abf9eb5dc58c9f8773dde5738b5bcb18312",
      "parents": [
        "5e9b2dbfcbc9b180a0064d8a473a4652ee99c9ad"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Fri Aug 28 23:48:54 2009 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Aug 28 23:48:54 2009 -0700"
      },
      "message": "tcp: keepalive cleanups\n\nIntroduce keepalive_probes(tp) helper, and use it, like \nkeepalive_time_when(tp) and keepalive_intvl_when(tp)\n\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": "6828b92bd21acd65113dfe0541f19f5df0d9668f",
      "tree": "be9b1009500891d7598a2c19a63fad9c0a28f17c",
      "parents": [
        "8e5b9dda99cc86bdbd822935fcc37c5808e271b3"
      ],
      "author": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Sun Jun 28 18:06:41 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jun 29 19:41:43 2009 -0700"
      },
      "message": "tcp: Do not tack on TSO data to non-TSO packet\n\nIf a socket starts out on a non-TSO route, and then switches to\na TSO route, then we will tack on data to the tail of the tx queue\neven if it started out life as non-TSO.  This is suboptimal because\nall of it will then be copied and checksummed unnecessarily.\n\nThis patch fixes this by ensuring that skb-\u003eip_summed is set to\nCHECKSUM_PARTIAL before appending extra data beyond the MSS.\n\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "915219441d566f1da0caa0e262be49b666159e17",
      "tree": "91d40271d6601bc7ae10c4ab0cff2a47bb38d4e3",
      "parents": [
        "de1033428baf1940bbbbf9e66b073ee0a577f5e0"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu May 28 21:35:47 2009 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu May 28 21:35:47 2009 -0700"
      },
      "message": "tcp: Use SKB queue and list helpers instead of doing it by-hand.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "a2a804cddfe65f18f903985e8a8d04c7c9eec354",
      "tree": "93c81d1a672b52ff8ec38fefa227ab894b37ec62",
      "parents": [
        "9aaa156cf9b7e9d9ed899f254283b91c4e3c36c8"
      ],
      "author": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Tue May 26 18:50:34 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed May 27 03:26:05 2009 -0700"
      },
      "message": "tcp: Do not check flush when comparing options for GRO\n\nThere is no need to repeatedly check flush when comparing TCP\noptions for GRO as it will be false 99% of the time where it\nmatters.\n\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "a5b1cf288d4200506ab62fbb86cc81ace948a306",
      "tree": "c95339866f4d67220d111811a92e5c6b79de6ab4",
      "parents": [
        "7489594cb249aeb178287c9a43a9e4f366044259"
      ],
      "author": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Tue May 26 18:50:28 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed May 27 03:26:01 2009 -0700"
      },
      "message": "gro: Avoid unnecessary comparison after skb_gro_header\n\nFor the overwhelming majority of cases, skb_gro_header\u0027s return\nvalue cannot be NULL.  Yet we must check it because of its current\nform.  This patch splits it up into multiple functions in order\nto avoid this.\n\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "30a3ae30c775e2723f86ef70746ad3cb4404a4c9",
      "tree": "9a3365e4a2b611930f31674a0162126625adac10",
      "parents": [
        "4a9a2968a17eae42ef5dffca8b37534c864e30cc"
      ],
      "author": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Tue May 26 18:50:26 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed May 27 03:26:00 2009 -0700"
      },
      "message": "tcp: Optimise len/mss comparison\n\nInstead of checking len \u003e mss || len \u003d\u003d 0, we can accomplish\nboth by checking (len - 1) \u003e mss using the unsigned wraparound.\nAt nearly a million times a second, this might just help.\n\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "4a9a2968a17eae42ef5dffca8b37534c864e30cc",
      "tree": "8fa6f421a04491546a25f18a30e2133d50d83c64",
      "parents": [
        "745898eaf0eb7a04a56dec1188d9148259510863"
      ],
      "author": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Tue May 26 18:50:25 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed May 27 03:25:59 2009 -0700"
      },
      "message": "tcp: Remove unnecessary window comparisons for GRO\n\nThe window has already been checked as part of the flag word\nso there is no need to check it explicitly.\n\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "745898eaf0eb7a04a56dec1188d9148259510863",
      "tree": "c4ad29d7bc6e8ceb5a96f68cee363f871b2bf17f",
      "parents": [
        "78d3fd0b7de844a6dad56e9620fc9d2271b32ab9"
      ],
      "author": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Tue May 26 18:50:24 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed May 27 03:25:57 2009 -0700"
      },
      "message": "tcp: Optimise GRO port comparisons\n\nInstead of doing two 16-bit operations for the source/destination\nports, we can do one 32-bit operation to take care both.\n\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "775273131810caa41dfc7f9e552ea5d8508caf40",
      "tree": "38ee8e4815d614c483be352524134c6f7fc163c3",
      "parents": [
        "705efc3b03cbee449e4d83b230423894152f7982"
      ],
      "author": {
        "name": "Ilpo Järvinen",
        "email": "ilpo.jarvinen@helsinki.fi",
        "time": "Sun May 10 20:32:34 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon May 18 15:05:40 2009 -0700"
      },
      "message": "tcp: fix MSG_PEEK race check\n\nCommit 518a09ef11 (tcp: Fix recvmsg MSG_PEEK influence of\nblocking behavior) lets the loop run longer than the race check\ndid previously expect, so we need to be more careful with this\ncheck and consider the work we have been doing.\n\nI tried my best to deal with urg hole madness too which happens\nhere:\n\tif (!sock_flag(sk, SOCK_URGINLINE)) {\n\t\t++*seq;\n\t\t...\nby using additional offset by one but I certainly have very\nlittle interest in testing that part.\n\nSigned-off-by: Ilpo Järvinen \u003cilpo.jarvinen@helsinki.fi\u003e\nTested-by: Frans Pop \u003celendil@planet.nl\u003e\nTested-by: Ian Zimmermann \u003citz@buug.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "a0a69a0106dab8d20596f97f6674bed3b394d1ee",
      "tree": "2477a32cab5f8afdb1c158f0b151048ee7afc594",
      "parents": [
        "9dd014eb9804f19d6230c3cbc10fa25f5416bda7"
      ],
      "author": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Fri Apr 17 02:34:38 2009 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Apr 17 02:34:38 2009 -0700"
      },
      "message": "gro: Fix use after free in tcp_gro_receive\n\nAfter calling skb_gro_receive skb-\u003elen can no longer be relied\non since if the skb was merged using frags, then its pages will\nhave been removed and the length reduced.\n\nThis caused tcp_gro_receive to prematurely end merging which\nresulted in suboptimal performance with ixgbe.\n\nThe fix is to store skb-\u003elen on the stack.\n\nReported-by: Mark Wagner \u003cmwagner@redhat.com\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "377f0a08e4cb56658d878d22c3aed4716e283c6b",
      "tree": "9b18ef210d92a04dc95bd694f680e52bbdf51223",
      "parents": [
        "eeb5f5c9b3c8bee5ab4794323c1d23d100a9db59"
      ],
      "author": {
        "name": "Rami Rosen",
        "email": "ramirose@gmail.com",
        "time": "Tue Mar 31 14:43:17 2009 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Mar 31 14:43:17 2009 -0700"
      },
      "message": "ipv4: remove unused parameter from tcp_recv_urg().\n\nSigned-off-by: Rami Rosen \u003cramirose@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "beedad923ad6237f03265fdf86eb8a1b50d14ae9",
      "tree": "14de83c72e68bcae559616f45da16dd990065cd0",
      "parents": [
        "9bdd8d40c8c59435664af6049dabe24b7779b203"
      ],
      "author": {
        "name": "Rami Rosen",
        "email": "ramirose@gmail.com",
        "time": "Wed Mar 18 18:50:09 2009 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Mar 18 18:50:09 2009 -0700"
      },
      "message": "tcp: remove parameter from tcp_recv_urg().\n\nThis patch removes an unused parameter (addr_len) from tcp_recv_urg()\nmethod in net/ipv4/tcp.c.\n\nSigned-off-by: Rami Rosen \u003cramirose@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    }
  ],
  "next": "afece1c6587010cc81d1a43045c855774e8234a3"
}
