)]}'
{
  "log": [
    {
      "commit": "4d258b25d947521c8b913154db61ec55198243f8",
      "tree": "4f74f744797e92a0555705dc121ac8aaa041e750",
      "parents": [
        "a64227b0855c42b5c037011afa80580ca3228527"
      ],
      "author": {
        "name": "Vitaliy Ivanov",
        "email": "vitalivanov@gmail.com",
        "time": "Mon Jun 27 19:07:08 2011 +0300"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jun 27 16:06:19 2011 -0700"
      },
      "message": "Fix some kernel-doc warnings\n\nFix \u0027make htmldocs\u0027 warnings:\n\n  Warning(/include/linux/hrtimer.h:153): No description found for parameter \u0027clockid\u0027\n  Warning(/include/linux/device.h:604): Excess struct/union/enum/typedef member \u0027of_match\u0027 description in \u0027device\u0027\n  Warning(/include/net/sock.h:349): Excess struct/union/enum/typedef member \u0027sk_rmem_alloc\u0027 description in \u0027sock\u0027\n\nSigned-off-by: Vitaliy Ivanov \u003cvitalivanov@gmail.com\u003e\nAcked-by: Grant Likely \u003cgrant.likely@secretlab.ca\u003e\nAcked-by: David S. Miller \u003cdavem@davemloft.net\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1c01a80cfec6f806246f31ff2680cd3639b30e67",
      "tree": "0b554aad2ec1da71ecf6339d4ba51617bfe1dc3c",
      "parents": [
        "c44d79950b2daa1025e62eede73e4e4a274d1ef3",
        "4a9f65f6304a00f6473e83b19c1e83caa1e42530"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Apr 11 13:44:25 2011 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Apr 11 13:44:25 2011 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6\n\nConflicts:\n\tdrivers/net/smsc911x.c\n"
    },
    {
      "commit": "912d398d28b4359c2fb1f3763f1ce4f86de8350e",
      "tree": "5e5e0c4120ccff8b3885dc2660e37634115c8bac",
      "parents": [
        "7b1b3afadf33627e707c5038af991ae2ce9b5ac5"
      ],
      "author": {
        "name": "Wei Yongjun",
        "email": "yjwei@cn.fujitsu.com",
        "time": "Wed Apr 06 18:40:12 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Apr 06 23:05:01 2011 -0700"
      },
      "message": "net: fix skb_add_data_nocache() to calc csum correctly\n\ncommit c6e1a0d12ca7b4f22c58e55a16beacfb7d3d8462 broken the calc\n (net: Allow no-cache copy from user on transmit)\nof checksum, which may cause some tcp packets be dropped because\nincorrect checksum. ssh does not work under today\u0027s net-next-2.6\ntree.\n\nSigned-off-by: Wei Yongjun \u003cyjwei@cn.fujitsu.com\u003e\nAcked-by: Tom Herbert \u003ctherbert@google.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": "25985edcedea6396277003854657b5f3cb31a628",
      "tree": "f026e810210a2ee7290caeb737c23cb6472b7c38",
      "parents": [
        "6aba74f2791287ec407e0f92487a725a25908067"
      ],
      "author": {
        "name": "Lucas De Marchi",
        "email": "lucas.demarchi@profusion.mobi",
        "time": "Wed Mar 30 22:57:33 2011 -0300"
      },
      "committer": {
        "name": "Lucas De Marchi",
        "email": "lucas.demarchi@profusion.mobi",
        "time": "Thu Mar 31 11:26:23 2011 -0300"
      },
      "message": "Fix common misspellings\n\nFixes generated by \u0027codespell\u0027 and manually reviewed.\n\nSigned-off-by: Lucas De Marchi \u003clucas.demarchi@profusion.mobi\u003e\n"
    },
    {
      "commit": "eaefd1105bc431ef329599e307a07f2a36ae7872",
      "tree": "658eeed417654c8f6015d4d5f957f5a1b5e9521f",
      "parents": [
        "04cfa852ff8dab923640500ee850d19e75bacabc"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Fri Feb 18 03:26:36 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Feb 22 10:19:31 2011 -0800"
      },
      "message": "net: add __rcu annotations to sk_wq and wq\n\nAdd proper RCU annotations/verbs to sk_wq and wq members\n\nFix __sctp_write_space() sk_sleep() abuse (and sock-\u003ewq access)\n\nFix sunrpc sk_sleep() abuse too\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "5403c8a29521a6eb02f9283dbbe0184527f8f42b",
      "tree": "4f1ca17feda4dfa88f53eceeaa39583ec840d27e",
      "parents": [
        "c79b9e4936142d5ed26073d58bdd4a5a0ac62f32",
        "c4c93106741bbf61ecd05a2a835af8e3bf31c1bd"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 31 13:13:24 2011 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 31 13:13:24 2011 -0800"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6\n"
    },
    {
      "commit": "709b46e8d90badda1898caea50483c12af178e96",
      "tree": "799b57704dda3684777fb57a6e413dabac78858c",
      "parents": [
        "13ad17745c2cbd437d9e24b2d97393e0be11c439"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Sat Jan 29 16:15:56 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Jan 30 01:14:38 2011 -0800"
      },
      "message": "net: Add compat ioctl support for the ipv4 multicast ioctl SIOCGETSGCNT\n\nSIOCGETSGCNT is not a unique ioctl value as it it maps tio SIOCPROTOPRIVATE +1,\nwhich unfortunately means the existing infrastructure for compat networking\nioctls is insufficient.  A trivial compact ioctl implementation would conflict\nwith:\n\nSIOCAX25ADDUID\nSIOCAIPXPRISLT\nSIOCGETSGCNT_IN6\nSIOCGETSGCNT\nSIOCRSSCAUSE\nSIOCX25SSUBSCRIP\nSIOCX25SDTEFACILITIES\n\nTo make this work I have updated the compat_ioctl decode path to mirror the\nthe normal ioctl decode path.  I have added an ipv4 inet_compat_ioctl function\nso that I can have ipv4 specific compat ioctls.   I have added a compat_ioctl\nfunction into struct proto so I can break out ioctls by which kind of ip socket\nI am using.  I have added a compat_raw_ioctl function because SIOCGETSGCNT only\nworks on raw sockets.  I have added a ipmr_compat_ioctl that mirrors the normal\nipmr_ioctl.\n\nThis was necessary because unfortunately the struct layout for the SIOCGETSGCNT\nhas unsigned longs in it so changes between 32bit and 64bit kernels.\n\nThis change was sufficient to run a 32bit ip multicast routing daemon on a\n64bit kernel.\n\nReported-by: Bill Fenner \u003cfenner@aristanetworks.com\u003e\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "80f8f1027b99660897bdeaeae73002185d829906",
      "tree": "b8aafe71974b2b7295f20eeb1fad6191fadd8551",
      "parents": [
        "d6ae3bae3d1bf7a8bf367e29f2cac0788dcd0db5"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Tue Jan 18 07:46:52 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jan 18 21:33:05 2011 -0800"
      },
      "message": "net: filter: dont block softirqs in sk_run_filter()\n\nPacket filter (BPF) doesnt need to disable softirqs, being fully\nre-entrant and lock-less.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "928c41e7a15d1164bb725f3445575f4651b5b9f0",
      "tree": "9e46a8e57d9ee136bd3ba7c21102533c9bf3e287",
      "parents": [
        "0ab03c2b1478f2438d2c80204f7fef65b1bca9cf"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Sat Jan 08 17:39:21 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Jan 09 16:26:51 2011 -0800"
      },
      "message": "net/sock.h: make some fields private to fix kernel-doc warning(s)\n\nFix new kernel-doc notation warning in sock.h by annotating skc_dontcopy_*\nas private fields.\n\nWarning(include/net/sock.h:163): No description found for parameter \u0027skc_dontcopy_end[0]\u0027\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "b4aa9e05a61b845541fa6f5b1d246976922601f0",
      "tree": "ca94478c3df281ab76a3399f5ba6341ade3f5791",
      "parents": [
        "1dc0f3c54ce1df957f99c17b145488fd03eb1a59",
        "4b8fe66300acb2fba8b16d62606e0d30204022fc"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Dec 17 12:27:22 2010 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Dec 17 12:27:22 2010 -0800"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6\n\nConflicts:\n\tdrivers/net/bnx2x/bnx2x.h\n\tdrivers/net/wireless/iwlwifi/iwl-1000.c\n\tdrivers/net/wireless/iwlwifi/iwl-6000.c\n\tdrivers/net/wireless/iwlwifi/iwl-core.h\n\tdrivers/vhost/vhost.c\n"
    },
    {
      "commit": "fcbdf09d9652c8919dcf47072e3ae7dcb4eb98ac",
      "tree": "51e3cc1fbd813a880ea09dc31a12683b73d87e05",
      "parents": [
        "2984961c388381c1830f95e1c2dc2137301b1009"
      ],
      "author": {
        "name": "Octavian Purdila",
        "email": "opurdila@ixiacom.com",
        "time": "Thu Dec 16 14:26:56 2010 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Dec 16 14:26:56 2010 -0800"
      },
      "message": "net: fix nulls list corruptions in sk_prot_alloc\n\nSpecial care is taken inside sk_port_alloc to avoid overwriting\nskc_node/skc_nulls_node. We should also avoid overwriting\nskc_bind_node/skc_portaddr_node.\n\nThe patch fixes the following crash:\n\n BUG: unable to handle kernel paging request at fffffffffffffff0\n IP: [\u003cffffffff812ec6dd\u003e] udp4_lib_lookup2+0xad/0x370\n [\u003cffffffff812ecc22\u003e] __udp4_lib_lookup+0x282/0x360\n [\u003cffffffff812ed63e\u003e] __udp4_lib_rcv+0x31e/0x700\n [\u003cffffffff812bba45\u003e] ? ip_local_deliver_finish+0x65/0x190\n [\u003cffffffff812bbbf8\u003e] ? ip_local_deliver+0x88/0xa0\n [\u003cffffffff812eda35\u003e] udp_rcv+0x15/0x20\n [\u003cffffffff812bba45\u003e] ip_local_deliver_finish+0x65/0x190\n [\u003cffffffff812bbbf8\u003e] ip_local_deliver+0x88/0xa0\n [\u003cffffffff812bb2cd\u003e] ip_rcv_finish+0x32d/0x6f0\n [\u003cffffffff8128c14c\u003e] ? netif_receive_skb+0x99c/0x11c0\n [\u003cffffffff812bb94b\u003e] ip_rcv+0x2bb/0x350\n [\u003cffffffff8128c14c\u003e] netif_receive_skb+0x99c/0x11c0\n\nSigned-off-by: Leonard Crestez \u003clcrestez@ixiacom.com\u003e\nSigned-off-by: Octavian Purdila \u003copurdila@ixiacom.com\u003e\nAcked-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "68835aba4d9b74e2f94106d13b6a4bddc447c4c8",
      "tree": "468a9465acfa027791facef13fb6ef5129dda257",
      "parents": [
        "defb3519a64141608725e2dac5a5aa9a3c644bae"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Tue Nov 30 19:04:07 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Dec 09 20:05:58 2010 -0800"
      },
      "message": "net: optimize INET input path further\n\nFollowup of commit b178bb3dfc30 (net: reorder struct sock fields)\n\nOptimize INET input path a bit further, by :\n\n1) moving sk_refcnt close to sk_lock.\n\nThis reduces number of dirtied cache lines by one on 64bit arches (and\n64 bytes cache line size).\n\n2) moving inet_daddr \u0026 inet_rcv_saddr at the beginning of sk\n\n(same cache line than hash / family / bound_dev_if / nulls_node)\n\nThis reduces number of accessed cache lines in lookups by one, and dont\nincrease size of inet and timewait socks.\ninet and tw sockets now share same place-holder for these fields.\n\nBefore patch :\n\noffsetof(struct sock, sk_refcnt) \u003d 0x10\noffsetof(struct sock, sk_lock) \u003d 0x40\noffsetof(struct sock, sk_receive_queue) \u003d 0x60\noffsetof(struct inet_sock, inet_daddr) \u003d 0x270\noffsetof(struct inet_sock, inet_rcv_saddr) \u003d 0x274\n\nAfter patch :\n\noffsetof(struct sock, sk_refcnt) \u003d 0x44\noffsetof(struct sock, sk_lock) \u003d 0x48\noffsetof(struct sock, sk_receive_queue) \u003d 0x68\noffsetof(struct inet_sock, inet_daddr) \u003d 0x0\noffsetof(struct inet_sock, inet_rcv_saddr) \u003d 0x4\n\ncompute_score() (udp or tcp) now use a single cache line per ignored\nitem, instead of two.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "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": "46bcf14f44d8f31ecfdc8b6708ec15a3b33316d9",
      "tree": "4d2a200387242e1ed2d95ccd367c77750379e8cc",
      "parents": [
        "e7dfc8dbdf9a7fa1ef04c63100a71f4102b82ed3"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Mon Dec 06 09:29:43 2010 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Dec 06 09:29:43 2010 -0800"
      },
      "message": "filter: fix sk_filter rcu handling\n\nPavel Emelyanov tried to fix a race between sk_filter_(de|at)tach and\nsk_clone() in commit 47e958eac280c263397\n\nProblem is we can have several clones sharing a common sk_filter, and\nthese clones might want to sk_filter_attach() their own filters at the\nsame time, and can overwrite old_filter-\u003ercu, corrupting RCU queues.\n\nWe can not use filter-\u003ercu without being sure no other thread could do\nthe same thing.\n\nSwitch code to a more conventional ref-counting technique : Do the\natomic decrement immediately and queue one rcu call back when last\nreference is released.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "dca9b2404a6d6579828da2425c051462701efd3f",
      "tree": "c8f5fdd5f52e1ede8716703323f4297234a1e687",
      "parents": [
        "b672083ed36a49c323737b7c7e1d5264a7c193af"
      ],
      "author": {
        "name": "Shan Wei",
        "email": "shanwei@cn.fujitsu.com",
        "time": "Wed Dec 01 18:05:17 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Dec 02 13:27:33 2010 -0800"
      },
      "message": "net: kill unused macros from head file\n\nThese macros have been defined for several years since v2.6.12-rc2（tracing by git）,\nbut never be used. So remove them.\n\nSigned-off-by: Shan Wei \u003cshanwei@cn.fujitsu.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "b178bb3dfc30d9555bdd2401e95af98e23e83e10",
      "tree": "ec52d739015de589ceca1d31c5802305d94c9f6d",
      "parents": [
        "c31504dc0d1dc853dcee509d9999169a9097a717"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Tue Nov 16 05:56:04 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Nov 16 11:17:43 2010 -0800"
      },
      "message": "net: reorder struct sock fields\n\nRight now, fields in struct sock are not optimally ordered, because each\npath (RX softirq, TX completion, RX user,  TX user) has to touch fields\nthat are contained in many different cache lines.\n\nThe really critical thing is to shrink number of cache lines that are\nused at RX softirq time : CPU handling softirqs for a device can receive\nmany frames per second for many sockets. If load is too big, we can drop\nframes at NIC level. RPS or multiqueue cards can help, but better reduce\nlatency if possible.\n\nThis patch starts with UDP protocol, then additional patches will try to\nreduce latencies of other ones as well.\n\nAt RX softirq time, fields of interest for UDP protocol are :\n(not counting ones in inet struct for the lookup)\n\nRead/Written:\nsk_refcnt   (atomic increment/decrement)\nsk_rmem_alloc \u0026 sk_backlog.len (to check if there is room in queues)\nsk_receive_queue\nsk_backlog (if socket locked by user program)\nsk_rxhash\nsk_forward_alloc\nsk_drops\n\nRead only:\nsk_rcvbuf (sk_rcvqueues_full())\nsk_filter\nsk_wq\nsk_policy[0]\nsk_flags\n\nAdditional notes :\n\n- sk_backlog has one hole on 64bit arches. We can fill it to save 8\nbytes.\n- sk_backlog is used only if RX sofirq handler finds the socket while\nlocked by user.\n- sk_rxhash is written only once per flow.\n- sk_drops is written only if queues are full\n\nFinal layout :\n\n[1] One section grouping all read/write fields, but placing rxhash and\nsk_backlog at the end of this section.\n\n[2] One section grouping all read fields in RX handler\n   (sk_filter, sk_rcv_buf, sk_wq)\n\n[3] Section used by other paths\n\nI\u0027ll post a patch on its own to put sk_refcnt at the end of struct\nsock_common so that it shares same cache line than section [1]\n\nNew offsets on 64bit arch :\n\nsizeof(struct sock)\u003d0x268\noffsetof(struct sock, sk_refcnt)  \u003d0x10\noffsetof(struct sock, sk_lock)    \u003d0x48\noffsetof(struct sock, sk_receive_queue)\u003d0x68\noffsetof(struct sock, sk_backlog)\u003d0x80\noffsetof(struct sock, sk_rmem_alloc)\u003d0x80\noffsetof(struct sock, sk_forward_alloc)\u003d0x98\noffsetof(struct sock, sk_rxhash)\u003d0x9c\noffsetof(struct sock, sk_rcvbuf)\u003d0xa4\noffsetof(struct sock, sk_drops) \u003d0xa0\noffsetof(struct sock, sk_filter)\u003d0xa8\noffsetof(struct sock, sk_wq)\u003d0xb0\noffsetof(struct sock, sk_policy)\u003d0xd0\noffsetof(struct sock, sk_flags) \u003d0xe0\n\nInstead of :\n\nsizeof(struct sock)\u003d0x270\noffsetof(struct sock, sk_refcnt)  \u003d0x10\noffsetof(struct sock, sk_lock)    \u003d0x50\noffsetof(struct sock, sk_receive_queue)\u003d0xc0\noffsetof(struct sock, sk_backlog)\u003d0x70\noffsetof(struct sock, sk_rmem_alloc)\u003d0xac\noffsetof(struct sock, sk_forward_alloc)\u003d0x10c\noffsetof(struct sock, sk_rxhash)\u003d0x128\noffsetof(struct sock, sk_rcvbuf)\u003d0x4c\noffsetof(struct sock, sk_drops) \u003d0x16c\noffsetof(struct sock, sk_filter)\u003d0x198\noffsetof(struct sock, sk_wq)\u003d0x88\noffsetof(struct sock, sk_policy)\u003d0x98\noffsetof(struct sock, sk_flags) \u003d0x130\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "c31504dc0d1dc853dcee509d9999169a9097a717",
      "tree": "8ee1d5616b7140759cf742ef89cf9f7ba1c01b20",
      "parents": [
        "213b15ca818adf7766cd7162c2159a6ecdd3bab8"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Mon Nov 15 19:58:26 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Nov 16 11:17:43 2010 -0800"
      },
      "message": "udp: use atomic_inc_not_zero_hint\n\nUDP sockets refcount is usually 2, unless an incoming frame is going to\nbe queued in receive or backlog queue.\n\nUsing atomic_inc_not_zero_hint() permits to reduce latency, because\nprocessor issues less memory transactions.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "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": "0d7da9ddd9a4eb7808698d04b98bf9d62d02649b",
      "tree": "b170122c08d47be35a056782be54573ba19fe0b0",
      "parents": [
        "1c87733d0682547050ccccb400cdac425fa43b39"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Mon Oct 25 03:47:05 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Oct 25 14:18:28 2010 -0700"
      },
      "message": "net: add __rcu annotation to sk_filter\n\nAdd __rcu annotation to :\n        (struct sock)-\u003esk_filter\n\nAnd use appropriate rcu primitives to reduce sparse warnings if\nCONFIG_SPARSE_RCU_POINTER\u003dy\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "7a91b434e2bad554b709265db7603b1aa52dd92e",
      "tree": "00f51e051922fbaf2ca93e40d0059e5fbb86b2f1",
      "parents": [
        "807540baae406c84dcb9c1c8ef07a56d2d2ae84a"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Sun Sep 26 18:53:07 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Sep 26 18:53:07 2010 -0700"
      },
      "message": "net: update SOCK_MIN_RCVBUF\n\nSOCK_MIN_RCVBUF current value is 256 bytes\n\nIt doesnt permit to receive the smallest possible frame, considering\nsocket sk_rmem_alloc/sk_rcvbuf account skb truesizes. On 64bit arches,\nsizeof(struct sk_buff) is 240 bytes. Add the typical 64 bytes of\nheadroom, and we go over the limit.\n\nWith old kernels and 32bit arches, we were under the limit, if netdriver\nwas doing copybreak.\n\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": "719f835853a92f6090258114a72ffe41f09155cd",
      "tree": "a077b05397bf07a096be7f07b50375c5ed918ac2",
      "parents": [
        "ae2688d59b5f861dc70a091d003773975d2ae7fb"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Wed Sep 08 05:08:44 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Sep 08 21:45:01 2010 -0700"
      },
      "message": "udp: add rehash on connect()\n\ncommit 30fff923 introduced in linux-2.6.33 (udp: bind() optimisation)\nadded a secondary hash on UDP, hashed on (local addr, local port).\n\nProblem is that following sequence :\n\nfd \u003d socket(...)\nconnect(fd, \u0026remote, ...)\n\nnot only selects remote end point (address and port), but also sets\nlocal address, while UDP stack stored in secondary hash table the socket\nwhile its local address was INADDR_ANY (or ipv6 equivalent)\n\nSequence is :\n - autobind() : choose a random local port, insert socket in hash tables\n              [while local address is INADDR_ANY]\n - connect() : set remote address and port, change local address to IP\n              given by a route lookup.\n\nWhen an incoming UDP frame comes, if more than 10 sockets are found in\nprimary hash table, we switch to secondary table, and fail to find\nsocket because its local address changed.\n\nOne solution to this problem is to rehash datagram socket if needed.\n\nWe add a new rehash(struct socket *) method in \"struct proto\", and\nimplement this method for UDP v4 \u0026 v6, using a common helper.\n\nThis rehashing only takes care of secondary hash table, since primary\nhash (based on local port only) is not changed.\n\nReported-by: Krzysztof Piotr Oledzki \u003cole@ans.pl\u003e\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nTested-by: Krzysztof Piotr Oledzki \u003cole@ans.pl\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "2244d07bfa2097cb00600da91c715a8aa547917e",
      "tree": "44d67d9ffba3697fffeb05c13e88aa76ebc3fd4a",
      "parents": [
        "4d5870ec103e6569851b9710f0093f072b08439a"
      ],
      "author": {
        "name": "Oliver Hartkopp",
        "email": "socketcan@hartkopp.net",
        "time": "Tue Aug 17 08:59:14 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Aug 19 00:08:30 2010 -0700"
      },
      "message": "net: simplify flags for tx timestamping\n\nThis patch removes the abstraction introduced by the union skb_shared_tx in\nthe shared skb data.\n\nThe access of the different union elements at several places led to some\nconfusion about accessing the shared tx_flags e.g. in skb_orphan_try().\n\n    http://marc.info/?l\u003dlinux-netdev\u0026m\u003d128084897415886\u0026w\u003d2\n\nSigned-off-by: Oliver Hartkopp \u003csocketcan@hartkopp.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "53c3fa206415d8a3f8b2a4f77689ea044c4a9c65",
      "tree": "9503d3a9aad8472117db2bc358fdc2e822295b1f",
      "parents": [
        "7ed24e8da75615418cbf3417e421053e53a5f5b3"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Mon Aug 09 13:41:07 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Aug 10 00:09:20 2010 -0700"
      },
      "message": "net/sock.h: add missing kernel-doc notation\n\nAdd missing kernel-doc notation to struct sock:\n\nWarning(include/net/sock.h:324): No description found for parameter \u0027sk_peer_pid\u0027\nWarning(include/net/sock.h:324): No description found for parameter \u0027sk_peer_cred\u0027\nWarning(include/net/sock.h:324): No description found for parameter \u0027sk_classid\u0027\nWarning(include/net/sock.h:324): Excess struct/union/enum/typedef member \u0027sk_peercred\u0027 description in \u0027sock\u0027\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "11fe883936980fe242869d671092a466cf1db3e3",
      "tree": "14ff24e81eb4326e94eb5aa6432a1dd55cef5ece",
      "parents": [
        "70d4bf6d467a330ccc947df9b2608e329d9e7708",
        "573201f36fd9c7c6d5218cdcd9948cee700b277d"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jul 20 18:25:24 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jul 20 18:25:24 2010 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6\n\nConflicts:\n\tdrivers/vhost/net.c\n\tnet/bridge/br_device.c\n\nFix merge conflict in drivers/vhost/net.c with guidance from\nStephen Rothwell.\n\nRevert the effects of net-2.6 commit 573201f36fd9c7c6d5218cdcd9948cee700b277d\nsince net-next-2.6 has fixes that make bridge netpoll work properly thus\nwe don\u0027t need it disabled.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "b0f77d0eae0c58a5a9691a067ada112ceeae2d00",
      "tree": "2bab159a95f51e32dbb4eb2d554328de3190c678",
      "parents": [
        "91a72a70594e5212c97705ca6a694bd307f7a26b"
      ],
      "author": {
        "name": "Tom Herbert",
        "email": "therbert@google.com",
        "time": "Wed Jul 14 20:50:29 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jul 14 20:50:29 2010 -0700"
      },
      "message": "net: fix problem in reading sock TX queue\n\nFix problem in reading the tx_queue recorded in a socket.  In\ndev_pick_tx, the TX queue is read by doing a check with\nsk_tx_queue_recorded on the socket, followed by a sk_tx_queue_get.\nThe problem is that there is not mutual exclusion across these\ncalls in the socket so it it is possible that the queue in the\nsock can be invalidated after sk_tx_queue_recorded is called so\nthat sk_tx_queue get returns -1, which sets 65535 in queue_index\nand thus dev_pick_tx returns 65536 which is a bogus queue and\ncan cause crash in dev_queue_xmit.\n\nWe fix this by only calling sk_tx_queue_get which does the proper\nchecks.  The interface is that sk_tx_queue_get returns the TX queue\nif the sock argument is non-NULL and TX queue is recorded, else it\nreturns -1.  sk_tx_queue_recorded is no longer used so it can be\ncompletely removed.\n\nSigned-off-by: Tom Herbert \u003ctherbert@google.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "7ba42910073f8432934d61a6c08b1023c408fb62",
      "tree": "4f74648133eaf6cbea26d59c43d34e7153648f5d",
      "parents": [
        "53d3176b282cc105493babb0fef36c8b873f6201"
      ],
      "author": {
        "name": "Changli Gao",
        "email": "xiaosuo@gmail.com",
        "time": "Sat Jul 10 20:41:55 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jul 12 20:21:46 2010 -0700"
      },
      "message": "inet, inet6: make tcp_sendmsg() and tcp_sendpage() through inet_sendmsg() and inet_sendpage()\n\na new boolean flag no_autobind is added to structure proto to avoid the autobind\ncalls when the protocol is TCP. Then sock_rps_record_flow() is called int the\nTCP\u0027s sendmsg() and sendpage() pathes.\n\nSigned-off-by: Changli Gao \u003cxiaosuo@gmail.com\u003e\n----\n include/net/inet_common.h |    4 ++++\n include/net/sock.h        |    1 +\n include/net/tcp.h         |    8 ++++----\n net/ipv4/af_inet.c        |   15 +++++++++------\n net/ipv4/tcp.c            |   11 +++++------\n net/ipv4/tcp_ipv4.c       |    3 +++\n net/ipv6/af_inet6.c       |    8 ++++----\n net/ipv6/tcp_ipv6.c       |    3 +++\n 8 files changed, 33 insertions(+), 20 deletions(-)\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "109f6e39fa07c48f580125f531f46cb7c245b528",
      "tree": "9ec97679c227394a44ebede5768f92d970cea6eb",
      "parents": [
        "3f551f9436c05a3b5eccdd6e94733df5bb98d2a5"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Sun Jun 13 03:30:14 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jun 16 14:55:55 2010 -0700"
      },
      "message": "af_unix: Allow SO_PEERCRED to work across namespaces.\n\nUse struct pid and struct cred to store the peer credentials on struct\nsock.  This gives enough information to convert the peer credential\ninformation to a value relative to whatever namespace the socket is in\nat the time.\n\nThis removes nasty surprises when using SO_PEERCRED on socket\nconnetions where the processes on either side are in different pid and\nuser namespaces.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nAcked-by: Daniel Lezcano \u003cdaniel.lezcano@free.fr\u003e\nAcked-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "eedc765ca4b19a41cf0b921a492ac08d640060d1",
      "tree": "95c566c6238cc953e1e336115d2daafe8bcb388f",
      "parents": [
        "e59d44df46edaafb6b637e98d046775524b31104",
        "024a07bacf8287a6ddfa83e9d5b951c5e8b4070e"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Jun 06 17:42:02 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Jun 06 17:42:02 2010 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6\n\nConflicts:\n\tdrivers/net/sfc/net_driver.h\n\tdrivers/net/sfc/siena.c\n"
    },
    {
      "commit": "c2d9ba9bce8d7323ca96f239e1f505c14d6244fb",
      "tree": "7a184eefa2e48e6aa15cdf3aefb6ccf2fb834320",
      "parents": [
        "c6b20d941b08941bece53bc3d857beb1fb25fffc"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Tue Jun 01 06:51:19 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jun 02 05:16:23 2010 -0700"
      },
      "message": "net: CONFIG_NET_NS reduction\n\nUse read_pnet() and write_pnet() to reduce number of ifdef CONFIG_NET_NS\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "b1faf5666438090a4dc4fceac8502edc7788b7e3",
      "tree": "f90808dea27cc38aff6feed1782e2a5666fa6ee9",
      "parents": [
        "bc284f94f84c3d76e49c6f3df9028c503f9589d9"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Mon May 31 23:44:05 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon May 31 23:44:05 2010 -0700"
      },
      "message": "net: sock_queue_err_skb() dont mess with sk_forward_alloc\n\nCorrect sk_forward_alloc handling for error_queue would need to use a\nbacklog of frames that softirq handler could not deliver because socket\nis owned by user thread. Or extend backlog processing to be able to\nprocess normal and error packets.\n\nAnother possibility is to not use mem charge for error queue, this is\nwhat I implemented in this patch.\n\nNote: this reverts commit 29030374\n(net: fix sk_forward_alloc corruptions), since we dont need to lock\nsocket anymore.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "8a74ad60a546b13bd1096b2a61a7a5c6fd9ae17c",
      "tree": "3110e7e59883597b5d0f617e8507e15b8f965f3f",
      "parents": [
        "a56635a56f2afb3d22d9ce07e8f8d69537416b2d"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Wed May 26 19:20:18 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu May 27 00:30:53 2010 -0700"
      },
      "message": "net: fix lock_sock_bh/unlock_sock_bh\n\nThis new sock lock primitive was introduced to speedup some user context\nsocket manipulation. But it is unsafe to protect two threads, one using\nregular lock_sock/release_sock, one using lock_sock_bh/unlock_sock_bh\n\nThis patch changes lock_sock_bh to be careful against \u0027owned\u0027 state.\nIf owned is found to be set, we must take the slow path.\nlock_sock_bh() now returns a boolean to say if the slow path was taken,\nand this boolean is used at unlock_sock_bh time to call the appropriate\nunlock function.\n\nAfter this change, BH are either disabled or enabled during the\nlock_sock_bh/unlock_sock_bh protected section. This might be misleading,\nso we rename these functions to lock_sock_fast()/unlock_sock_fast().\n\nReported-by: Anton Blanchard \u003canton@samba.org\u003e\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nTested-by: Anton Blanchard \u003canton@samba.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "acfbe96a3035639619a6533e04d88ed4ef9ccb61",
      "tree": "9d0b93aef75b2a11acff9b4d240d5f3e9896f3e0",
      "parents": [
        "937eada45fa7bd233dfa59bbd8c0b436b02b6491"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Mon May 24 23:54:18 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon May 24 23:54:18 2010 -0700"
      },
      "message": "sock.h: fix kernel-doc warning\n\nFix sock.h kernel-doc warning:\nWarning(include/net/sock.h:1438): No description found for parameter \u0027wq\u0027\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "f845172531fb7410c7fb7780b1a6e51ee6df7d52",
      "tree": "ef1030d0ad9d9dbc8fe800a145c587f04be50ade",
      "parents": [
        "eda6e6f86b5f95b982ac7ebf7cf5be2a29a291e9"
      ],
      "author": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Mon May 24 00:12:34 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon May 24 00:12:34 2010 -0700"
      },
      "message": "cls_cgroup: Store classid in struct sock\n\nUp until now cls_cgroup has relied on fetching the classid out of\nthe current executing thread.  This runs into trouble when a packet\nprocessing is delayed in which case it may execute out of another\nthread\u0027s context.\n\nFurthermore, even when a packet is not delayed we may fail to\nclassify it if soft IRQs have been disabled, because this scenario\nis indistinguishable from one where a packet unrelated to the\ncurrent thread is processed by a real soft IRQ.\n\nIn fact, the current semantics is inherently broken, as a single\nskb may be constructed out of the writes of two different tasks.\nA different manifestation of this problem is when the TCP stack\ntransmits in response of an incoming ACK.  This is currently\nunclassified.\n\nAs we already have a concept of packet ownership for accounting\npurposes in the skb-\u003esk pointer, this is a natural place to store\nthe classid in a persistent manner.\n\nThis patch adds the cls_cgroup classid in struct sock, filling up\nan existing hole on 64-bit :)\n\nThe value is set at socket creation time.  So all sockets created\nvia socket(2) automatically gains the ID of the thread creating it.\nWhenever another process touches the socket by either reading or\nwriting to it, we will change the socket classid to that of the\nprocess if it has a valid (non-zero) classid.\n\nFor sockets created on inbound connections through accept(2), we\ninherit the classid of the original listening socket through\nsk_clone, possibly preceding the actual accept(2) call.\n\nIn order to minimise risks, I have not made this the authoritative\nclassid.  For now it is only used as a backup when we execute\nwith soft IRQs disabled.  Once we\u0027re completely happy with its\nsemantics we can use it as the sole classid.\n\nFootnote: I have rearranged the error path on cls_group module\ncreation.  If we didn\u0027t do this, then there is a window where\nsomeone could create a tc rule using cls_group before the cgroup\nsubsystem has been registered.\n\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "7fee226ad2397b635e2fd565a59ca3ae08a164cd",
      "tree": "0bcd26150ad74ec1a237109de87a3d214a07fc22",
      "parents": [
        "ebda37c27d0c768947e9b058332d7ea798210cf8"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Tue May 11 23:19:48 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon May 17 17:18:50 2010 -0700"
      },
      "message": "net: add a noref bit on skb dst\n\nUse low order bit of skb-\u003e_skb_dst to tell dst is not refcounted.\n\nChange _skb_dst to _skb_refdst to make sure all uses are catched.\n\nskb_dst() returns the dst, regardless of noref bit set or not, but\nwith a lockdep check to make sure a noref dst is not given if current\nuser is not rcu protected.\n\nNew skb_dst_set_noref() helper to set an notrefcounted dst on a skb.\n(with lockdep check)\n\nskb_dst_drop() drops a reference only if skb dst was refcounted.\n\nskb_dst_force() helper is used to force a refcount on dst, when skb\nis queued and not anymore RCU protected.\n\nUse skb_dst_force() in __sk_add_backlog(), __dev_xmit_skb() if\n!IFF_XMIT_DST_RELEASE or skb enqueued on qdisc queue, in\nsock_queue_rcv_skb(), in __nf_queue().\n\nUse skb_dst_force() in dev_requeue_skb().\n\nNote: dst_use_noref() still dirties dst, we might transform it\nlater to do one dirtying per jiffies.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "a465419b1febb603821f924805529cff89cafeed",
      "tree": "5131fa2dbf624ebeb6cf61bf4dc1bc9464fe0bbd",
      "parents": [
        "3b098e2d7c693796cc4dffb07caa249fc0f70771"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Sun May 16 00:36:33 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun May 16 00:36:33 2010 -0700"
      },
      "message": "net: Introduce sk_route_nocaps\n\nTCP-MD5 sessions have intermittent failures, when route cache is\ninvalidated. ip_queue_xmit() has to find a new route, calls\nsk_setup_caps(sk, \u0026rt-\u003eu.dst), destroying the \n\nsk-\u003esk_route_caps \u0026\u003d ~NETIF_F_GSO_MASK\n\nthat MD5 desperately try to make all over its way (from\ntcp_transmit_skb() for example)\n\nSo we send few bad packets, and everything is fine when\ntcp_transmit_skb() is called again for this socket.\n\nSince ip_queue_xmit() is at a lower level than TCP-MD5, I chose to use a\nsocket field, sk_route_nocaps, containing bits to mask on sk_route_caps.\n\nReported-by: Bhaskar Dutta \u003cbhaskie@gmail.com\u003e\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "7ef527377b88ff05fb122a47619ea506c631c914",
      "tree": "2c2e774527d5f591b975834f43e8c6fd12fb38f2",
      "parents": [
        "47d29646a2c1c147d8a7598aeac2c87dd71ed638",
        "1183f3838c588545592c042c0ce15015661ce7f2"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun May 02 21:43:40 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun May 02 22:02:06 2010 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6\n"
    },
    {
      "commit": "1183f3838c588545592c042c0ce15015661ce7f2",
      "tree": "24de17b69f9b2d83720a550af130d1dbddf067e8",
      "parents": [
        "6f1464bf65fcaa57a4b32dae93de4e8bbdfaf7c5"
      ],
      "author": {
        "name": "Jan Engelhardt",
        "email": "jengelh@medozas.de",
        "time": "Sun May 02 13:42:39 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun May 02 13:42:39 2010 -0700"
      },
      "message": "net: fix compile error due to double return type in SOCK_DEBUG\n\nFix this one:\ninclude/net/sock.h: error: two or more data types in declaration specifiers\n\nSigned-off-by: Jan Engelhardt \u003cjengelh@medozas.de\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "43815482370c510c569fd18edb57afcb0fa8cab6",
      "tree": "063efaae3758402b84f056438b704d1de68f7837",
      "parents": [
        "83d7eb2979cd3390c375470225dd2d8f2009bc70"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Thu Apr 29 11:01:49 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat May 01 15:00:15 2010 -0700"
      },
      "message": "net: sock_def_readable() and friends RCU conversion\n\nsk_callback_lock rwlock actually protects sk-\u003esk_sleep pointer, so we\nneed two atomic operations (and associated dirtying) per incoming\npacket.\n\nRCU conversion is pretty much needed :\n\n1) Add a new structure, called \"struct socket_wq\" to hold all fields\nthat will need rcu_read_lock() protection (currently: a\nwait_queue_head_t and a struct fasync_struct pointer).\n\n[Future patch will add a list anchor for wakeup coalescing]\n\n2) Attach one of such structure to each \"struct socket\" created in\nsock_alloc_inode().\n\n3) Respect RCU grace period when freeing a \"struct socket_wq\"\n\n4) Change sk_sleep pointer in \"struct sock\" by sk_wq, pointer to \"struct\nsocket_wq\"\n\n5) Change sk_sleep() function to use new sk-\u003esk_wq instead of\nsk-\u003esk_sleep\n\n6) Change sk_has_sleeper() to wq_has_sleeper() that must be used inside\na rcu_read_lock() section.\n\n7) Change all sk_has_sleeper() callers to :\n  - Use rcu_read_lock() instead of read_lock(\u0026sk-\u003esk_callback_lock)\n  - Use wq_has_sleeper() to eventually wakeup tasks.\n  - Use rcu_read_unlock() instead of read_unlock(\u0026sk-\u003esk_callback_lock)\n\n8) sock_wake_async() is modified to use rcu protection as well.\n\n9) Exceptions :\n  macvtap, drivers/net/tun.c, af_unix use integrated \"struct socket_wq\"\ninstead of dynamically allocated ones. They dont need rcu freeing.\n\nSome cleanups or followups are probably needed, (possible\nsk_callback_lock conversion to a spinlock for example...).\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "767dd03369ac18af58efdef0383d6eb986eab426",
      "tree": "5af8a861110676a084078a168c27fd3935d41f13",
      "parents": [
        "21851264120b0bd1f953328cb131abcfa9305bc3"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Wed Apr 28 19:14:43 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Apr 30 16:29:42 2010 -0700"
      },
      "message": "net: speedup sock_recv_ts_and_drops()\n\nsock_recv_ts_and_drops() is fat and slow (~ 4% of cpu time on some\nprofiles)\n\nWe can test all socket flags at once to make fast path fast again.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "4b0b72f7dd617b13abd1b04c947e15873e011a24",
      "tree": "16fc7bc990fa47cccb62bdb34cb23bd3c26b7a50",
      "parents": [
        "cfc1fbb079b265bf69d4ceba590a2e2c1a1cde33"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Wed Apr 28 14:35:48 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Apr 28 14:35:48 2010 -0700"
      },
      "message": "net: speedup udp receive path\n\nSince commit 95766fff ([UDP]: Add memory accounting.), \neach received packet needs one extra sock_lock()/sock_release() pair.\n\nThis added latency because of possible backlog handling. Then later,\nticket spinlocks added yet another latency source in case of DDOS.\n\nThis patch introduces lock_sock_bh() and unlock_sock_bh()\nsynchronization primitives, avoiding one atomic operation and backlog\nprocessing.\n\nskb_free_datagram_locked() uses them instead of full blown\nlock_sock()/release_sock(). skb is orphaned inside locked section for\nproper socket memory reclaim, and finally freed outside of it.\n\nUDP receive path now take the socket spinlock only once.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "c377411f2494a931ff7facdbb3a6839b1266bcf6",
      "tree": "6846cdcec913f50839e3916856f78f7e059ff5fb",
      "parents": [
        "6e7676c1a76aed6e957611d8d7a9e5592e23aeba"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Tue Apr 27 15:13:20 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Apr 27 15:13:20 2010 -0700"
      },
      "message": "net: sk_add_backlog() take rmem_alloc into account\n\nCurrent socket backlog limit is not enough to really stop DDOS attacks,\nbecause user thread spend many time to process a full backlog each\nround, and user might crazy spin on socket lock.\n\nWe should add backlog size and receive_queue size (aka rmem_alloc) to\npace writers, and let user run without being slow down too much.\n\nIntroduce a sk_rcvqueues_full() helper, to avoid taking socket lock in\nstress situations.\n\nUnder huge stress from a multiqueue/RPS enabled NIC, a single flow udp\nreceiver can now process ~200.000 pps (instead of ~100 pps before the\npatch) on a 8 core machine.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "c58dc01babfd58ec9e71a6ce080150dc27755d88",
      "tree": "065c58b5236ea23ff0868a6bbf3c5233b990f0be",
      "parents": [
        "c4ee6a5348102b9cea49fb9adf88307445407911"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Apr 27 15:05:31 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Apr 27 15:11:48 2010 -0700"
      },
      "message": "net: Make RFS socket operations not be inet specific.\n\nIdea from Eric Dumazet.\n\nAs for placement inside of struct sock, I tried to choose a place\nthat otherwise has a 32-bit hole on 64-bit systems.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\nAcked-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\n"
    },
    {
      "commit": "0b53ff2eadb1db6818894435f85989fb05d7e718",
      "tree": "6c7ecececdb6a094c68b4af122aed788648a2b13",
      "parents": [
        "18f9f1365dad1237072d360bc487d8c7a1cae532"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Mon Apr 26 20:40:43 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Apr 27 12:53:26 2010 -0700"
      },
      "message": "net: fix a lockdep rcu warning in __sk_dst_set()\n\n__sk_dst_set() might be called while no state can be integrated in a\nrcu_dereference_check() condition.\n\nSo use rcu_dereference_raw() to shutup lockdep warnings (if\nCONFIG_PROVE_RCU is set)\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nAcked-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "f68c224fedff2157f3fad7f7da674cbc96567c84",
      "tree": "848340e2220cffa5de706d5a142b5beeaa02c643",
      "parents": [
        "40eaf96271526a9f71030dd1a199ce46c045752e"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Thu Apr 22 16:06:59 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Apr 22 16:06:59 2010 -0700"
      },
      "message": "dst: rcu check refinement\n\n__sk_dst_get() might be called from softirq, with socket lock held.\n\n[  159.026180] include/net/sock.h:1200 invoked rcu_dereference_check()\nwithout protection!\n[  159.026261] \n[  159.026261] other info that might help us debug this:\n[  159.026263] \n[  159.026425] \n[  159.026426] rcu_scheduler_active \u003d 1, debug_locks \u003d 0\n[  159.026552] 2 locks held by swapper/0:\n[  159.026609]  #0:  (\u0026icsk-\u003eicsk_retransmit_timer){+.-...}, at:\n[\u003cffffffff8104fc15\u003e] run_timer_softirq+0x105/0x350\n[  159.026839]  #1:  (slock-AF_INET){+.-...}, at: [\u003cffffffff81392b8f\u003e]\ntcp_write_timer+0x2f/0x1e0\n[  159.027063] \n[  159.027064] stack backtrace:\n[  159.027172] Pid: 0, comm: swapper Not tainted\n2.6.34-rc5-03707-gde498c8-dirty #36\n[  159.027252] Call Trace:\n[  159.027306]  \u003cIRQ\u003e  [\u003cffffffff810718ef\u003e] lockdep_rcu_dereference\n+0xaf/0xc0\n[  159.027411]  [\u003cffffffff8138e4f7\u003e] tcp_current_mss+0xa7/0xb0\n[  159.027537]  [\u003cffffffff8138fa49\u003e] tcp_write_wakeup+0x89/0x190\n[  159.027600]  [\u003cffffffff81391936\u003e] tcp_send_probe0+0x16/0x100\n[  159.027726]  [\u003cffffffff81392cd9\u003e] tcp_write_timer+0x179/0x1e0\n[  159.027790]  [\u003cffffffff8104fca1\u003e] run_timer_softirq+0x191/0x350\n[  159.027980]  [\u003cffffffff810477ed\u003e] __do_softirq+0xcd/0x200\n\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "aa395145165cb06a0d0885221bbe0ce4a564391d",
      "tree": "118b0403621f10db8dc3dbf12079f9af5b19e05d",
      "parents": [
        "ab9304717f7624c41927f442e6b6d418b2d8b3e4"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Tue Apr 20 13:03:51 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Apr 20 16:37:13 2010 -0700"
      },
      "message": "net: sk_sleep() helper\n\nDefine a new function to return the waitqueue of a \"struct sock\".\n\nstatic inline wait_queue_head_t *sk_sleep(struct sock *sk)\n{\n\treturn sk-\u003esk_sleep;\n}\n\nChange all read occurrences of sk_sleep by a call to this function.\n\nNeeded for a future RCU conversion. sk_sleep wont be a field directly\navailable.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "b6c6712a42ca3f9fa7f4a3d7c40e3a9dd1fd9e03",
      "tree": "42032b4978874e8ffcf6c851d13324b8c8c7c113",
      "parents": [
        "7a161ea92471087a1579239d7a58dd06eaa5601c"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Thu Apr 08 23:03:29 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Apr 13 01:41:33 2010 -0700"
      },
      "message": "net: sk_dst_cache RCUification\n\nWith latest CONFIG_PROVE_RCU stuff, I felt more comfortable to make this\nwork.\n\nsk-\u003esk_dst_cache is currently protected by a rwlock (sk_dst_lock)\n\nThis rwlock is readlocked for a very small amount of time, and dst\nentries are already freed after RCU grace period. This calls for RCU\nagain :)\n\nThis patch converts sk_dst_lock to a spinlock, and use RCU for readers.\n\n__sk_dst_get() is supposed to be called with rcu_read_lock() or if\nsocket locked by user, so use appropriate rcu_dereference_check()\ncondition (rcu_read_lock_held() || sock_owned_by_user(sk))\n\nThis patch avoids two atomic ops per tx packet on UDP connected sockets,\nfor example, and permits sk_dst_lock to be much less dirtied.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "5a0e3ad6af8660be21ca98a971cd00f331318c05",
      "tree": "5bfb7be11a03176a87296a43ac6647975c00a1d1",
      "parents": [
        "ed391f4ebf8f701d3566423ce8f17e614cde9806"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 24 17:04:11 2010 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Mar 30 22:02:32 2010 +0900"
      },
      "message": "include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h\n\npercpu.h is included by sched.h and module.h and thus ends up being\nincluded when building most .c files.  percpu.h includes slab.h which\nin turn includes gfp.h making everything defined by the two files\nuniversally available and complicating inclusion dependencies.\n\npercpu.h -\u003e slab.h dependency is about to be removed.  Prepare for\nthis change by updating users of gfp and slab facilities include those\nheaders directly instead of assuming availability.  As this conversion\nneeds to touch large number of source files, the following script is\nused as the basis of conversion.\n\n  http://userweb.kernel.org/~tj/misc/slabh-sweep.py\n\nThe script does the followings.\n\n* Scan files for gfp and slab usages and update includes such that\n  only the necessary includes are there.  ie. if only gfp is used,\n  gfp.h, if slab is used, slab.h.\n\n* When the script inserts a new include, it looks at the include\n  blocks and try to put the new include such that its order conforms\n  to its surrounding.  It\u0027s put in the include block which contains\n  core kernel includes, in the same order that the rest are ordered -\n  alphabetical, Christmas tree, rev-Xmas-tree or at the end if there\n  doesn\u0027t seem to be any matching order.\n\n* If the script can\u0027t find a place to put a new include (mostly\n  because the file doesn\u0027t have fitting include block), it prints out\n  an error message indicating which .h file needs to be added to the\n  file.\n\nThe conversion was done in the following steps.\n\n1. The initial automatic conversion of all .c files updated slightly\n   over 4000 files, deleting around 700 includes and adding ~480 gfp.h\n   and ~3000 slab.h inclusions.  The script emitted errors for ~400\n   files.\n\n2. Each error was manually checked.  Some didn\u0027t need the inclusion,\n   some needed manual addition while adding it to implementation .h or\n   embedding .c file was more appropriate for others.  This step added\n   inclusions to around 150 files.\n\n3. The script was run again and the output was compared to the edits\n   from #2 to make sure no file was left behind.\n\n4. Several build tests were done and a couple of problems were fixed.\n   e.g. lib/decompress_*.c used malloc/free() wrappers around slab\n   APIs requiring slab.h to be added manually.\n\n5. The script was run on all .h files but without automatically\n   editing them as sprinkling gfp.h and slab.h inclusions around .h\n   files could easily lead to inclusion dependency hell.  Most gfp.h\n   inclusion directives were ignored as stuff from gfp.h was usually\n   wildly available and often used in preprocessor macros.  Each\n   slab.h inclusion directive was examined and added manually as\n   necessary.\n\n6. percpu.h was updated not to include slab.h.\n\n7. Build test were done on the following configurations and failures\n   were fixed.  CONFIG_GCOV_KERNEL was turned off for all tests (as my\n   distributed build env didn\u0027t work with gcov compiles) and a few\n   more options had to be turned off depending on archs to make things\n   build (like ipr on powerpc/64 which failed due to missing writeq).\n\n   * x86 and x86_64 UP and SMP allmodconfig and a custom test config.\n   * powerpc and powerpc64 SMP allmodconfig\n   * sparc and sparc64 SMP allmodconfig\n   * ia64 SMP allmodconfig\n   * s390 SMP allmodconfig\n   * alpha SMP allmodconfig\n   * um on x86_64 SMP allmodconfig\n\n8. percpu.h modifications were reverted so that it could be applied as\n   a separate patch and serve as bisection point.\n\nGiven the fact that I had only a couple of failures from tests on step\n6, I\u0027m fairly confident about the coverage of this conversion patch.\nIf there is a breakage, it\u0027s likely to be something in one of the arch\nheaders which should be easily discoverable easily on most builds of\nthe specific arch.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nGuess-its-ok-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\n"
    },
    {
      "commit": "4045635318538d3ddd2007720412fdc4b08f6a62",
      "tree": "ee358afe884cd8e8af594de4ea882879bd1ff994",
      "parents": [
        "10cc2b50eb4b01ca4dc014af2094d28b4ebe20d7"
      ],
      "author": {
        "name": "Zhu Yi",
        "email": "yi.zhu@intel.com",
        "time": "Sun Mar 07 16:21:39 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Mar 08 10:45:26 2010 -0800"
      },
      "message": "net: add __must_check to sk_add_backlog\n\nAdd the \"__must_check\" tag to sk_add_backlog() so that any failure to\ncheck and drop packets will be warned about.\n\nSigned-off-by: Zhu Yi \u003cyi.zhu@intel.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "a3a858ff18a72a8d388e31ab0d98f7e944841a62",
      "tree": "e51a59ce280f0aa818ac5e1d989bc8a137b7cd47",
      "parents": [
        "2499849ee8f513e795b9f2c19a42d6356e4943a4"
      ],
      "author": {
        "name": "Zhu Yi",
        "email": "yi.zhu@intel.com",
        "time": "Thu Mar 04 18:01:47 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Mar 05 13:34:03 2010 -0800"
      },
      "message": "net: backlog functions rename\n\nsk_add_backlog -\u003e __sk_add_backlog\nsk_add_backlog_limited -\u003e sk_add_backlog\n\nSigned-off-by: Zhu Yi \u003cyi.zhu@intel.com\u003e\nAcked-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "8eae939f1400326b06d0c9afe53d2a484a326871",
      "tree": "0896163cf1a00205fab76cc1c35855157a05cbbc",
      "parents": [
        "12c3400a84742f8bb0e4edc822e9ccba58781e0c"
      ],
      "author": {
        "name": "Zhu Yi",
        "email": "yi.zhu@intel.com",
        "time": "Thu Mar 04 18:01:40 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Mar 05 13:33:59 2010 -0800"
      },
      "message": "net: add limit for socket backlog\n\nWe got system OOM while running some UDP netperf testing on the loopback\ndevice. The case is multiple senders sent stream UDP packets to a single\nreceiver via loopback on local host. Of course, the receiver is not able\nto handle all the packets in time. But we surprisingly found that these\npackets were not discarded due to the receiver\u0027s sk-\u003esk_rcvbuf limit.\nInstead, they are kept queuing to sk-\u003esk_backlog and finally ate up all\nthe memory. We believe this is a secure hole that a none privileged user\ncan crash the system.\n\nThe root cause for this problem is, when the receiver is doing\n__release_sock() (i.e. after userspace recv, kernel udp_recvmsg -\u003e\nskb_free_datagram_locked -\u003e release_sock), it moves skbs from backlog to\nsk_receive_queue with the softirq enabled. In the above case, multiple\nbusy senders will almost make it an endless loop. The skbs in the\nbacklog end up eat all the system memory.\n\nThe issue is not only for UDP. Any protocols using socket backlog is\npotentially affected. The patch adds limit for socket backlog so that\nthe backlog size cannot be expanded endlessly.\n\nReported-by: Alex Shi \u003calex.shi@intel.com\u003e\nCc: David Miller \u003cdavem@davemloft.net\u003e\nCc: Arnaldo Carvalho de Melo \u003cacme@ghostprotocols.net\u003e\nCc: Alexey Kuznetsov \u003ckuznet@ms2.inr.ac.ru\nCc: \"Pekka Savola (ipv6)\" \u003cpekkas@netcore.fi\u003e\nCc: Patrick McHardy \u003ckaber@trash.net\u003e\nCc: Vlad Yasevich \u003cvladislav.yasevich@hp.com\u003e\nCc: Sridhar Samudrala \u003csri@us.ibm.com\u003e\nCc: Jon Maloy \u003cjon.maloy@ericsson.com\u003e\nCc: Allan Stephens \u003callan.stephens@windriver.com\u003e\nCc: Andrew Hendry \u003candrew.hendry@gmail.com\u003e\nSigned-off-by: Zhu Yi \u003cyi.zhu@intel.com\u003e\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nAcked-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "808f5114a9206fee855117d416440e1071ab375c",
      "tree": "cec3f04220909b77c0880029b63862553ad5161c",
      "parents": [
        "1cc523271ef0b6305c565a143e3d48f6fff826dd"
      ],
      "author": {
        "name": "stephen hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Mon Feb 22 07:57:18 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Feb 22 15:45:56 2010 -0800"
      },
      "message": "packet: convert socket list to RCU (v3)\n\nConvert AF_PACKET to use RCU, eliminating one more reader/writer lock.\n\nThere is no need for a real sk_del_node_init_rcu(), because sk_del_node_init\nis doing the equivalent thing to hlst_del_init_rcu already; but added\nsome comments to try and make that obvious.\n\nSigned-off-by: Stephen Hemminger \u003cshemminger@vyatta.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "1a5778aa000ebfec7f07eed0ffa2852ffb5d16bb",
      "tree": "86ec6c8f9f5a43e3bca90a45eec6dd32f565b2d6",
      "parents": [
        "5ecccb74dc91e22496a142b103ba958f93c29275"
      ],
      "author": {
        "name": "Ben Hutchings",
        "email": "ben@decadent.org.uk",
        "time": "Sun Feb 14 22:35:47 2010 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Feb 14 22:35:47 2010 -0800"
      },
      "message": "net: Fix first line of kernel-doc for a few functions\n\nThe function name must be followed by a space, hypen, space, and a\nshort description.\n\nSigned-off-by: Ben Hutchings \u003cben@decadent.org.uk\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "c4146644a56b1f213c4c5567c75771883bec33c7",
      "tree": "be9a92ed6f16d0517d7d19382921adeacd87a065",
      "parents": [
        "66655de6d132b726be64c324bc3f9ea366d20697"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Mon Feb 08 23:18:45 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Feb 10 11:12:07 2010 -0800"
      },
      "message": "net: add a wrapper sk_entry()\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "512615b6b843ff3ff5ad583f34c39b3f302f5f26",
      "tree": "7420705a314bc691bc478225148935dc67f71904",
      "parents": [
        "d4cada4ae1c012815f95fa507eb86a0ae9d607d7"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Sun Nov 08 10:17:58 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Nov 08 20:53:06 2009 -0800"
      },
      "message": "udp: secondary hash on (local port, local address)\n\nExtends udp_table to contain a secondary hash table.\n\nsocket anchor for this second hash is free, because UDP\ndoesnt use skc_bind_node : We define an union to hold\nboth skc_bind_node \u0026 a new hlist_nulls_node udp_portaddr_node\n\nudp_lib_get_port() inserts sockets into second hash chain\n(additional cost of one atomic op)\n\nudp_lib_unhash() deletes socket from second hash chain\n(additional cost of one atomic op)\n\nNote : No spinlock lockdep annotation is needed, because\nlock for the secondary hash chain is always get after\nlock for primary hash chain.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "d4cada4ae1c012815f95fa507eb86a0ae9d607d7",
      "tree": "23cdfb3763c9140ae095bf8095c3e6b16f7b48f3",
      "parents": [
        "fdcc8aa953a1123a289791dd192090651036d593"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Sun Nov 08 10:17:30 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Nov 08 20:53:05 2009 -0800"
      },
      "message": "udp: split sk_hash into two u16 hashes\n\nUnion sk_hash with two u16 hashes for udp (no extra memory taken)\n\nOne 16 bits hash on (local port) value (the previous udp \u0027hash\u0027)\n\nOne 16 bits hash on (local address, local port) values, initialized\nbut not yet used. This second hash is using jenkin hash for better\ndistribution.\n\nBecause the \u0027port\u0027 is xored later, a partial hash is performed\non local address + net_hash_mix(net)\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "e022f0b4a03f4fff9323b509df023b8af635716e",
      "tree": "f287633fd72c4f70882b768836101acff7d1bc62",
      "parents": [
        "748879776e3b738d53e64df6dbec7394b829462a"
      ],
      "author": {
        "name": "Krishna Kumar",
        "email": "krkumar2@in.ibm.com",
        "time": "Mon Oct 19 23:46:20 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Oct 20 18:55:45 2009 -0700"
      },
      "message": "net: Introduce sk_tx_queue_mapping\n\nIntroduce sk_tx_queue_mapping; and functions that set, test and\nget this value. Reset sk_tx_queue_mapping to -1 whenever the dst\ncache is set/reset, and in socket alloc. Setting txq to -1 and\nusing valid txq\u003d\u003c0 to n-1\u003e allows the tx path to use the value\nof sk_tx_queue_mapping directly instead of subtracting 1 on every\ntx.\n\nSigned-off-by: Krishna Kumar \u003ckrkumar2@in.ibm.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "421355de876b9f3fcc7e4cb6026e416fb12a5068",
      "tree": "fb814456af86c75e1eb9e330994dda461fc5b4f7",
      "parents": [
        "aace495933a981274b6491d71b915165a61defdc",
        "0fe7463a35aadfaf22d1ca58325ab3851b8d757c"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Oct 13 12:55:20 2009 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Oct 13 12:55:20 2009 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6\n"
    },
    {
      "commit": "3b885787ea4112eaa80945999ea0901bf742707f",
      "tree": "06fc15f8e8083d5652ccb4d06653d9812dce9c0b",
      "parents": [
        "d5e63bded6e819ca77ee1a1d97c783a31f6caf30"
      ],
      "author": {
        "name": "Neil Horman",
        "email": "nhorman@tuxdriver.com",
        "time": "Mon Oct 12 13:26:31 2009 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Oct 12 13:26:31 2009 -0700"
      },
      "message": "net: Generalize socket rx gap / receive queue overflow cmsg\n\nCreate a new socket level option to report number of queue overflows\n\nRecently I augmented the AF_PACKET protocol to report the number of frames lost\non the socket receive queue between any two enqueued frames.  This value was\nexported via a SOL_PACKET level cmsg.  AFter I completed that work it was\nrequested that this feature be generalized so that any datagram oriented socket\ncould make use of this option.  As such I\u0027ve created this patch, It creates a\nnew SOL_SOCKET level option called SO_RXQ_OVFL, which when enabled exports a\nSOL_SOCKET level cmsg that reports the nubmer of times the sk_receive_queue\noverflowed between any two given frames.  It also augments the AF_PACKET\nprotocol to take advantage of this new feature (as it previously did not touch\nsk-\u003esk_drops, which this patch uses to record the overflow count).  Tested\nsuccessfully by me.\n\nNotes:\n\n1) Unlike my previous patch, this patch simply records the sk_drops value, which\nis not a number of drops between packets, but rather a total number of drops.\nDeltas must be computed in user space.\n\n2) While this patch currently works with datagram oriented protocols, it will\nalso be accepted by non-datagram oriented protocols. I\u0027m not sure if thats\nagreeable to everyone, but my argument in favor of doing so is that, for those\nprotocols which aren\u0027t applicable to this option, sk_drops will always be zero,\nand reporting no drops on a receive queue that isn\u0027t used for those\nnon-participating protocols seems reasonable to me.  This also saves us having\nto code in a per-protocol opt in mechanism.\n\n3) This applies cleanly to net-next assuming that commit\n977750076d98c7ff6cbda51858bb5a5894a9d9ab (my af packet cmsg patch) is reverted\n\nSigned-off-by: Neil Horman \u003cnhorman@tuxdriver.com\u003e\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "5fdb9973c10c2d2e046da0976782ece25e78dc8b",
      "tree": "6b3b8309595e49173d935ed95e71fcc2788d4e24",
      "parents": [
        "53f7e35f8b7fc2f5620a863ac613bcf3080cb6ba"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Thu Oct 08 22:50:25 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Oct 11 23:03:52 2009 -0700"
      },
      "message": "net: Fix struct sock bitfield annotation\n\nSince commit a98b65a3 (net: annotate struct sock bitfield), we lost\n8 bytes in struct sock on 64bit arches because of\nkmemcheck_bitfield_end(flags) misplacement.\n\nFix this by putting together sk_shutdown, sk_no_check, sk_userlocks,\nsk_protocol and sk_type in the \u0027flags\u0027 32bits bitfield\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "bcdce7195e0eab55b37dbd53be53057f38006380",
      "tree": "b4480a2e43561adf2060d1b8da818535cc91dc04",
      "parents": [
        "bd32cafc4707ccc1e66fafdb47fac42217569070"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Tue Oct 06 17:28:29 2009 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Oct 06 17:28:29 2009 -0700"
      },
      "message": "net: speedup sk_wake_async()\n\nAn incoming datagram must bring into cpu cache *lot* of cache lines,\nin particular : (other parts omitted (hash chains, ip route cache...))\n\nOn 32bit arches :\n\noffsetof(struct sock, sk_rcvbuf)       \u003d0x30    (read)\noffsetof(struct sock, sk_lock)         \u003d0x34   (rw)\n\noffsetof(struct sock, sk_sleep)        \u003d0x50 (read)\noffsetof(struct sock, sk_rmem_alloc)   \u003d0x64   (rw)\noffsetof(struct sock, sk_receive_queue)\u003d0x74   (rw)\n\noffsetof(struct sock, sk_forward_alloc)\u003d0x98   (rw)\n\noffsetof(struct sock, sk_callback_lock)\u003d0xcc    (rw)\noffsetof(struct sock, sk_drops)        \u003d0xd8 (read if we add dropcount support, rw if frame dropped)\noffsetof(struct sock, sk_filter)       \u003d0xf8    (read)\n\noffsetof(struct sock, sk_socket)       \u003d0x138 (read)\n\noffsetof(struct sock, sk_data_ready)   \u003d0x15c   (read)\n\n\nWe can avoid sk-\u003esk_socket and socket-\u003efasync_list referencing on sockets\nwith no fasync() structures. (socket-\u003efasync_list ptr is probably already in cache\nbecause it shares a cache line with socket-\u003ewait, ie location pointed by sk-\u003esk_sleep)\n\nThis avoids one cache line load per incoming packet for common cases (no fasync())\n\nWe can leave (or even move in a future patch) sk-\u003esk_socket in a cold location\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "b7058842c940ad2c08dd829b21e5c92ebe3b8758",
      "tree": "5fe78d599fc345ca0bcd4b083b79095a54b2921b",
      "parents": [
        "eb1cf0f8f7a9e5a6d573d5bd72c015686a042db0"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Sep 30 16:12:20 2009 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Sep 30 16:12:20 2009 -0700"
      },
      "message": "net: Make setsockopt() optlen be unsigned.\n\nThis provides safety against negative optlen at the type\nlevel instead of depending upon (sometimes non-trivial)\nchecks against this sprinkled all over the the place, in\neach and every implementation.\n\nBased upon work done by Arjan van de Ven and feedback\nfrom Linus Torvalds.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "4dc6dc7162c08b9965163c9ab3f9375d4adff2c7",
      "tree": "f4b9959e9ca5e5b8bdb6301663a15e0f67d4c68c",
      "parents": [
        "303d67c288319768b19ed8dbed429fef7eb7c275"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Wed Jul 15 23:13:10 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Jul 16 18:05:26 2009 -0700"
      },
      "message": "net: sock_copy() fixes\n\nCommit e912b1142be8f1e2c71c71001dc992c6e5eb2ec1\n(net: sk_prot_alloc() should not blindly overwrite memory)\ntook care of not zeroing whole new socket at allocation time.\n\nsock_copy() is another spot where we should be very careful.\nWe should not set refcnt to a non null value, until\nwe are sure other fields are correctly setup, or\na lockless reader could catch this socket by mistake,\nwhile not fully (re)initialized.\n\nThis patch puts sk_node \u0026 sk_refcnt to the very beginning\nof struct sock to ease sock_copy() \u0026 sk_prot_alloc() job.\n\nWe add appropriate smp_wmb() before sk_refcnt initializations\nto match our RCU requirements (changes to sock keys should\nbe committed to memory before sk_refcnt setting)\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "ad46276952f1af34cd91d46d49ba13d347d56367",
      "tree": "55cf35156794ab34d8a607c25fd044c37231f9e4",
      "parents": [
        "a57de0b4336e48db2811a2030bb68dba8dd09d88"
      ],
      "author": {
        "name": "Jiri Olsa",
        "email": "jolsa@redhat.com",
        "time": "Wed Jul 08 12:10:31 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Jul 09 17:06:58 2009 -0700"
      },
      "message": "memory barrier: adding smp_mb__after_lock\n\nAdding smp_mb__after_lock define to be used as a smp_mb call after\na lock.\n\nMaking it nop for x86, since {read|write|spin}_lock() on x86 are\nfull memory barriers.\n\nSigned-off-by: Jiri Olsa \u003cjolsa@redhat.com\u003e\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "a57de0b4336e48db2811a2030bb68dba8dd09d88",
      "tree": "a01c189d5fd55c69c9e2e842241e84b46728bc60",
      "parents": [
        "1b614fb9a00e97b1eab54d4e442d405229c059dd"
      ],
      "author": {
        "name": "Jiri Olsa",
        "email": "jolsa@redhat.com",
        "time": "Wed Jul 08 12:09:13 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Jul 09 17:06:57 2009 -0700"
      },
      "message": "net: adding memory barrier to the poll and receive callbacks\n\nAdding memory barrier after the poll_wait function, paired with\nreceive callbacks. Adding fuctions sock_poll_wait and sk_has_sleeper\nto wrap the memory barrier.\n\nWithout the memory barrier, following race can happen.\nThe race fires, when following code paths meet, and the tp-\u003ercv_nxt\nand __add_wait_queue updates stay in CPU caches.\n\nCPU1                         CPU2\n\nsys_select                   receive packet\n  ...                        ...\n  __add_wait_queue           update tp-\u003ercv_nxt\n  ...                        ...\n  tp-\u003ercv_nxt check          sock_def_readable\n  ...                        {\n  schedule                      ...\n                                if (sk-\u003esk_sleep \u0026\u0026 waitqueue_active(sk-\u003esk_sleep))\n                                        wake_up_interruptible(sk-\u003esk_sleep)\n                                ...\n                             }\n\nIf there was no cache the code would work ok, since the wait_queue and\nrcv_nxt are opposit to each other.\n\nMeaning that once tp-\u003ercv_nxt is updated by CPU2, the CPU1 either already\npassed the tp-\u003ercv_nxt check and sleeps, or will get the new value for\ntp-\u003ercv_nxt and will return with new data mask.\nIn both cases the process (CPU1) is being added to the wait queue, so the\nwaitqueue_active (CPU2) call cannot miss and will wake up CPU1.\n\nThe bad case is when the __add_wait_queue changes done by CPU1 stay in its\ncache, and so does the tp-\u003ercv_nxt update on CPU2 side.  The CPU1 will then\nendup calling schedule and sleep forever if there are no more data on the\nsocket.\n\nCalls to poll_wait in following modules were ommited:\n\tnet/bluetooth/af_bluetooth.c\n\tnet/irda/af_irda.c\n\tnet/irda/irnet/irnet_ppp.c\n\tnet/mac80211/rc80211_pid_debugfs.c\n\tnet/phonet/socket.c\n\tnet/rds/af_rds.c\n\tnet/rfkill/core.c\n\tnet/sunrpc/cache.c\n\tnet/sunrpc/rpc_pipe.c\n\tnet/tipc/socket.c\n\nSigned-off-by: Jiri Olsa \u003cjolsa@redhat.com\u003e\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "09ce42d3167e3f20b501fa780c2415332330fac5",
      "tree": "2f0a6e2e3ec51187f4df78e8c75aa31602a6edd4",
      "parents": [
        "d7ed9c05ebf56c04811276207d7110706debe09f",
        "7959ea254ed18faee41160b1c50b3c9664735967"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jun 24 10:01:12 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jun 24 10:01:12 2009 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6:\n  bnx2: Fix the behavior of ethtool when ONBOOT\u003dno\n  qla3xxx: Don\u0027t sleep while holding lock.\n  qla3xxx: Give the PHY time to come out of reset.\n  ipv4 routing: Ensure that route cache entries are usable and reclaimable with caching is off\n  net: Move rx skb_orphan call to where needed\n  ipv6: Use correct data types for ICMPv6 type and code\n  net: let KS8842 driver depend on HAS_IOMEM\n  can: let SJA1000 driver depend on HAS_IOMEM\n  netxen: fix firmware init handshake\n  netxen: fix build with without CONFIG_PM\n  netfilter: xt_rateest: fix comparison with self\n  netfilter: xt_quota: fix incomplete initialization\n  netfilter: nf_log: fix direct userspace memory access in proc handler\n  netfilter: fix some sparse endianess warnings\n  netfilter: nf_conntrack: fix conntrack lookup race\n  netfilter: nf_conntrack: fix confirmation race condition\n  netfilter: nf_conntrack: death_by_timeout() fix\n"
    },
    {
      "commit": "d55d87fdff8252d0e2f7c28c2d443aee17e9d70f",
      "tree": "a4bfb0a47525672c690b63e85bf3f47f4ab014f7",
      "parents": [
        "d5fdd6babcfc2b0e6a8da1acf492a69fb54b4c47"
      ],
      "author": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Mon Jun 22 02:25:25 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jun 23 16:36:25 2009 -0700"
      },
      "message": "net: Move rx skb_orphan call to where needed\n\nIn order to get the tun driver to account packets, we need to be\nable to receive packets with destructors set.  To be on the safe\nside, I added an skb_orphan call for all protocols by default since\nsome of them (IP in particular) cannot handle receiving packets\ndestructors properly.\n\nNow it seems that at least one protocol (CAN) expects to be able\nto pass skb-\u003esk through the rx path without getting clobbered.\n\nSo this patch attempts to fix this properly by moving the skb_orphan\ncall to where it\u0027s actually needed.  In particular, I\u0027ve added it\nto skb_set_owner_[rw] which is what most users of skb-\u003edestructor\ncall.\n\nThis is actually an improvement for tun too since it means that\nwe only give back the amount charged to the socket when the skb\nis passed to another socket that will also be charged accordingly.\n\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nTested-by: Oliver Hartkopp \u003colver@hartkopp.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "d2aa4550379f92e929af7ed1dd4f55e6a1e331f8",
      "tree": "5ef0fc69a507f0d701fd157b6652427eabd5efdd",
      "parents": [
        "9e3e4b1d2d13bead8d52703c82a02b55f108b491",
        "cb2107be43d2fc5eadec58b92b54bf32c00bfff3"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 18 14:07:15 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 18 14:07:15 2009 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6: (55 commits)\n  netxen: fix tx ring accounting\n  netxen: fix detection of cut-thru firmware mode\n  forcedeth: fix dma api mismatches\n  atm: sk_wmem_alloc initial value is one\n  net: correct off-by-one write allocations reports\n  via-velocity : fix no link detection on boot\n  Net / e100: Fix suspend of devices that cannot be power managed\n  TI DaVinci EMAC : Fix rmmod error\n  net: group address list and its count\n  ipv4: Fix fib_trie rebalancing, part 2\n  pkt_sched: Update drops stats in act_police\n  sky2: version 1.23\n  sky2: add GRO support\n  sky2: skb recycling\n  sky2: reduce default transmit ring\n  sky2: receive counter update\n  sky2: fix shutdown synchronization\n  sky2: PCI irq issues\n  sky2: more receive shutdown\n  sky2: turn off pause during shutdown\n  ...\n\nManually fix trivial conflict in net/core/skbuff.c due to kmemcheck\n"
    },
    {
      "commit": "c564039fd83ea16a86a96d52632794b24849e507",
      "tree": "42c9f525d08ea2e7d36c0231cc628587a175a39b",
      "parents": [
        "1d4ac5d5ef9dd965ae211ebe8acbf83dc4d9571b"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Tue Jun 16 10:12:03 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jun 17 04:31:25 2009 -0700"
      },
      "message": "net: sk_wmem_alloc has initial value of one, not zero\n\ncommit 2b85a34e911bf483c27cfdd124aeb1605145dc80\n(net: No more expensive sock_hold()/sock_put() on each tx)\nchanged initial sk_wmem_alloc value.\n\nSome protocols check sk_wmem_alloc value to determine if a timer\nmust delay socket deallocation. We must take care of the sk_wmem_alloc\nvalue being one instead of zero when no write allocations are pending.\n\nReported by Ingo Molnar, and full diagnostic from David Miller.\n\nThis patch introduces three helpers to get read/write allocations\nand a followup patch will use these helpers to report correct\nwrite allocations to user.\n\nReported-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "b3fec0fe35a4ff048484f1408385a27695d4273b",
      "tree": "088c23f098421ea681d9976a83aad73d15be1027",
      "parents": [
        "e1f5b94fd0c93c3e27ede88b7ab652d086dc960f",
        "722f2a6c87f34ee0fd0130a8cf45f81e0705594a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 16 13:09:51 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 16 13:09:51 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus2\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/vegard/kmemcheck\n\n* \u0027for-linus2\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/vegard/kmemcheck: (39 commits)\n  signal: fix __send_signal() false positive kmemcheck warning\n  fs: fix do_mount_root() false positive kmemcheck warning\n  fs: introduce __getname_gfp()\n  trace: annotate bitfields in struct ring_buffer_event\n  net: annotate struct sock bitfield\n  c2port: annotate bitfield for kmemcheck\n  net: annotate inet_timewait_sock bitfields\n  ieee1394/csr1212: fix false positive kmemcheck report\n  ieee1394: annotate bitfield\n  net: annotate bitfields in struct inet_sock\n  net: use kmemcheck bitfields API for skbuff\n  kmemcheck: introduce bitfield API\n  kmemcheck: add opcode self-testing at boot\n  x86: unify pte_hidden\n  x86: make _PAGE_HIDDEN conditional\n  kmemcheck: make kconfig accessible for other architectures\n  kmemcheck: enable in the x86 Kconfig\n  kmemcheck: add hooks for the page allocator\n  kmemcheck: add hooks for page- and sg-dma-mappings\n  kmemcheck: don\u0027t track page tables\n  ...\n"
    },
    {
      "commit": "a98b65a3ad71e702e760bc63f57684301628e837",
      "tree": "6ec3d174f315e9b77faf25c354f5eda99bd31301",
      "parents": [
        "c53bd2e1949ddbe06fe2a6079c0658d58ce25edb"
      ],
      "author": {
        "name": "Vegard Nossum",
        "email": "vegard.nossum@gmail.com",
        "time": "Thu Feb 26 14:46:57 2009 +0100"
      },
      "committer": {
        "name": "Vegard Nossum",
        "email": "vegard.nossum@gmail.com",
        "time": "Mon Jun 15 15:49:36 2009 +0200"
      },
      "message": "net: annotate struct sock bitfield\n\n2009/2/24 Ingo Molnar \u003cmingo@elte.hu\u003e:\n\u003e ok, this is the last warning i have from today\u0027s overnight -tip\n\u003e testruns - a 32-bit system warning in sock_init_data():\n\u003e\n\u003e [    2.610389] NET: Registered protocol family 16\n\u003e [    2.616138] initcall netlink_proto_init+0x0/0x170 returned 0 after 7812 usecs\n\u003e [    2.620010] WARNING: kmemcheck: Caught 32-bit read from uninitialized memory (f642c184)\n\u003e [    2.624002] 010000000200000000000000604990c000000000000000000000000000000000\n\u003e [    2.634076]  i i i i i i u u i i i i i i i i i i i i i i i i i i i i i i i i\n\u003e [    2.641038]          ^\n\u003e [    2.643376]\n\u003e [    2.644004] Pid: 1, comm: swapper Not tainted (2.6.29-rc6-tip-01751-g4d1c22c-dirty #885)\n\u003e [    2.648003] EIP: 0060:[\u003cc07141a1\u003e] EFLAGS: 00010282 CPU: 0\n\u003e [    2.652008] EIP is at sock_init_data+0xa1/0x190\n\u003e [    2.656003] EAX: 0001a800 EBX: f6836c00 ECX: 00463000 EDX: c0e46fe0\n\u003e [    2.660003] ESI: f642c180 EDI: c0b83088 EBP: f6863ed8 ESP: c0c412ec\n\u003e [    2.664003]  DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068\n\u003e [    2.668003] CR0: 8005003b CR2: f682c400 CR3: 00b91000 CR4: 000006f0\n\u003e [    2.672003] DR0: 00000000 DR1: 00000000 DR2: 00000000 DR3: 00000000\n\u003e [    2.676003] DR6: ffff4ff0 DR7: 00000400\n\u003e [    2.680002]  [\u003cc07423e5\u003e] __netlink_create+0x35/0xa0\n\u003e [    2.684002]  [\u003cc07443cc\u003e] netlink_kernel_create+0x4c/0x140\n\u003e [    2.688002]  [\u003cc072755e\u003e] rtnetlink_net_init+0x1e/0x40\n\u003e [    2.696002]  [\u003cc071b601\u003e] register_pernet_operations+0x11/0x30\n\u003e [    2.700002]  [\u003cc071b72c\u003e] register_pernet_subsys+0x1c/0x30\n\u003e [    2.704002]  [\u003cc0bf3c8c\u003e] rtnetlink_init+0x4c/0x100\n\u003e [    2.708002]  [\u003cc0bf4669\u003e] netlink_proto_init+0x159/0x170\n\u003e [    2.712002]  [\u003cc0101124\u003e] do_one_initcall+0x24/0x150\n\u003e [    2.716002]  [\u003cc0bbf3c7\u003e] do_initcalls+0x27/0x40\n\u003e [    2.723201]  [\u003cc0bbf3fc\u003e] do_basic_setup+0x1c/0x20\n\u003e [    2.728002]  [\u003cc0bbfb8a\u003e] kernel_init+0x5a/0xa0\n\u003e [    2.732002]  [\u003cc0103e47\u003e] kernel_thread_helper+0x7/0x10\n\u003e [    2.736002]  [\u003cffffffff\u003e] 0xffffffff\n\nWe fix this false positive by annotating the bitfield in struct\nsock.\n\nReported-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Vegard Nossum \u003cvegard.nossum@gmail.com\u003e\n"
    },
    {
      "commit": "2b85a34e911bf483c27cfdd124aeb1605145dc80",
      "tree": "3cea3e8a27b62de2f92e759641c27200d8bde421",
      "parents": [
        "f2333a014c1e13ac8e1b73a6fd77731c524eff78"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Thu Jun 11 02:55:43 2009 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Jun 11 02:55:43 2009 -0700"
      },
      "message": "net: No more expensive sock_hold()/sock_put() on each tx\n\nOne of the problem with sock memory accounting is it uses\na pair of sock_hold()/sock_put() for each transmitted packet.\n\nThis slows down bidirectional flows because the receive path\nalso needs to take a refcount on socket and might use a different\ncpu than transmit path or transmit completion path. So these\ntwo atomic operations also trigger cache line bounces.\n\nWe can see this in tx or tx/rx workloads (media gateways for example),\nwhere sock_wfree() can be in top five functions in profiles.\n\nWe use this sock_hold()/sock_put() so that sock freeing\nis delayed until all tx packets are completed.\n\nAs we also update sk_wmem_alloc, we could offset sk_wmem_alloc\nby one unit at init time, until sk_free() is called.\nOnce sk_free() is called, we atomic_dec_and_test(sk_wmem_alloc)\nto decrement initial offset and atomicaly check if any packets\nare in flight.\n\nskb_set_owner_w() doesnt call sock_hold() anymore\n\nsock_wfree() doesnt call sock_put() anymore, but check if sk_wmem_alloc\nreached 0 to perform the final freeing.\n\nDrawback is that a skb-\u003etruesize error could lead to unfreeable sockets, or\neven worse, prematurely calling __sk_free() on a live socket.\n\nNice speedups on SMP. tbench for example, going from 2691 MB/s to 2711 MB/s\non my 8 cpu dev machine, even if tbench was not really hitting sk_refcnt\ncontention point. 5 % speedup on a UDP transmit workload (depends\non number of flows), lowering TX completion cpu usage.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "e70049b9e74267dd47e1ffa62302073487afcb48",
      "tree": "2cd000c0751ef31c9044b020d63f278cdf4f332d",
      "parents": [
        "d18921a0e319ab512f8186b1b1142c7b8634c779",
        "f7e603ad8f78cd3b59e33fa72707da0cbabdf699"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Feb 24 03:50:29 2009 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Feb 24 03:50:29 2009 -0800"
      },
      "message": "Merge branch \u0027master\u0027 of /home/davem/src/GIT/linux-2.6/\n"
    },
    {
      "commit": "92a0acce186cde8ead56c6915d9479773673ea1a",
      "tree": "97b7663f77f8274cb52d429c8a7db97c70daf745",
      "parents": [
        "34edaa88324004baf4884fb0388f86059d9c4878"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Feb 17 21:24:05 2009 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Feb 17 21:24:05 2009 -0800"
      },
      "message": "net: Kill skb_truesize_check(), it only catches false-positives.\n\nA long time ago we had bugs, primarily in TCP, where we would modify\nskb-\u003etruesize (for TSO queue collapsing) in ways which would corrupt\nthe socket memory accounting.\n\nskb_truesize_check() was added in order to try and catch this error\nmore systematically.\n\nHowever this debugging check has morphed into a Frankenstein of sorts\nand these days it does nothing other than catch false-positives.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "20d4947353be60e909e6b1a79d241457edd6833f",
      "tree": "939ced518fc52e57df9ee9efb0cd14b6e26a3bc4",
      "parents": [
        "ac45f602ee3d1b6f326f68bc0c2591ceebf05ba4"
      ],
      "author": {
        "name": "Patrick Ohly",
        "email": "patrick.ohly@intel.com",
        "time": "Thu Feb 12 05:03:38 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Feb 15 22:43:35 2009 -0800"
      },
      "message": "net: socket infrastructure for SO_TIMESTAMPING\n\nThe overlap with the old SO_TIMESTAMP[NS] options is handled so\nthat time stamping in software (net_enable_timestamp()) is\nenabled when SO_TIMESTAMP[NS] and/or SO_TIMESTAMPING_RX_SOFTWARE\nis set.  It\u0027s disabled if all of these are off.\n\nSigned-off-by: Patrick Ohly \u003cpatrick.ohly@intel.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "5e30589521518bff36fd2638b3c3d69679c50436",
      "tree": "6ac985658a06b0787e4354d0d16d380ea9b16a5a",
      "parents": [
        "ac178ef0ae9eb44fd527d87aa9b6394e05f56e1f",
        "d2f8d7ee1a9b4650b4e43325b321801264f7c37a"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Feb 14 23:12:00 2009 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Feb 14 23:12:00 2009 -0800"
      },
      "message": "Merge branch \u0027master\u0027 of /home/davem/src/GIT/linux-2.6/\n\nConflicts:\n\tdrivers/net/wireless/iwlwifi/iwl-agn.c\n\tdrivers/net/wireless/iwlwifi/iwl3945-base.c\n"
    },
    {
      "commit": "99709372736a216f99eb32b76fba835a2bfc93a8",
      "tree": "62a84b976965436b841c65b63e52240d0b06bc29",
      "parents": [
        "fb0886745a75ce98bde3aac421adc69fe61a1905"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Thu Feb 12 16:43:17 2009 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Feb 12 16:43:17 2009 -0800"
      },
      "message": "net: don\u0027t use in_atomic() in gfp_any()\n\nThe problem is that in_atomic() will return false inside spinlocks if\nCONFIG_PREEMPT\u003dn.  This will lead to deadlockable GFP_KERNEL allocations\nfrom spinlocked regions.\n\nSecondly, if CONFIG_PREEMPT\u003dy, this bug solves itself because networking\nwill instead use GFP_ATOMIC from this callsite.  Hence we won\u0027t get the\nmight_sleep() debugging warnings which would have informed us of the buggy\ncallsites.\n\nSolve both these problems by switching to in_interrupt().  Now, if someone\nruns a gfp_any() allocation from inside spinlock we will get the warning\nif CONFIG_PREEMPT\u003dy.\n\nI reviewed all callsites and most of them were too complex for my little\nbrain and none of them documented their interface requirements.  I have no\nidea what this patch will do.\n\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "4cc7f68d65558f683c702d4fe3a5aac4c5227b97",
      "tree": "88f2987e503790d2015a7f0a3b5748d05a0df140",
      "parents": [
        "9a279bcbe347496799711155ed41a89bc40f79c5"
      ],
      "author": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Wed Feb 04 16:55:54 2009 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Feb 04 16:55:54 2009 -0800"
      },
      "message": "net: Reexport sock_alloc_send_pskb\n\nThe function sock_alloc_send_pskb is completely useless if not\nexported since most of the code in it won\u0027t be used as is.  In\nfact, this code has already been duplicated in the tun driver.\n\nNow that we need accounting in the tun driver, we can in fact\nuse this function as is.  So this patch marks it for export again.\n\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "dd24c00191d5e4a1ae896aafe33c6b8095ab4bd1",
      "tree": "e955c09e0b288e50c706b6ee409229d5a930c80c",
      "parents": [
        "1748376b6626acf59c24e9592ac67b3fe2a0e026"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Tue Nov 25 21:17:14 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Nov 25 21:17:14 2008 -0800"
      },
      "message": "net: Use a percpu_counter for orphan_count\n\nInstead of using one atomic_t per protocol, use a percpu_counter\nfor \"orphan_count\", to reduce cache line contention on\nheavy duty network servers. \n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "1748376b6626acf59c24e9592ac67b3fe2a0e026",
      "tree": "65a28205daf1ca92e31389440764fc407365014e",
      "parents": [
        "c1b56878fb68e9c14070939ea4537ad4db79ffae"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Tue Nov 25 21:16:35 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Nov 25 21:16:35 2008 -0800"
      },
      "message": "net: Use a percpu_counter for sockets_allocated\n\nInstead of using one atomic_t per protocol, use a percpu_counter\nfor \"sockets_allocated\", to reduce cache line contention on\nheavy duty network servers. \n\nNote : We revert commit (248969ae31e1b3276fc4399d67ce29a5d81e6fd9\nnet: af_unix can make unix_nr_socks visbile in /proc),\nsince it is not anymore used after sock_prot_inuse_add() addition\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "198d6ba4d7f48c94f990f4604f0b3d73925e0ded",
      "tree": "56bbdf8ba2553c23c8099da9344a8f1d1aba97ab",
      "parents": [
        "9a57f7fabd383920585ed8b74eacd117c6551f2d",
        "7f0f598a0069d1ab072375965a4b69137233169c"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Nov 18 23:38:23 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Nov 18 23:38:23 2008 -0800"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6\n\nConflicts:\n\n\tdrivers/isdn/i4l/isdn_net.c\n\tfs/cifs/connect.c\n"
    },
    {
      "commit": "88ab1932eac721c6e7336708558fa5ed02c85c80",
      "tree": "c8788a1e3de08100bca341fa4180adfe5d02880f",
      "parents": [
        "bbaffaca4810de1a25e32ecaf836eeaacc7a3d11"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Sun Nov 16 19:39:21 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Nov 16 19:39:21 2008 -0800"
      },
      "message": "udp: Use hlist_nulls in UDP RCU code\n\nThis is a straightforward patch, using hlist_nulls infrastructure.\n\nRCUification already done on UDP two weeks ago.\n\nUsing hlist_nulls permits us to avoid some memory barriers, both\nat lookup time and delete time.\n\nPatch is large because it adds new macros to include/net/sock.h.\nThese macros will be used by TCP \u0026 DCCP in next patch.\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "e8f6fbf62de37cbc2e179176ac7010d5f4396b67",
      "tree": "ac22d719c3c93d24b7eeda395b3271be60bfc661",
      "parents": [
        "1fa989e80a9a104bf3b81842a5f4c1867d7aa9c4"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Nov 12 01:38:36 2008 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Nov 13 23:19:10 2008 -0800"
      },
      "message": "lockdep: include/linux/lockdep.h - fix warning in net/bluetooth/af_bluetooth.c\n\nfix this warning:\n\n  net/bluetooth/af_bluetooth.c:60: warning: ‘bt_key_strings’ defined but not used\n  net/bluetooth/af_bluetooth.c:71: warning: ‘bt_slock_key_strings’ defined but not used\n\nthis is a lockdep macro problem in the !LOCKDEP case.\n\nWe cannot convert it to an inline because the macro works on multiple types,\nbut we can mark the parameter used.\n\n[ also clean up a misaligned tab in sock_lock_init_class_and_name() ]\n\n[ also remove #ifdefs from around af_family_clock_key strings - which\n  were certainly added to get rid of the ugly build warnings. ]\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "2378982487c492541d17adc0a870e7e83b07ba43",
      "tree": "0763aee8034a2db3c3949a6b9d7952263420335e",
      "parents": [
        "e4412cb8a6b4190cf73ae44c859fd7e3727d8b13"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Wed Nov 12 23:25:32 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Nov 12 23:25:32 2008 -0800"
      },
      "message": "net: ifdef struct sock::sk_async_wait_queue\n\nEvery user is under CONFIG_NET_DMA already, so ifdef field as well.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "d5f642384e9da75393160350f75bbb9a527f7c58",
      "tree": "098e581485de2878ce716f7a6b45af2e89505551",
      "parents": [
        "d2ad3ca88da02baeccd5216780f1fe983c6953ba"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Tue Nov 04 14:45:58 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Nov 04 14:45:58 2008 -0800"
      },
      "message": "net: #ifdef -\u003esk_security\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "a1744d3bee19d3b9cbfb825ab316a101b9c9f109",
      "tree": "c0e2324c09beca0eb5782eb5abf241ea2b7a4a11",
      "parents": [
        "275f165fa970174f8a98205529750e8abb6c0a33",
        "a432226614c5616e3cfd211e0acffa0acfb4770c"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Oct 31 00:17:34 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Oct 31 00:17:34 2008 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6\n\nConflicts:\n\n\tdrivers/net/wireless/p54/p54common.c\n"
    },
    {
      "commit": "ad1d967c88e349c7e822ad75dd3247a2a50d2ea3",
      "tree": "4564a715df604f9e8816f60f7bc6ab0d211c848c",
      "parents": [
        "194dcdba5a11a0238aef7ed91f32df77cb31505b"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Thu Oct 30 23:54:35 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Oct 30 23:54:35 2008 -0700"
      },
      "message": "net: delete excess kernel-doc notation\n\nRemove excess kernel-doc function parameters from networking header\n\u0026 driver files:\n\nWarning(include/net/sock.h:946): Excess function parameter or struct member \u0027sk\u0027 description in \u0027sk_filter_release\u0027\nWarning(include/linux/netdevice.h:1545): Excess function parameter or struct member \u0027cpu\u0027 description in \u0027netif_tx_lock\u0027\nWarning(drivers/net/wan/z85230.c:712): Excess function parameter or struct member \u0027regs\u0027 description in \u0027z8530_interrupt\u0027\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "96631ed16c514cf8b28fab991a076985ce378c26",
      "tree": "60023b60c6eaf2acdc8fcad258585e4425ebaf91",
      "parents": [
        "f52b5054ec108aaa9e903850d6b62af8ae3fe6ae"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Wed Oct 29 11:19:58 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Oct 29 11:19:58 2008 -0700"
      },
      "message": "udp: introduce sk_for_each_rcu_safenext()\n\nCorey Minyard found a race added in commit 271b72c7fa82c2c7a795bc16896149933110672d\n(udp: RCU handling for Unicast packets.)\n\n \"If the socket is moved from one list to another list in-between the\n time the hash is calculated and the next field is accessed, and the\n socket has moved to the end of the new list, the traversal will not\n complete properly on the list it should have, since the socket will\n be on the end of the new list and there\u0027s not a way to tell it\u0027s on a\n new list and restart the list traversal.  I think that this can be\n solved by pre-fetching the \"next\" field (with proper barriers) before\n checking the hash.\"\n\nThis patch corrects this problem, introducing a new\nsk_for_each_rcu_safenext() macro.\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "271b72c7fa82c2c7a795bc16896149933110672d",
      "tree": "5634b95c04b4a7ac9babf2d8ac34cfb6c38a8f83",
      "parents": [
        "645ca708f936b2fbeb79e52d7823e3eb2c0905f8"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Wed Oct 29 02:11:14 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Oct 29 02:11:14 2008 -0700"
      },
      "message": "udp: RCU handling for Unicast packets.\n\nGoals are :\n\n1) Optimizing handling of incoming Unicast UDP frames, so that no memory\n writes should happen in the fast path.\n\n Note: Multicasts and broadcasts still will need to take a lock,\n because doing a full lockless lookup in this case is difficult.\n\n2) No expensive operations in the socket bind/unhash phases :\n  - No expensive synchronize_rcu() calls.\n\n  - No added rcu_head in socket structure, increasing memory needs,\n  but more important, forcing us to use call_rcu() calls,\n  that have the bad property of making sockets structure cold.\n  (rcu grace period between socket freeing and its potential reuse\n   make this socket being cold in CPU cache).\n  David did a previous patch using call_rcu() and noticed a 20%\n  impact on TCP connection rates.\n  Quoting Cristopher Lameter :\n   \"Right. That results in cacheline cooldown. You\u0027d want to recycle\n    the object as they are cache hot on a per cpu basis. That is screwed\n    up by the delayed regular rcu processing. We have seen multiple\n    regressions due to cacheline cooldown.\n    The only choice in cacheline hot sensitive areas is to deal with the\n    complexity that comes with SLAB_DESTROY_BY_RCU or give up on RCU.\"\n\n  - Because udp sockets are allocated from dedicated kmem_cache,\n  use of SLAB_DESTROY_BY_RCU can help here.\n\nTheory of operation :\n---------------------\n\nAs the lookup is lockfree (using rcu_read_lock()/rcu_read_unlock()),\nspecial attention must be taken by readers and writers.\n\nUse of SLAB_DESTROY_BY_RCU is tricky too, because a socket can be freed,\nreused, inserted in a different chain or in worst case in the same chain\nwhile readers could do lookups in the same time.\n\nIn order to avoid loops, a reader must check each socket found in a chain\nreally belongs to the chain the reader was traversing. If it finds a\nmismatch, lookup must start again at the begining. This *restart* loop\nis the reason we had to use rdlock for the multicast case, because\nwe dont want to send same message several times to the same socket.\n\nWe use RCU only for fast path.\nThus, /proc/net/udp still takes spinlocks.\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "645ca708f936b2fbeb79e52d7823e3eb2c0905f8",
      "tree": "b384696994ee3cb04759a7bfffc29a48e4bf40f6",
      "parents": [
        "b189db5d299c6824780af5590564ff608adb3dea"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Wed Oct 29 01:41:45 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Oct 29 01:41:45 2008 -0700"
      },
      "message": "udp: introduce struct udp_table and multiple spinlocks\n\nUDP sockets are hashed in a 128 slots hash table.\n\nThis hash table is protected by *one* rwlock.\n\nThis rwlock is readlocked each time an incoming UDP message is handled.\n\nThis rwlock is writelocked each time a socket must be inserted in\nhash table (bind time), or deleted from this table (close time)\n\nThis is not scalable on SMP machines :\n\n1) Even in read mode, lock() and unlock() are atomic operations and\n must dirty a contended cache line, shared by all cpus.\n\n2) A writer might be starved if many readers are \u0027in flight\u0027. This can\n happen on a machine with some NIC receiving many UDP messages. User\n process can be delayed a long time at socket creation/dismantle time.\n\nThis patch prepares RCU migration, by introducing \u0027struct udp_table\nand struct udp_hslot\u0027, and using one spinlock per chain, to reduce\ncontention on central rwlock.\n\nIntroducing one spinlock per chain reduces latencies, for port\nrandomization on heavily loaded UDP servers. This also speedup\nbindings to specific ports.\n\nudp_lib_unhash() was uninlined, becoming to big.\n\nSome cleanups were done to ease review of following patch\n(RCUification of UDP Unicast lookups)\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "def8b4faff5ca349beafbbfeb2c51f3602a6ef3a",
      "tree": "a90fbb0b6ae2a49c507465801f31df77bc5ebf9d",
      "parents": [
        "b057efd4d226fcc3a92b0dc6d8ea8e8185ecb260"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Tue Oct 28 13:24:06 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Oct 28 13:24:06 2008 -0700"
      },
      "message": "net: reduce structures when XFRM\u003dn\n\nifdef out\n* struct sk_buff::sp\t\t(pointer)\n* struct dst_entry::xfrm\t(pointer)\n* struct sock::sk_policy\t(2 pointers)\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "c57943a1c96214ee68f3890bb6772841ffbfd606",
      "tree": "bfe79b29240d442c8ea104a89c2e827032b2824e",
      "parents": [
        "b339a47c370ec669f789c5989f54eec1d78574bb"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Tue Oct 07 14:18:42 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Oct 07 14:18:42 2008 -0700"
      },
      "message": "net: wrap sk-\u003esk_backlog_rcv()\n\nWrap calling sk-\u003esk_backlog_rcv() in a function. This will allow extending the\ngeneric sk_backlog_rcv behaviour.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "23542618deb77cfed312842fe8c41ed19fb16470",
      "tree": "9658279a6e3593846a9127c7a8bffb7ce0077d62",
      "parents": [
        "607c4aaf03041c8bd81555a0218050c0f895088e"
      ],
      "author": {
        "name": "KOVACS Krisztian",
        "email": "hidden@sch.bme.hu",
        "time": "Tue Oct 07 12:41:01 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Oct 07 12:41:01 2008 -0700"
      },
      "message": "inet: Don\u0027t lookup the socket if there\u0027s a socket attached to the skb\n\nUse the socket cached in the skb if it\u0027s present.\n\nSigned-off-by: KOVACS Krisztian \u003chidden@sch.bme.hu\u003e\nAcked-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "af01d537463714e36e2c96d2da35902b76cd6827",
      "tree": "6972a43882b0f5809a02d1f3866726cc78c02fe8",
      "parents": [
        "a627266570605a98c5fda5b8234d9e92015e4d14"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Thu Aug 28 02:53:51 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Aug 28 02:53:51 2008 -0700"
      },
      "message": "net: more #ifdef CONFIG_COMPAT\n\nAll users of struct proto::compat_[gs]etsockopt and\nstruct inet_connection_sock_af_ops::compat_[gs]etsockopt are under\n#ifdef already, so use it in structure definition too.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "5c52ba170f8167511bdb65b981f4582100c40675",
      "tree": "1dab120003eb696dfb4ca18c40861274a317739d",
      "parents": [
        "cf1100a7a4f2573f50f9a923b53373977328e3c8"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Wed Jul 16 20:28:10 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jul 16 20:28:10 2008 -0700"
      },
      "message": "sock: add net to prot-\u003eenter_memory_pressure callback\n\nThe tcp_enter_memory_pressure calls NET_INC_STATS, but doesn\u0027t\nhave where to get the net from.\n\nI decided to add a sk argument, not the net itself, only to factor\nall the required sock_net(sk) calls inside the enter_memory_pressure \ncallback itself.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "972692e0db9b0a62329ca394062b58917ddbd03c",
      "tree": "6060599150b57de1f94ed85f8078da098fb8eb6a",
      "parents": [
        "5bbc1722d52ad3df062d5742a7e958276e57ebd7"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jun 17 22:41:38 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jun 17 22:41:38 2008 -0700"
      },
      "message": "net: Add sk_set_socket() helper.\n\nIn order to more easily grep for all things that set\nsk-\u003esk_socket, add sk_set_socket() helper inline function.\n\nSuggested (although only half-seriously) by Evgeniy Polyakov.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "cb61cb9b8b5ef6c2697d84e5015e314626eb2fba",
      "tree": "430dd8d5b56d0a9911750ffcbd97563ce68d1b27",
      "parents": [
        "fe2c802ab62aa63d276deafa905875f3455f2621"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Tue Jun 17 21:04:56 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jun 17 21:04:56 2008 -0700"
      },
      "message": "udp: sk_drops handling\n\nIn commits 33c732c36169d7022ad7d6eb474b0c9be43a2dc1 ([IPV4]: Add raw\ndrops counter) and a92aa318b4b369091fd80433c80e62838db8bc1c ([IPV6]:\nAdd raw drops counter), Wang Chen added raw drops counter for\n/proc/net/raw \u0026 /proc/net/raw6\n\nThis patch adds this capability to UDP sockets too (/proc/net/udp \u0026\n/proc/net/udp6).\n\nThis means that \u0027RcvbufErrors\u0027 errors found in /proc/net/snmp can be also\nbe examined for each udp socket.\n\n# grep Udp: /proc/net/snmp\nUdp: InDatagrams NoPorts InErrors OutDatagrams RcvbufErrors SndbufErrors\nUdp: 23971006 75 899420 16390693 146348 0\n\n# cat /proc/net/udp\n sl  local_address rem_address   st tx_queue rx_queue tr tm-\u003ewhen retrnsmt  ---\nuid  timeout inode ref pointer drops\n 75: 00000000:02CB 00000000:0000 07 00000000:00000000 00:00000000 00000000  ---\n  0        0 2358 2 ffff81082a538c80 0\n111: 00000000:006F 00000000:0000 07 00000000:00000000 00:00000000 00000000  ---\n  0        0 2286 2 ffff81042dd35c80 146348\n\nIn this example, only port 111 (0x006F) was flooded by messages that\nuser program could not read fast enough. 146348 messages were lost.\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "338db085518a8436cdecd33f7b52a06ec16d9ec1",
      "tree": "d8f9c2ea1fa8fe9701e3c7f85452984d98819d1a",
      "parents": [
        "22196d3648581b253f927186b30075fb005287b0"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jun 17 01:09:00 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jun 17 01:09:00 2008 -0700"
      },
      "message": "net: Kill SOCK_SLEEP_PRE and SOCK_SLEEP_POST, no users.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "7d06b2e053d2d536348e3a0f6bb02982a41bea37",
      "tree": "ec6a5c3f448e84cd431a0397b9e2a87ca25aec17",
      "parents": [
        "4ae127d1b6c71f9240dd4245f240e6dd8fc98014"
      ],
      "author": {
        "name": "Brian Haley",
        "email": "brian.haley@hp.com",
        "time": "Sat Jun 14 17:04:49 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Jun 14 17:04:49 2008 -0700"
      },
      "message": "net: change proto destroy method to return void\n\nChange struct proto destroy function pointer to return void.  Noticed\nby Al Viro.\n\nSigned-off-by: Brian Haley \u003cbrian.haley@hp.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    }
  ],
  "next": "65a18ec58e5e6186103f62f720acea94dfb26f4e"
}
