)]}'
{
  "log": [
    {
      "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": "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": "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": "a8147d737bd37bd51bb01737ac9c17a2cfc02a38",
      "tree": "dcdfccc62918b176e1c3a6dc4d8820651a8de200",
      "parents": [
        "e956ea1b7de1df5ae4d6dc3e7460ed9e140803cd"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Tue Jan 26 11:40:06 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jan 26 21:15:59 2010 -0800"
      },
      "message": "net/atm/common.c: checkpatch cleanups\n\nConvert #include \u003casm... to #include \u003clinux...\nMove EXPORT_SYMBOL\nSpacing cleanups\nUse __func__ in printks\nIndent switch/case statements\nMove trailing statements to new line\nHoist assigns from if tests\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "99824461ea72ca0044cc6508f02c0e1cabf37ba5",
      "tree": "8672e525869778c9d4c12fe3982306387995bf2a",
      "parents": [
        "b747caf365b4121903b26d1cd65454c7bc607184"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Tue Jan 26 11:40:00 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jan 26 21:15:56 2010 -0800"
      },
      "message": "net/atm: Convert printk to pr_\u003clevel\u003e\n\nAdd #define pr_fmt(fmt) KBUILD_MODNAME \":%s: \" fmt, __func__\nRemove function names from output\nUse single line pr_debug instead of broken multiple uses without newline\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "3b885787ea4112eaa80945999ea0901bf742707f",
      "tree": "06fc15f8e8083d5652ccb4d06653d9812dce9c0b",
      "parents": [
        "d5e63bded6e819ca77ee1a1d97c783a31f6caf30"
      ],
      "author": {
        "name": "Neil Horman",
        "email": "nhorman@tuxdriver.com",
        "time": "Mon Oct 12 13:26:31 2009 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Oct 12 13:26:31 2009 -0700"
      },
      "message": "net: Generalize socket rx gap / receive queue overflow cmsg\n\nCreate a new socket level option to report number of queue overflows\n\nRecently I augmented the AF_PACKET protocol to report the number of frames lost\non the socket receive queue between any two enqueued frames.  This value was\nexported via a SOL_PACKET level cmsg.  AFter I completed that work it was\nrequested that this feature be generalized so that any datagram oriented socket\ncould make use of this option.  As such I\u0027ve created this patch, It creates a\nnew SOL_SOCKET level option called SO_RXQ_OVFL, which when enabled exports a\nSOL_SOCKET level cmsg that reports the nubmer of times the sk_receive_queue\noverflowed between any two given frames.  It also augments the AF_PACKET\nprotocol to take advantage of this new feature (as it previously did not touch\nsk-\u003esk_drops, which this patch uses to record the overflow count).  Tested\nsuccessfully by me.\n\nNotes:\n\n1) Unlike my previous patch, this patch simply records the sk_drops value, which\nis not a number of drops between packets, but rather a total number of drops.\nDeltas must be computed in user space.\n\n2) While this patch currently works with datagram oriented protocols, it will\nalso be accepted by non-datagram oriented protocols. I\u0027m not sure if thats\nagreeable to everyone, but my argument in favor of doing so is that, for those\nprotocols which aren\u0027t applicable to this option, sk_drops will always be zero,\nand reporting no drops on a receive queue that isn\u0027t used for those\nnon-participating protocols seems reasonable to me.  This also saves us having\nto code in a per-protocol opt in mechanism.\n\n3) This applies cleanly to net-next assuming that commit\n977750076d98c7ff6cbda51858bb5a5894a9d9ab (my af packet cmsg patch) is reverted\n\nSigned-off-by: Neil Horman \u003cnhorman@tuxdriver.com\u003e\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "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": "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": "81e2a3d5b75cbf0b42428b9d5a7cc7c85be9e7a7",
      "tree": "cac92ad222a84f30e129b569cb489652a0ca44ef",
      "parents": [
        "31e6d363abcd0d05766c82f1a9c905a4c974a199"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Wed Jun 17 19:06:12 2009 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Jun 18 00:29:12 2009 -0700"
      },
      "message": "atm: sk_wmem_alloc initial value is one\n\ncommit 2b85a34e911bf483c27cfdd124aeb1605145dc80\n(net: No more expensive sock_hold()/sock_put() on each tx)\nchanged initial sk_wmem_alloc value.\n\nThis broke net/atm since this protocol assumed a null\ninitial value. This patch makes necessary changes.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "61c33e012964ce358b42d2a1e9cd309af5dab02b",
      "tree": "e76ac9b1e61a998def99f0f8f7fa4688fab26494",
      "parents": [
        "df3bc8bd8f8fd17e9b22859d82af38fa702e75b7"
      ],
      "author": {
        "name": "Mitchell Blank Jr",
        "email": "mitch@sfgoth.com",
        "time": "Tue Jun 17 16:20:06 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jun 17 16:20:06 2008 -0700"
      },
      "message": "atm: use const where reasonable\n\nFrom: Mitchell Blank Jr \u003cmitch@sfgoth.com\u003e\n\nSigned-off-by: Chas Williams \u003cchas@cmf.nrl.navy.mil\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "8d8ad9d7c4bfe79bc91b7fc419ecfb9dcdfe6a51",
      "tree": "4b655c4b898e634f39fd170eeb8d06f45b240660",
      "parents": [
        "ce865a61c810c971b47f57c729ec6e9b2d522d94"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Mon Nov 26 20:10:50 2007 +0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 28 14:55:03 2008 -0800"
      },
      "message": "[NET]: Name magic constants in sock_wake_async()\n\nThe sock_wake_async() performs a bit different actions\ndepending on \"how\" argument. Unfortunately this argument\nony has numerical magic values.\n\nI propose to give names to their constants to help people\nreading this function callers understand what\u0027s going on\nwithout looking into this function all the time.\n\nI suppose this is 2.6.25 material, but if it\u0027s not (or the\nnaming seems poor/bad/awful), I can rework it against the\ncurrent net-2.6 tree.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "6257ff2177ff02d7f260a7a501876aa41cb9a9f6",
      "tree": "9d9f80ccf16f3d4ef062e896f62974c5496193ad",
      "parents": [
        "154adbc8469ff21fbf5c958446ee92dbaab01be1"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Thu Nov 01 00:39:31 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Nov 01 00:39:31 2007 -0700"
      },
      "message": "[NET]: Forget the zero_it argument of sk_alloc()\n\nFinally, the zero_it argument can be completely removed from\nthe callers and from the function prototype.\n\nBesides, fix the checkpatch.pl warnings about using the\nassignments inside if-s.\n\nThis patch is rather big, and it is a part of the previous one.\nI splitted it wishing to make the patches more readable. Hope \nthis particular split helped.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "1b8d7ae42d02e483ad94035cca851e4f7fbecb40",
      "tree": "81f8cc0ee49ef99cc67dfed3dc7b7ecb510abf8b",
      "parents": [
        "457c4cbc5a3dde259d2a1f15d5f9785290397267"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Mon Oct 08 23:24:22 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Oct 10 16:49:07 2007 -0700"
      },
      "message": "[NET]: Make socket creation namespace safe.\n\nThis patch passes in the namespace a new socket should be created in\nand has the socket code do the appropriate reference counting.  By\nvirtue of this all socket create methods are touched.  In addition\nthe socket create methods are modified so that they will fail if\nyou attempt to create a socket in a non-default network namespace.\n\nFailing if we attempt to create a socket outside of the default\nnetwork namespace ensures that as we incrementally make the network stack\nnetwork namespace aware we will not export functionality that someone\nhas not audited and made certain is network namespace safe.\nAllowing us to partially enable network namespaces before all of the\nexotic protocols are supported.\n\nAny protocol layers I have missed will fail to compile because I now\npass an extra parameter into the socket creation code.\n\n[ Integrated AF_IUCV build fixes from Andrew Morton... -DaveM ]\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "522400623e240ad134cb4101b1fddc3245d2a7ed",
      "tree": "fb1f341426ae7cd5c977232c8084bf45819d1bea",
      "parents": [
        "23f1f4eff85d3d2ec9ed589e3fdcbba59eaa083e"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@linux-foundation.org",
        "time": "Tue Aug 28 15:22:09 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Oct 10 16:48:27 2007 -0700"
      },
      "message": "[ATM]: Replace DPRINTK() with pr_debug().\n\nGet rid of using DPRINTK macro in ATM and use pr_debug (in kernel.h).\nUsing the standard macro is cleaner and forces code to check for bad arguments\nand formatting.\n\nFixes from Thomas Graf.\n\nSigned-off-by: Stephen Hemminger \u003cshemminger@linux-foundation.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "f7d57453d20e27de69ecafd121005e9d13a0f427",
      "tree": "68fc3b10116cbd4e20411a08fd7f6cc2510c3442",
      "parents": [
        "ed4477b96049fe2908c63f854bf8e37c6df4a635"
      ],
      "author": {
        "name": "YOSHIFUJI Hideaki",
        "email": "yoshfuji@linux-ipv6.org",
        "time": "Fri Feb 09 23:24:29 2007 +0900"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Sat Feb 10 23:19:16 2007 -0800"
      },
      "message": "[NET] ATM: Fix whitespace errors.\n\nSigned-off-by: YOSHIFUJI Hideaki \u003cyoshfuji@linux-ipv6.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "84ff602efba2664762070add0600aa5c870a2659",
      "tree": "c4ca2f4acb4210edce543e677a7308de6ee4211c",
      "parents": [
        "f5a6e01c093ca60c0cab15c47c8e7e199fbbc9e6"
      ],
      "author": {
        "name": "Daniel Walker",
        "email": "dwalker@mvista.com",
        "time": "Mon Feb 05 18:04:06 2007 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Thu Feb 08 12:38:53 2007 -0800"
      },
      "message": "[ATM]: Fix for crash in adummy_init()\n\nThis was reported by Ingo Molnar here,\n\nhttp://lkml.org/lkml/2006/12/18/119\n\nThe problem is that adummy_init() depends on atm_init() , but adummy_init()\nis called first.\n\nSo I put atm_init() into subsys_initcall which seems appropriate, and it\nwill still get module_init() if it becomes a module.\n\nInteresting to note that you could crash your system here if you just load\nthe modules in the wrong order.\n\nSigned-off-by: Daniel Walker \u003cdwalker@mvista.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "6ab3d5624e172c553004ecc862bfeac16d9d68b7",
      "tree": "6d98881fe91fd9583c109208d5c27131b93fa248",
      "parents": [
        "e02169b682bc448ccdc819dc8639ed34a23cedd8"
      ],
      "author": {
        "name": "Jörn Engel",
        "email": "joern@wohnheim.fh-wedel.de",
        "time": "Fri Jun 30 19:25:36 2006 +0200"
      },
      "committer": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Fri Jun 30 19:25:36 2006 +0200"
      },
      "message": "Remove obsolete #include \u003clinux/config.h\u003e\n\nSigned-off-by: Jörn Engel \u003cjoern@wohnheim.fh-wedel.de\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\n"
    },
    {
      "commit": "656d98b09d57d4e1185c5d2436a42600d48fbcb5",
      "tree": "42c8795ea142e6c0a002bcdb26d255e2b8693e4c",
      "parents": [
        "d17f086550a6fdb13fe82371d60ebf80904c6f96"
      ],
      "author": {
        "name": "Roman Kagan",
        "email": "rkagan@mail.ru",
        "time": "Thu Jun 29 12:36:34 2006 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Thu Jun 29 16:58:19 2006 -0700"
      },
      "message": "[ATM]: basic sysfs support for ATM devices\n\nSigned-off-by: Chas Williams \u003cchas@cmf.nrl.navy.mil\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "57b47a53ec4a67691ba32cff5768e8d78fa6c67f",
      "tree": "d735ae4734f7b386eefa508a0629715f45808d1d",
      "parents": [
        "6613f82dd293b23f582a649b287fadbf8d23e6cf"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Mar 20 22:35:41 2006 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Mar 20 22:35:41 2006 -0800"
      },
      "message": "[NET]: sem2mutex part 2\n\nSemaphore to mutex conversion.\n\nThe conversion was generated via scripts, and the result was validated\nautomatically via a script as well.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "64bf69ddff7637b7ed7acf9b2a823cc0ee519439",
      "tree": "fb3a746e36bcfa307979bef2a20ce5f1d32ec537",
      "parents": [
        "aaaaaadbe7a663d110814db50fcbe7d320eb4c32"
      ],
      "author": {
        "name": "Stanislaw Gruszka",
        "email": "stf_xl@wp.pl",
        "time": "Tue Nov 29 16:16:41 2005 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Nov 29 16:16:41 2005 -0800"
      },
      "message": "[ATM]: deregistration removes device from atm_devs list immediately\n\natm_dev_deregister() removes device from atm_dev list immediately to\nprevent operations on a phantom device.  Decision to free device based\nonly on -\u003erefcnt  now. Remove shutdown_atm_dev() use atm_dev_deregister()\ninstead.  atm_dev_deregister() also asynchronously releases all vccs\nrelated to device.\n\nSigned-off-by: Stanislaw Gruszka \u003cstf_xl@wp.pl\u003e\nSigned-off-by: Chas Williams \u003cchas@cmf.nrl.navy.mil\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "aaaaaadbe7a663d110814db50fcbe7d320eb4c32",
      "tree": "316bdbd49e3a6ac7a78cad8797d148f79a343d45",
      "parents": [
        "49693280262a149e5430d3401e263e464c88334a"
      ],
      "author": {
        "name": "Stanislaw Gruszka",
        "email": "stf_xl@wp.pl",
        "time": "Tue Nov 29 16:16:21 2005 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Nov 29 16:16:21 2005 -0800"
      },
      "message": "[ATM]: avoid race conditions related to atm_devs list\n\nUse semaphore to protect atm_devs list, as no one need access to it from\ninterrupt context.  Avoid race conditions between atm_dev_register(),\natm_dev_lookup() and atm_dev_deregister().  Fix double spin_unlock() bug.\n\nSigned-off-by: Stanislaw Gruszka \u003cstf_xl@wp.pl\u003e\nSigned-off-by: Chas Williams \u003cchas@cmf.nrl.navy.mil\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "50accc9c428273501dd2a6295c84a533dd1fe645",
      "tree": "54a94b2c84b3a7af78887383b4c828e0a4953fe1",
      "parents": [
        "e91a73568b19b4a8145fc6e05314d522ee35a0b1"
      ],
      "author": {
        "name": "Mitchell Blank Jr",
        "email": "mitch@sfgoth.com",
        "time": "Tue Nov 29 16:15:18 2005 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Nov 29 16:15:18 2005 -0800"
      },
      "message": "[ATM]: attempt to autoload atm drivers\n\nFrom: Mitchell Blank Jr \u003cmitch@sfgoth.com\u003e\nSigned-off-by: Chas Williams \u003cchas@cmf.nrl.navy.mil\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "c9933d0856d6d0ede6b4b30e5e7330614f5203af",
      "tree": "5f31d09df861fd83fc327a7eb5b5ac12bfc4188e",
      "parents": [
        "18955cfcb2a5d75a08e0cb297f13ccfb6904de48"
      ],
      "author": {
        "name": "Mitchell Blank Jr",
        "email": "mitch@sfgoth.com",
        "time": "Tue Nov 29 16:13:32 2005 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Nov 29 16:13:32 2005 -0800"
      },
      "message": "[ATM]: always return the first interface for ATM_ITF_ANY\n\nFrom: Mitchell Blank Jr \u003cmitch@sfgoth.com\u003e\nSigned-off-by: Chas Williams \u003cchas@cmf.nrl.navy.mil\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "81c3d5470ecc70564eb9209946730fe2be93ad06",
      "tree": "1efa553c305a6453769dacfaf580bc6ccf146d82",
      "parents": [
        "399de50bbbb2501a6db43daaa8a2dafbc9bcfe0c"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Mon Oct 03 14:13:38 2005 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Oct 03 14:13:38 2005 -0700"
      },
      "message": "[INET]: speedup inet (tcp/dccp) lookups\n\nArnaldo and I agreed it could be applied now, because I have other\npending patches depending on this one (Thank you Arnaldo)\n\n(The other important patch moves skc_refcnt in a separate cache line,\nso that the SMP/NUMA performance doesnt suffer from cache line ping pongs)\n\n1) First some performance data :\n--------------------------------\n\ntcp_v4_rcv() wastes a *lot* of time in __inet_lookup_established()\n\nThe most time critical code is :\n\nsk_for_each(sk, node, \u0026head-\u003echain) {\n     if (INET_MATCH(sk, acookie, saddr, daddr, ports, dif))\n         goto hit; /* You sunk my battleship! */\n}\n\nThe sk_for_each() does use prefetch() hints but only the begining of\n\"struct sock\" is prefetched.\n\nAs INET_MATCH first comparison uses inet_sk(__sk)-\u003edaddr, wich is far\naway from the begining of \"struct sock\", it has to bring into CPU\ncache cold cache line. Each iteration has to use at least 2 cache\nlines.\n\nThis can be problematic if some chains are very long.\n\n2) The goal\n-----------\n\nThe idea I had is to change things so that INET_MATCH() may return\nFALSE in 99% of cases only using the data already in the CPU cache,\nusing one cache line per iteration.\n\n3) Description of the patch\n---------------------------\n\nAdds a new \u0027unsigned int skc_hash\u0027 field in \u0027struct sock_common\u0027,\nfilling a 32 bits hole on 64 bits platform.\n\nstruct sock_common {\n\tunsigned short\t\tskc_family;\n\tvolatile unsigned char\tskc_state;\n\tunsigned char\t\tskc_reuse;\n\tint\t\t\tskc_bound_dev_if;\n\tstruct hlist_node\tskc_node;\n\tstruct hlist_node\tskc_bind_node;\n\tatomic_t\t\tskc_refcnt;\n+\tunsigned int\t\tskc_hash;\n\tstruct proto\t\t*skc_prot;\n};\n\nStore in this 32 bits field the full hash, not masked by (ehash_size -\n1) Using this full hash as the first comparison done in INET_MATCH\npermits us immediatly skip the element without touching a second cache\nline in case of a miss.\n\nSuppress the sk_hashent/tw_hashent fields since skc_hash (aliased to\nsk_hash and tw_hash) already contains the slot number if we mask with\n(ehash_size - 1)\n\nFile include/net/inet_hashtables.h\n\n64 bits platforms :\n#define INET_MATCH(__sk, __hash, __cookie, __saddr, __daddr, __ports, __dif)\\\n     (((__sk)-\u003esk_hash \u003d\u003d (__hash))\n     ((*((__u64 *)\u0026(inet_sk(__sk)-\u003edaddr)))\u003d\u003d (__cookie))   \u0026\u0026  \\\n     ((*((__u32 *)\u0026(inet_sk(__sk)-\u003edport))) \u003d\u003d (__ports))   \u0026\u0026  \\\n     (!((__sk)-\u003esk_bound_dev_if) || ((__sk)-\u003esk_bound_dev_if \u003d\u003d (__dif))))\n\n32bits platforms:\n#define TCP_IPV4_MATCH(__sk, __hash, __cookie, __saddr, __daddr, __ports, __dif)\\\n     (((__sk)-\u003esk_hash \u003d\u003d (__hash))                 \u0026\u0026  \\\n     (inet_sk(__sk)-\u003edaddr          \u003d\u003d (__saddr))   \u0026\u0026  \\\n     (inet_sk(__sk)-\u003ercv_saddr      \u003d\u003d (__daddr))   \u0026\u0026  \\\n     (!((__sk)-\u003esk_bound_dev_if) || ((__sk)-\u003esk_bound_dev_if \u003d\u003d (__dif))))\n\n\n- Adds a prefetch(head-\u003echain.first) in \n__inet_lookup_established()/__tcp_v4_check_established() and \n__inet6_lookup_established()/__tcp_v6_check_established() and \n__dccp_v4_check_established() to bring into cache the first element of the \nlist, before the {read|write}_lock(\u0026head-\u003elock);\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nAcked-by: Arnaldo Carvalho de Melo \u003cacme@ghostprotocols.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "9301e320e98ff19a0e48881b038d0c24ca76e6c0",
      "tree": "b625aa1cb6dab99f343cdf85e0f32e7838a7ad93",
      "parents": [
        "e2c4b72158a9f1286df41dee478e774f1b94e93a"
      ],
      "author": {
        "name": "Chas Williams",
        "email": "chas@cmf.nrl.navy.mil",
        "time": "Wed Sep 28 16:35:01 2005 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Sep 28 16:35:01 2005 -0700"
      },
      "message": "[ATM]: track and close listen sockets when sigd exits\n\nSigned-off-by: Chas Williams \u003cchas@cmf.nrl.navy.mil\u003e\n"
    },
    {
      "commit": "e49332bd12e92da2df6d002f857ec62675ba2648",
      "tree": "f975cc5e4d93fc33e80f7213d2013e035bfc3ae7",
      "parents": [
        "a71c1ab50a2a0f4dd9834bf5a917a2f064535c6b"
      ],
      "author": {
        "name": "Jesper Juhl",
        "email": "juhl-lkml@dif.dk",
        "time": "Sun May 01 08:59:08 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sun May 01 08:59:08 2005 -0700"
      },
      "message": "[PATCH] misc verify_area cleanups\n\nThere were still a few comments left refering to verify_area, and two\nfunctions, verify_area_skas \u0026 verify_area_tt that just wrap corresponding\naccess_ok_skas \u0026 access_ok_tt functions, just like verify_area does for\naccess_ok - deprecate those.\n\nThere was also a few places that still used verify_area in commented-out\ncode, fix those up to use access_ok.\n\nAfter applying this one there should not be anything left but finally\nremoving verify_area completely, which will happen after a kernel release\nor two.\n\nSigned-off-by: Jesper Juhl \u003cjuhl-lkml@dif.dk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "1da177e4c3f41524e886b7f1b8a0c1fc7321cac2",
      "tree": "0bba044c4ce775e45a88a51686b5d9f90697ea9d",
      "parents": [],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "message": "Linux-2.6.12-rc2\n\nInitial git repository build. I\u0027m not bothering with the full history,\neven though we have it. We can create a separate \"historical\" git\narchive of that later if we want to, and in the meantime it\u0027s about\n3.2GB when imported into git - space that would just make the early\ngit days unnecessarily complicated, when we don\u0027t have a lot of good\ninfrastructure for it.\n\nLet it rip!\n"
    }
  ]
}
