)]}'
{
  "log": [
    {
      "commit": "8dcf01fc009d12d01fd195ed95eaaee61178f21a",
      "tree": "daa9665ec6c4fe8ca17232242c8b3126e7b14076",
      "parents": [
        "808db80a7eeff8314ac51654bfefc864582eea13"
      ],
      "author": {
        "name": "Shan Wei",
        "email": "davidshan@tencent.com",
        "time": "Tue Apr 24 18:21:07 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Apr 25 20:46:59 2012 -0400"
      },
      "message": "net: sock_diag_handler structs can be const\n\nread only, so change it to const.\n\nSigned-off-by: Shan Wei \u003cdavidshan@tencent.com\u003e\nAcked-by: Pavel Emelyanov \u003cxemul@parallels.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "ec8f23ce0f4005b74013d4d122e0d540397a93c9",
      "tree": "c2f22aa08ad4c0197d3cb41b91cf8d436794fde1",
      "parents": [
        "f99e8f715a5c7ebad5410b1e9b4d744ddb284f54"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Thu Apr 19 13:44:49 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Apr 20 21:22:30 2012 -0400"
      },
      "message": "net: Convert all sysctl registrations to register_net_sysctl\n\nThis results in code with less boiler plate that is a bit easier\nto read.\n\nAdditionally stops us from using compatibility code in the sysctl\ncore, hastening the day when the compatibility code can be removed.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nAcked-by: Pavel Emelyanov \u003cxemul@parallels.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "5dd3df105b9f6cb7dd2472b59e028d0d1c878ecb",
      "tree": "b12606e6e74ee6d07823eb268e09d899946279fd",
      "parents": [
        "4344475797a16ef948385780943f7a5cf09f0675"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Thu Apr 19 13:24:33 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Apr 20 21:21:17 2012 -0400"
      },
      "message": "net: Move all of the network sysctls without a namespace into init_net.\n\nThis makes it clearer which sysctls are relative to your current network\nnamespace.\n\nThis makes it a little less error prone by not exposing sysctls for the\ninitial network namespace in other namespaces.\n\nThis is the same way we handle all of our other network interfaces to\nuserspace and I can\u0027t honestly remember why we didn\u0027t do this for\nsysctls right from the start.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nAcked-by: Pavel Emelyanov \u003cxemul@parallels.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "95c961747284a6b83a5e2d81240e214b0fa3464d",
      "tree": "c7be86a00db3605a48a03109fafcbe31039ca2e0",
      "parents": [
        "5e73ea1a31c3612aa6dfe44f864ca5b7b6a4cff9"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Sun Apr 15 05:58:06 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Apr 15 12:44:40 2012 -0400"
      },
      "message": "net: cleanup unsigned to unsigned int\n\nUse of \"unsigned int\" is preferred to bare \"unsigned\" in net tree.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "eb6a24816b247c0be6b2e97e68933072874bbe54",
      "tree": "c815981e955e9e32d1b9bd279bd18a358038e031",
      "parents": [
        "edbc0bb3fb72ec4645a242520cf1d0b9b6b02261"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Tue Apr 03 05:28:28 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Apr 03 16:43:18 2012 -0400"
      },
      "message": "af_unix: reduce high order page allocations\n\nunix_dgram_sendmsg() currently builds linear skbs, and this can stress\npage allocator with high order page allocations. When memory gets\nfragmented, this can eventually fail.\n\nWe can try to use order-2 allocations for skb head (SKB_MAX_ALLOC) plus\nup to 16 page fragments to lower pressure on buddy allocator.\n\nThis patch has no effect on messages of less than 16064 bytes.\n(on 64bit arches with PAGE_SIZE\u003d4096)\n\nFor bigger messages (from 16065 to 81600 bytes), this patch brings\nreliability at the expense of performance penalty because of extra pages\nallocations.\n\nnetperf -t DG_STREAM -T 0,2 -- -m 16064 -s 200000\n-\u003e4086040 Messages / 10s\n\nnetperf -t DG_STREAM -T 0,2 -- -m 16068 -s 200000\n-\u003e3901747 Messages / 10s\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "626cf236608505d376e4799adb4f7eb00a8594af",
      "tree": "eb0421fec1a7fed05cd9ea785bd18b5f40c80971",
      "parents": [
        "5cde7656d0dd222170eb0250bd1f70c9018fd438"
      ],
      "author": {
        "name": "Hans Verkuil",
        "email": "hans.verkuil@cisco.com",
        "time": "Fri Mar 23 15:02:27 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 23 16:58:38 2012 -0700"
      },
      "message": "poll: add poll_requested_events() and poll_does_not_wait() functions\n\nIn some cases the poll() implementation in a driver has to do different\nthings depending on the events the caller wants to poll for.  An example\nis when a driver needs to start a DMA engine if the caller polls for\nPOLLIN, but doesn\u0027t want to do that if POLLIN is not requested but instead\nonly POLLOUT or POLLPRI is requested.  This is something that can happen\nin the video4linux subsystem among others.\n\nUnfortunately, the current epoll/poll/select implementation doesn\u0027t\nprovide that information reliably.  The poll_table_struct does have it: it\nhas a key field with the event mask.  But once a poll() call matches one\nor more bits of that mask any following poll() calls are passed a NULL\npoll_table pointer.\n\nAlso, the eventpoll implementation always left the key field at ~0 instead\nof using the requested events mask.\n\nThis was changed in eventpoll.c so the key field now contains the actual\nevents that should be polled for as set by the caller.\n\nThe solution to the NULL poll_table pointer is to set the qproc field to\nNULL in poll_table once poll() matches the events, not the poll_table\npointer itself.  That way drivers can obtain the mask through a new\npoll_requested_events inline.\n\nThe poll_table_struct can still be NULL since some kernel code calls it\ninternally (netfs_state_poll() in ./drivers/staging/pohmelfs/netfs.h).  In\nthat case poll_requested_events() returns ~0 (i.e.  all events).\n\nVery rarely drivers might want to know whether poll_wait will actually\nwait.  If another earlier file descriptor in the set already matched the\nevents the caller wanted to wait for, then the kernel will return from the\nselect() call without waiting.  This might be useful information in order\nto avoid doing expensive work.\n\nA new helper function poll_does_not_wait() is added that drivers can use\nto detect this situation.  This is now used in sock_poll_wait() in\ninclude/net/sock.h.  This was the only place in the kernel that needed\nthis information.\n\nDrivers should no longer access any of the poll_table internals, but use\nthe poll_requested_events() and poll_does_not_wait() access functions\ninstead.  In order to enforce that the poll_table fields are now prepended\nwith an underscore and a comment was added warning against using them\ndirectly.\n\nThis required a change in unix_dgram_poll() in unix/af_unix.c which used\nthe key field to get the requested events.  It\u0027s been replaced by a call\nto poll_requested_events().\n\nFor qproc it was especially important to change its name since the\nbehavior of that field changes with this patch since this function pointer\ncan now be NULL when that wasn\u0027t possible in the past.\n\nAny driver accessing the qproc or key fields directly will now fail to compile.\n\nSome notes regarding the correctness of this patch: the driver\u0027s poll()\nfunction is called with a \u0027struct poll_table_struct *wait\u0027 argument.  This\npointer may or may not be NULL, drivers can never rely on it being one or\nthe other as that depends on whether or not an earlier file descriptor in\nthe select()\u0027s fdset matched the requested events.\n\nThere are only three things a driver can do with the wait argument:\n\n1) obtain the key field:\n\n\tevents \u003d wait ? wait-\u003ekey : ~0;\n\n   This will still work although it should be replaced with the new\n   poll_requested_events() function (which does exactly the same).\n   This will now even work better, since wait is no longer set to NULL\n   unnecessarily.\n\n2) use the qproc callback. This could be deadly since qproc can now be\n   NULL. Renaming qproc should prevent this from happening. There are no\n   kernel drivers that actually access this callback directly, BTW.\n\n3) test whether wait \u003d\u003d NULL to determine whether poll would return without\n   waiting. This is no longer sufficient as the correct test is now\n   wait \u003d\u003d NULL || wait-\u003e_qproc \u003d\u003d NULL.\n\n   However, the worst that can happen here is a slight performance hit in\n   the case where wait !\u003d NULL and wait-\u003e_qproc \u003d\u003d NULL. In that case the\n   driver will assume that poll_wait() will actually add the fd to the set\n   of waiting file descriptors. Of course, poll_wait() will not do that\n   since it tests for wait-\u003e_qproc. This will not break anything, though.\n\n   There is only one place in the whole kernel where this happens\n   (sock_poll_wait() in include/net/sock.h) and that code will be replaced\n   by a call to poll_does_not_wait() in the next patch.\n\n   Note that even if wait-\u003e_qproc !\u003d NULL drivers cannot rely on poll_wait()\n   actually waiting. The next file descriptor from the set might match the\n   event mask and thus any possible waits will never happen.\n\nSigned-off-by: Hans Verkuil \u003chans.verkuil@cisco.com\u003e\nReviewed-by: Jonathan Corbet \u003ccorbet@lwn.net\u003e\nReviewed-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nSigned-off-by: Hans de Goede \u003chdegoede@redhat.com\u003e\nCc: Mauro Carvalho Chehab \u003cmchehab@infradead.org\u003e\nCc: David Miller \u003cdavem@davemloft.net\u003e\nCc: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e2a0883e4071237d09b604a342c28b96b44a04b3",
      "tree": "aa56f4d376b5eb1c32358c19c2669c2a94e0e1fd",
      "parents": [
        "3a990a52f9f25f45469e272017a31e7a3fda60ed",
        "07c0c5d8b8c122b2f2df9ee574ac3083daefc981"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 13:36:41 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 13:36:41 2012 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs\n\nPull vfs pile 1 from Al Viro:\n \"This is _not_ all; in particular, Miklos\u0027 and Jan\u0027s stuff is not there\n  yet.\"\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (64 commits)\n  ext4: initialization of ext4_li_mtx needs to be done earlier\n  debugfs-related mode_t whack-a-mole\n  hfsplus: add an ioctl to bless files\n  hfsplus: change finder_info to u32\n  hfsplus: initialise userflags\n  qnx4: new helper - try_extent()\n  qnx4: get rid of qnx4_bread/qnx4_getblk\n  take removal of PF_FORKNOEXEC to flush_old_exec()\n  trim includes in inode.c\n  um: uml_dup_mmap() relies on -\u003emmap_sem being held, but activate_mm() doesn\u0027t hold it\n  um: embed -\u003estub_pages[] into mmu_context\n  gadgetfs: list_for_each_safe() misuse\n  ocfs2: fix leaks on failure exits in module_init\n  ecryptfs: make register_filesystem() the last potential failure exit\n  ntfs: forgets to unregister sysctls on register_filesystem() failure\n  logfs: missing cleanup on register_filesystem() failure\n  jfs: mising cleanup on register_filesystem() failure\n  make configfs_pin_fs() return root dentry on success\n  configfs: configfs_create_dir() has parent dentry in dentry-\u003ed_parent\n  configfs: sanitize configfs_create()\n  ...\n"
    },
    {
      "commit": "68ac1234fb949b66941d94dce4157742799fc581",
      "tree": "04059b7dbaed92d672b8ceef1fcf25c6185e06f8",
      "parents": [
        "40ffe67d2e89c7a475421d007becc11a2f88ea3d"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Mar 15 08:21:57 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Mar 20 21:29:41 2012 -0400"
      },
      "message": "switch touch_atime to struct path\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "40ffe67d2e89c7a475421d007becc11a2f88ea3d",
      "tree": "5373e71b18895b9ffd8370a88aec6c54438240a0",
      "parents": [
        "38eff2892628fa5c4fc8962a17b7296f42833ebe"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Mar 14 21:54:32 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Mar 20 21:29:41 2012 -0400"
      },
      "message": "switch unix_sock to struct path\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "80d326fab534a5380e8f6e509a0b9076655a9670",
      "tree": "57c636de934b3f8abb7db9bcde64360ecc4eaf66",
      "parents": [
        "48e316bc2e045206248c6c75c0d5bbc0c9ddc32c"
      ],
      "author": {
        "name": "Pablo Neira Ayuso",
        "email": "pablo@netfilter.org",
        "time": "Fri Feb 24 14:30:15 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Feb 26 14:10:06 2012 -0500"
      },
      "message": "netlink: add netlink_dump_control structure for netlink_dump_start()\n\nDavem considers that the argument list of this interface is getting\nout of control. This patch tries to address this issue following\nhis proposal:\n\nstruct netlink_dump_control c \u003d { .dump \u003d dump, .done \u003d done, ... };\n\nnetlink_dump_start(..., \u0026c);\n\nSuggested by David S. Miller.\n\nSigned-off-by: Pablo Neira Ayuso \u003cpablo@netfilter.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "9f6f9af7694ede6314bed281eec74d588ba9474f",
      "tree": "4b1825f2432916f117f9104153b9c37cf58458ae",
      "parents": [
        "cdf49c283e2e105da86ca575ad35b453f5ff24ea"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Tue Feb 21 23:24:55 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Feb 22 14:47:02 2012 -0500"
      },
      "message": "af_unix: MSG_TRUNC support for dgram sockets\n\nPiergiorgio Beruto expressed the need to fetch size of first datagram in\nqueue for AF_UNIX sockets and suggested a patch against SIOCINQ ioctl.\n\nI suggested instead to implement MSG_TRUNC support as a recv() input\nflag, as already done for RAW, UDP \u0026 NETLINK sockets.\n\nlen \u003d recv(fd, \u0026byte, 1, MSG_PEEK | MSG_TRUNC);\n\nMSG_TRUNC asks recv() to return the real length of the packet, even when\nis was longer than the passed buffer.\n\nThere is risk that a userland application used MSG_TRUNC by accident\n(since it had no effect on af_unix sockets) and this might break after\nthis patch.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nTested-by: Piergiorgio Beruto \u003cpiergiorgio.beruto@gmail.com\u003e\nCC: Michael Kerrisk \u003cmtk.manpages@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "fc0d753641f7b919c7273d9bd21ae6ab45e757f3",
      "tree": "75ad4f14627fa05d39533177523dfd3d2454fa68",
      "parents": [
        "f55bb7f9cb82dec2f2e803d7bd0fc5929248e4d8"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@parallels.com",
        "time": "Tue Feb 21 07:32:06 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Feb 21 15:03:58 2012 -0500"
      },
      "message": "unix: Support peeking offset for stream sockets\n\nThe same here -- we can protect the sk_peek_off manipulations with\nthe unix_sk-\u003ereadlock mutex.\n\nThe peeking of data from a stream socket is done in the datagram style,\ni.e. even if there\u0027s enough room for more data in the user buffer, only\nthe head skb\u0027s data is copied in there. This feature is preserved when\npeeking data from a given offset -- the data is read till the nearest\nskb\u0027s boundary.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@parallels.com\u003e\nAcked-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "f55bb7f9cb82dec2f2e803d7bd0fc5929248e4d8",
      "tree": "25b5f83aa834490eb6a07e52db93b972e16e498f",
      "parents": [
        "ef64a54f6e558155b4f149bb10666b9e914b6c54"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@parallels.com",
        "time": "Tue Feb 21 07:31:51 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Feb 21 15:03:58 2012 -0500"
      },
      "message": "unix: Support peeking offset for datagram and seqpacket sockets\n\nThe sk_peek_off manipulations are protected with the unix_sk-\u003ereadlock mutex.\nThis mutex is enough since all we need is to syncronize setting the offset\nvs reading the queue head. The latter is fully covered with the mentioned lock.\n\nThe recently added __skb_recv_datagram\u0027s offset is used to pick the skb to\nread the data from.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@parallels.com\u003e\nAcked-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "6f01fd6e6f6809061b56e78f1e8d143099716d70",
      "tree": "bd6b09a01a5f1af65fc12c6ac533f2b1f4caa777",
      "parents": [
        "5b35e1e6e9ca651e6b291c96d1106043c9af314a"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Sat Jan 28 16:11:03 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 30 12:45:07 2012 -0500"
      },
      "message": "af_unix: fix EPOLLET regression for stream sockets\n\nCommit 0884d7aa24 (AF_UNIX: Fix poll blocking problem when reading from\na stream socket) added a regression for epoll() in Edge Triggered mode\n(EPOLLET)\n\nAppropriate fix is to use skb_peek()/skb_unlink() instead of\nskb_dequeue(), and only call skb_unlink() when skb is fully consumed.\n\nThis remove the need to requeue a partial skb into sk_receive_queue head\nand the extra sk-\u003esk_data_ready() calls that added the regression.\n\nThis is safe because once skb is given to sk_receive_queue, it is not\nmodified by a writer, and readers are serialized by u-\u003ereadlock mutex.\n\nThis also reduce number of spinlock acquisition for small reads or\nMSG_PEEK users so should improve overall performance.\n\nReported-by: Nick Mathewson \u003cnickm@freehaven.net\u003e\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nCc: Alexey Moiseytsev \u003chimeraster@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "38e5781bbf8e82c1635ea845e0d07b2228a5ac7a",
      "tree": "69ced9c509c864a67122c5e1337f14cd1d9e988d",
      "parents": [
        "979ecef5b89a8003902299566d9cdc08de34a3ee",
        "a8c1f65c79cbbb2f7da782d4c9d15639a9b94b27"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jan 09 14:46:52 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jan 09 14:46:52 2012 -0800"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net:\n  igmp: Avoid zero delay when receiving odd mixture of IGMP queries\n  netdev: make net_device_ops const\n  bcm63xx: make ethtool_ops const\n  usbnet: make ethtool_ops const\n  net: Fix build with INET disabled.\n  net: introduce netif_addr_lock_nested() and call if when appropriate\n  net: correct lock name in dev_[uc/mc]_sync documentations.\n  net: sk_update_clone is only used in net/core/sock.c\n  8139cp: fix missing napi_gro_flush.\n  pktgen: set correct max and min in pktgen_setup_inject()\n  smsc911x: Unconditionally include linux/smscphy.h in smsc911x.h\n  asix: fix infinite loop in rx_fixup()\n  net: Default UDP and UNIX diag to \u0027n\u0027.\n  r6040: fix typo in use of MCR0 register bits\n  net: fix sock_clone reference mismatch with tcp memcontrol\n"
    },
    {
      "commit": "972b2c719990f91eb3b2310d44ef8a2d38955a14",
      "tree": "b25a250ec5bec4b7b6355d214642d8b57c5cab32",
      "parents": [
        "02550d61f49266930e674286379d3601006b2893",
        "c3aa077648e147783a7a53b409578234647db853"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jan 08 12:19:57 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jan 08 12:19:57 2012 -0800"
      },
      "message": "Merge branch \u0027for-linus2\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs\n\n* \u0027for-linus2\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (165 commits)\n  reiserfs: Properly display mount options in /proc/mounts\n  vfs: prevent remount read-only if pending removes\n  vfs: count unlinked inodes\n  vfs: protect remounting superblock read-only\n  vfs: keep list of mounts for each superblock\n  vfs: switch -\u003eshow_options() to struct dentry *\n  vfs: switch -\u003eshow_path() to struct dentry *\n  vfs: switch -\u003eshow_devname() to struct dentry *\n  vfs: switch -\u003eshow_stats to struct dentry *\n  switch security_path_chmod() to struct path *\n  vfs: prefer -\u003edentry-\u003ed_sb to -\u003emnt-\u003emnt_sb\n  vfs: trim includes a bit\n  switch mnt_namespace -\u003eroot to struct mount\n  vfs: take /proc/*/mounts and friends to fs/proc_namespace.c\n  vfs: opencode mntget() mnt_set_mountpoint()\n  vfs: spread struct mount - remaining argument of next_mnt()\n  vfs: move fsnotify junk to struct mount\n  vfs: move mnt_devname\n  vfs: move mnt_list to struct mount\n  vfs: switch pnode.h macros to struct mount *\n  ...\n"
    },
    {
      "commit": "6d62a66e4211546f9e5c5d1ad586749a51cf30db",
      "tree": "3d258aa96a35435ec4a372a9ffe016161a66db8e",
      "parents": [
        "77e1e438cbb1b8f9b7a3bb2d4f0264d1dd952d75"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Jan 07 12:13:06 2012 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Jan 07 12:13:06 2012 -0800"
      },
      "message": "net: Default UDP and UNIX diag to \u0027n\u0027.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "04fc66e789a896e684bfdca30208e57eb832dd96",
      "tree": "37c26bff07e48c8c25d147850b7906d0d1c79a81",
      "parents": [
        "4572befe248fd0d94aedc98775e3f0ddc8a26651"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Nov 21 14:58:38 2011 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jan 03 22:55:19 2012 -0500"
      },
      "message": "switch -\u003epath_mknod() to umode_t\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "c9da99e6475f92653139e43f3c30c0cd011a0fd8",
      "tree": "d78e4097afdcba4a3a4dd2303cc8bd475331b75a",
      "parents": [
        "885ee74d5d3058e4a904671ed7929c9540c95fa5"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@parallels.com",
        "time": "Fri Dec 30 00:54:39 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Dec 30 16:46:02 2011 -0500"
      },
      "message": "unix_diag: Fixup RQLEN extension report\n\nWhile it\u0027s not too late fix the recently added RQLEN diag extension\nto report rqlen and wqlen in the same way as TCP does.\n\nI.e. for listening sockets the ack backlog length (which is the input\nqueue length for socket) in rqlen and the max ack backlog length in\nwqlen, and what the CINQ/OUTQ ioctls do for established.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@parallels.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "885ee74d5d3058e4a904671ed7929c9540c95fa5",
      "tree": "83420dadda4c863a7bcebedf291f4d7009ffbb5f",
      "parents": [
        "257b529876cb45ec791eaa89e3d2ee0d16b49383"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@parallels.com",
        "time": "Fri Dec 30 00:54:11 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Dec 30 16:45:45 2011 -0500"
      },
      "message": "af_unix: Move CINQ/COUTQ code to helpers\n\nCurrently tcp diag reports rqlen and wqlen values similar to how\nthe CINQ/COUTQ iotcls do. To make unix diag report these values\nin the same way move the respective code into helpers.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@parallels.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "257b529876cb45ec791eaa89e3d2ee0d16b49383",
      "tree": "a052a1d16ae992cbfa5234af0cbfcea3a6cff6d7",
      "parents": [
        "c0636faa539ec4205ec50e80844a5b0454b4bbaa"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@parallels.com",
        "time": "Fri Dec 30 09:27:43 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Dec 30 16:44:24 2011 -0500"
      },
      "message": "unix_diag: Add the MEMINFO extension\n\n[ Fix indentation of sock_diag*() calls. -DaveM ]\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@parallels.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "e09e9d189bc2d31dc365a3d846a09086317350b6",
      "tree": "f0ef78c8b75cde8210ee5832d8b4c82c466c46f1",
      "parents": [
        "3b0723c12e825e26aa5fc0c6970108425824b51d"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Dec 26 14:41:55 2011 -0500"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Dec 26 14:41:55 2011 -0500"
      },
      "message": "unix: If we happen to find peer NULL when diag dumping, write zero.\n\nOtherwise we leave uninitialized kernel memory in there.\n\nReported-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "3b0723c12e825e26aa5fc0c6970108425824b51d",
      "tree": "23ae96d0b284a5676aa826e23c338a6292642d01",
      "parents": [
        "c5e1fd8ccae09f574d6f978c90c2b968ee29030c"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@parallels.com",
        "time": "Mon Dec 26 14:08:47 2011 -0500"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Dec 26 14:08:47 2011 -0500"
      },
      "message": "unix_diag: Fix incoming connections nla length\n\nThe NLA_PUT macro should accept the actual attribute length, not\nthe amount of elements in array :(\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@parallels.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "2ea744a583d0f40901b2ea43059ae007d9cf2602",
      "tree": "9b55cc6dd875272417f3f3ce67c03ec79f89ed80",
      "parents": [
        "eb93992207dadb946a3b5cf4544957dc924a6f58"
      ],
      "author": {
        "name": "Cyrill Gorcunov",
        "email": "gorcunov@openvz.org",
        "time": "Tue Dec 20 04:33:03 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Dec 20 13:29:43 2011 -0500"
      },
      "message": "net: unix -- Add missing module.h inclusion\n\nOtherwise getting\n\n | net/unix/diag.c:312:16: error: expected declaration specifiers or ‘...’ before string constant\n | net/unix/diag.c:313:1: error: expected declaration specifiers or ‘...’ before string constant\n\nSigned-off-by: Cyrill Gorcunov \u003cgorcunov@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "5d531aaa64a06622874f06e5068b8eefca048feb",
      "tree": "17292670bb57e03ca6f845c96c6aa79516adff22",
      "parents": [
        "cbf391958afb9b82c72324a15891eb3102200085"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@parallels.com",
        "time": "Thu Dec 15 02:46:50 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Dec 16 13:48:29 2011 -0500"
      },
      "message": "unix_diag: Write it into kbuild\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@parallels.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "cbf391958afb9b82c72324a15891eb3102200085",
      "tree": "33230c7964b3b2119a84696afe4299a8a385f937",
      "parents": [
        "2aac7a2cb0d9d8c65fc7dde3e19e46b3e878d23d"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@parallels.com",
        "time": "Thu Dec 15 02:46:31 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Dec 16 13:48:29 2011 -0500"
      },
      "message": "unix_diag: Receive queue lenght NLA\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@parallels.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "2aac7a2cb0d9d8c65fc7dde3e19e46b3e878d23d",
      "tree": "a2308c69d4a03fdb99596f336b7cdfeb6692c7a8",
      "parents": [
        "ac02be8d96af9f66a4de86781ee9facc2dff99d4"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@parallels.com",
        "time": "Thu Dec 15 02:46:14 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Dec 16 13:48:28 2011 -0500"
      },
      "message": "unix_diag: Pending connections IDs NLA\n\nWhen establishing a unix connection on stream sockets the\nserver end receives an skb with socket in its receive queue.\n\nReport who is waiting for these ends to be accepted for\nlistening sockets via NLA.\n\nThere\u0027s a lokcing issue with this -- the unix sk state lock is\nrequired to access the peer, and it is taken under the listening\nsk\u0027s queue lock. Strictly speaking the queue lock should be taken\ninside the state lock, but since in this case these two sockets\nare different it shouldn\u0027t lead to deadlock.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@parallels.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "ac02be8d96af9f66a4de86781ee9facc2dff99d4",
      "tree": "f9a7ef71f50d5bda679f8603cbfa53c0d4092df4",
      "parents": [
        "5f7b0569460b7d8d01ca776430a00505a68b7584"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@parallels.com",
        "time": "Thu Dec 15 02:45:58 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Dec 16 13:48:28 2011 -0500"
      },
      "message": "unix_diag: Unix peer inode NLA\n\nReport the peer socket inode ID as NLA. With this it\u0027s finally\npossible to find out the other end of an interesting unix connection.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@parallels.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "5f7b0569460b7d8d01ca776430a00505a68b7584",
      "tree": "f67c5033fb1fe17b45e4b45cbbb162428216f37d",
      "parents": [
        "f5248b48a64c221dd6157ab9cbee5a36ee45e6ed"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@parallels.com",
        "time": "Thu Dec 15 02:45:43 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Dec 16 13:48:28 2011 -0500"
      },
      "message": "unix_diag: Unix inode info NLA\n\nActually, the socket path if it\u0027s not anonymous doesn\u0027t give\na clue to which file the socket is bound to. Even if the path\nis absolute, it can be unlinked and then new socket can be\nbound to it.\n\nWith this NLA it\u0027s possible to check which file a particular\nsocket is really bound to.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@parallels.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "f5248b48a64c221dd6157ab9cbee5a36ee45e6ed",
      "tree": "f03c84d11417f77827060f48e1bf09435a28c25b",
      "parents": [
        "5d3cae8bc39dd38d1aa5fd4bbc788c7b43fcaa71"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@parallels.com",
        "time": "Thu Dec 15 02:45:24 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Dec 16 13:48:28 2011 -0500"
      },
      "message": "unix_diag: Unix socket name NLA\n\nReport the sun_path when requested as NLA. With leading \u0027\\0\u0027 if\npresent but without the leading AF_UNIX bits.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@parallels.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "5d3cae8bc39dd38d1aa5fd4bbc788c7b43fcaa71",
      "tree": "8d49e08b4887296b9230dd010ab1b435a7980d44",
      "parents": [
        "45a96b9be6ec1b7d248642d17ceee59ff5f64451"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@parallels.com",
        "time": "Thu Dec 15 02:45:07 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Dec 16 13:48:28 2011 -0500"
      },
      "message": "unix_diag: Dumping exact socket core\n\nThe socket inode is used as a key for lookup. This is effectively\nthe only really unique ID of a unix socket, but using this for\nsearch currently has one problem -- it is O(number of sockets) :(\n\nDoes it worth fixing this lookup or inventing some other ID for\nunix sockets?\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@parallels.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "45a96b9be6ec1b7d248642d17ceee59ff5f64451",
      "tree": "9623dc58bd01b23a70b3ef261e69b533b717ec46",
      "parents": [
        "22931d3b906cd0a1726a49a09713f9220a5fab8a"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@parallels.com",
        "time": "Thu Dec 15 02:44:52 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Dec 16 13:48:28 2011 -0500"
      },
      "message": "unix_diag: Dumping all sockets core\n\nWalk the unix sockets table and fill the core response structure,\nwhich includes type, state and inode.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@parallels.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "22931d3b906cd0a1726a49a09713f9220a5fab8a",
      "tree": "33e303ac5be89b1490e6beabd311ca3e6d6860bc",
      "parents": [
        "fa7ff56f75add89bbedaf2dfcfa8f6661e8e8b3a"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@parallels.com",
        "time": "Thu Dec 15 02:44:35 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Dec 16 13:48:27 2011 -0500"
      },
      "message": "unix_diag: Basic module skeleton\n\nIncludes basic module_init/_exit functionality, dump/get_exact stubs\nand declares the basic API structures for request and response.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@parallels.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "fa7ff56f75add89bbedaf2dfcfa8f6661e8e8b3a",
      "tree": "60e3b442d75f4559c5447392d524c49ccc81d28e",
      "parents": [
        "f65c1b534b99aef1809b893387b295963821549f"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@parallels.com",
        "time": "Thu Dec 15 02:44:03 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Dec 16 13:48:27 2011 -0500"
      },
      "message": "af_unix: Export stuff required for diag module\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@parallels.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "0884d7aa24e15e72b3c07f7da910a13bb7df3592",
      "tree": "0b7257890d1e5a960f3205f94ab0a4d628ce7c3a",
      "parents": [
        "83b98fb46ff136945f9d06a9bf6e6aae2ffc37b3"
      ],
      "author": {
        "name": "Alexey Moiseytsev",
        "email": "himeraster@gmail.com",
        "time": "Mon Nov 21 13:35:25 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Nov 26 16:34:22 2011 -0500"
      },
      "message": "AF_UNIX: Fix poll blocking problem when reading from a stream socket\n\npoll() call may be blocked by concurrent reading from the same stream\nsocket.\n\nSigned-off-by: Alexey Moiseytsev \u003chimeraster@gmail.com\u003e\nAcked-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "16e5726269611b71c930054ffe9b858c1cea88eb",
      "tree": "50d25ec97d639b418964bad2f45774d657468c74",
      "parents": [
        "a9e9fd7182332d0cf5f3e601df3e71dd431b70d7"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Mon Sep 19 05:52:27 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Sep 28 13:29:50 2011 -0400"
      },
      "message": "af_unix: dont send SCM_CREDENTIALS by default\n\nSince commit 7361c36c5224 (af_unix: Allow credentials to work across\nuser and pid namespaces) af_unix performance dropped a lot.\n\nThis is because we now take a reference on pid and cred in each write(),\nand release them in read(), usually done from another process,\neventually from another cpu. This triggers false sharing.\n\n# Events: 154K cycles\n#\n# Overhead  Command       Shared Object        Symbol\n# ........  .......  ..................  .........................\n#\n    10.40%  hackbench  [kernel.kallsyms]   [k] put_pid\n     8.60%  hackbench  [kernel.kallsyms]   [k] unix_stream_recvmsg\n     7.87%  hackbench  [kernel.kallsyms]   [k] unix_stream_sendmsg\n     6.11%  hackbench  [kernel.kallsyms]   [k] do_raw_spin_lock\n     4.95%  hackbench  [kernel.kallsyms]   [k] unix_scm_to_skb\n     4.87%  hackbench  [kernel.kallsyms]   [k] pid_nr_ns\n     4.34%  hackbench  [kernel.kallsyms]   [k] cred_to_ucred\n     2.39%  hackbench  [kernel.kallsyms]   [k] unix_destruct_scm\n     2.24%  hackbench  [kernel.kallsyms]   [k] sub_preempt_count\n     1.75%  hackbench  [kernel.kallsyms]   [k] fget_light\n     1.51%  hackbench  [kernel.kallsyms]   [k]\n__mutex_lock_interruptible_slowpath\n     1.42%  hackbench  [kernel.kallsyms]   [k] sock_alloc_send_pskb\n\nThis patch includes SCM_CREDENTIALS information in a af_unix message/skb\nonly if requested by the sender, [man 7 unix for details how to include\nancillary data using sendmsg() system call]\n\nNote: This might break buggy applications that expected SCM_CREDENTIAL\nfrom an unaware write() system call, and receiver not using SO_PASSCRED\nsocket option.\n\nIf SOCK_PASSCRED is set on source or destination socket, we still\ninclude credentials for mere write() syscalls.\n\nPerformance boost in hackbench : more than 50% gain on a 16 thread\nmachine (2 quad-core cpus, 2 threads per core)\n\nhackbench 20 thread 2000\n\n4.228 sec instead of 9.102 sec\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nAcked-by: Tim Chen \u003ctim.c.chen@linux.intel.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "f78a5fda9116525809d088917638be912b85f838",
      "tree": "ab6d7edaa915cea74d6c664c3e39a5ad15bab0f8",
      "parents": [
        "473e64ee4603671efa1e0785418e56e9ffdfc47b"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Sep 16 19:34:00 2011 -0400"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Sep 16 19:34:00 2011 -0400"
      },
      "message": "Revert \"Scm: Remove unnecessary pid \u0026 credential references in Unix socket\u0027s send and receive path\"\n\nThis reverts commit 0856a304091b33a8e8f9f9c98e776f425af2b625.\n\nAs requested by Eric Dumazet, it has various ref-counting\nproblems and has introduced regressions.  Eric will add\na more suitable version of this performance fix.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "0856a304091b33a8e8f9f9c98e776f425af2b625",
      "tree": "cc521e8e13db01813e0e1b4b67ecc20a18551212",
      "parents": [
        "6af29ccc223b0feb6fc6112281c3fa3cdb1afddf"
      ],
      "author": {
        "name": "Tim Chen",
        "email": "tim.c.chen@linux.intel.com",
        "time": "Mon Aug 22 14:57:26 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Aug 24 19:41:13 2011 -0700"
      },
      "message": "Scm: Remove unnecessary pid \u0026 credential references in Unix socket\u0027s send and receive path\n\nPatch series 109f6e39..7361c36c back in 2.6.36 added functionality to\nallow credentials to work across pid namespaces for packets sent via\nUNIX sockets.  However, the atomic reference counts on pid and\ncredentials caused plenty of cache bouncing when there are numerous\nthreads of the same pid sharing a UNIX socket.  This patch mitigates the\nproblem by eliminating extraneous reference counts on pid and\ncredentials on both send and receive path of UNIX sockets. I found a 2x\nimprovement in hackbench\u0027s threaded case.\n\nOn the receive path in unix_dgram_recvmsg, currently there is an\nincrement of reference count on pid and credentials in scm_set_cred.\nThen there are two decrement of the reference counts.  Once in scm_recv\nand once when skb_free_datagram call skb-\u003edestructor function\nunix_destruct_scm.  One pair of increment and decrement of ref count on\npid and credentials can be eliminated from the receive path.  Until we\ndestroy the skb, we already set a reference when we created the skb on\nthe send side.\n\nOn the send path, there are two increments of ref count on pid and\ncredentials, once in scm_send and once in unix_scm_to_skb.  Then there\nis a decrement of the reference counts in scm_destroy\u0027s call to\nscm_destroy_cred at the end of unix_dgram_sendmsg functions.   One pair\nof increment and decrement of the reference counts can be removed so we\nonly need to increment the ref counts once.\n\nBy incorporating these changes, for hackbench running on a 4 socket\nNHM-EX machine with 40 cores, the execution of hackbench on\n50 groups of 20 threads sped up by factor of 2.\n\nHackbench command used for testing:\n./hackbench 50 thread 2000\n\nSigned-off-by: Tim Chen \u003ctim.c.chen@linux.intel.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "dae6ad8f37529963ae7df52baaccf056b38f210e",
      "tree": "1bfc6f766601e744c2c2c064b97cdefdcca4ad5c",
      "parents": [
        "49084c3bb2055c401f3493c13edae14d49128ca0"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jun 26 11:50:15 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:44:05 2011 -0400"
      },
      "message": "new helpers: kern_path_create/user_path_create\n\ncombination of kern_path_parent() and lookup_create().  Does *not*\nexpose struct nameidata to caller.  Syscalls converted to that...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "71338aa7d050c86d8765cd36e46be514fb0ebbce",
      "tree": "96bacb805b939c490145b31b4e2fb9e5cea79c5d",
      "parents": [
        "229de618ba6ff36e382b908b7637fe56c25ae9f1"
      ],
      "author": {
        "name": "Dan Rosenberg",
        "email": "drosenberg@vsecurity.com",
        "time": "Mon May 23 12:17:35 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue May 24 01:13:12 2011 -0400"
      },
      "message": "net: convert %p usage to %pK\n\nThe %pK format specifier is designed to hide exposed kernel pointers,\nspecifically via /proc interfaces.  Exposing these pointers provides an\neasy target for kernel write vulnerabilities, since they reveal the\nlocations of writable structures containing easily triggerable function\npointers.  The behavior of %pK depends on the kptr_restrict sysctl.\n\nIf kptr_restrict is set to 0, no deviation from the standard %p behavior\noccurs.  If kptr_restrict is set to 1, the default, if the current user\n(intended to be a reader via seq_printf(), etc.) does not have CAP_SYSLOG\n(currently in the LSM tree), kernel pointers using %pK are printed as 0\u0027s.\n If kptr_restrict is set to 2, kernel pointers using %pK are printed as\n0\u0027s regardless of privileges.  Replacing with 0\u0027s was chosen over the\ndefault \"(null)\", which cannot be parsed by userland %p, which expects\n\"(nil)\".\n\nThe supporting code for kptr_restrict and %pK are currently in the -mm\ntree.  This patch converts users of %p in net/ to %pK.  Cases of printing\npointers to the syslog are not covered, since this would eliminate useful\ninformation for postmortem debugging and the reading of the syslog is\nalready optionally protected by the dmesg_restrict sysctl.\n\nSigned-off-by: Dan Rosenberg \u003cdrosenberg@vsecurity.com\u003e\nCc: James Morris \u003cjmorris@namei.org\u003e\nCc: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nCc: Thomas Graf \u003ctgraf@infradead.org\u003e\nCc: Eugene Teo \u003ceugeneteo@kernel.org\u003e\nCc: Kees Cook \u003ckees.cook@canonical.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: David S. Miller \u003cdavem@davemloft.net\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Eric Paris \u003ceparis@parisplace.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "a05d2ad1c1f391c7f514a1d1e09b5417968a7d07",
      "tree": "911e711680c3328de540ec2530cd4bc3df3943b5",
      "parents": [
        "2b5a4ace664cfe05c17bee60c4da66263a05fccf"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Sun Apr 24 01:54:57 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun May 01 23:16:28 2011 -0700"
      },
      "message": "af_unix: Only allow recv on connected seqpacket sockets.\n\nThis fixes the following oops discovered by Dan Aloni:\n\u003e Anyway, the following is the output of the Oops that I got on the\n\u003e Ubuntu kernel on which I first detected the problem\n\u003e (2.6.37-12-generic). The Oops that followed will be more useful, I\n\u003e guess.\n\n\u003e[ 5594.669852] BUG: unable to handle kernel NULL pointer dereference\n\u003e at           (null)\n\u003e [ 5594.681606] IP: [\u003cffffffff81550b7b\u003e] unix_dgram_recvmsg+0x1fb/0x420\n\u003e [ 5594.687576] PGD 2a05d067 PUD 2b951067 PMD 0\n\u003e [ 5594.693720] Oops: 0002 [#1] SMP\n\u003e [ 5594.699888] last sysfs file:\n\nThe bug was that unix domain sockets use a pseduo packet for\nconnecting and accept uses that psudo packet to get the socket.\nIn the buggy seqpacket case we were allowing unconnected\nsockets to call recvmsg and try to receive the pseudo packet.\n\nThat is always wrong and as of commit 7361c36c5 the pseudo\npacket had become enough different from a normal packet\nthat the kernel started oopsing.\n\nDo for seqpacket_recv what was done for seqpacket_send in 2.5\nand only allow it on connected seqpacket sockets.\n\nCc: stable@kernel.org\nTested-by: Dan Aloni \u003cdan@aloni.org\u003e\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.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": "7a6362800cb7d1d618a697a650c7aaed3eb39320",
      "tree": "087f9bc6c13ef1fad4b392c5cf9325cd28fa8523",
      "parents": [
        "6445ced8670f37cfc2c5e24a9de9b413dbfc788d",
        "ceda86a108671294052cbf51660097b6534672f5"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 16 16:29:25 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 16 16:29:25 2011 -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: (1480 commits)\n  bonding: enable netpoll without checking link status\n  xfrm: Refcount destination entry on xfrm_lookup\n  net: introduce rx_handler results and logic around that\n  bonding: get rid of IFF_SLAVE_INACTIVE netdev-\u003epriv_flag\n  bonding: wrap slave state work\n  net: get rid of multiple bond-related netdevice-\u003epriv_flags\n  bonding: register slave pointer for rx_handler\n  be2net: Bump up the version number\n  be2net: Copyright notice change. Update to Emulex instead of ServerEngines\n  e1000e: fix kconfig for crc32 dependency\n  netfilter ebtables: fix xt_AUDIT to work with ebtables\n  xen network backend driver\n  bonding: Improve syslog message at device creation time\n  bonding: Call netif_carrier_off after register_netdevice\n  bonding: Incorrect TX queue offset\n  net_sched: fix ip_tos2prio\n  xfrm: fix __xfrm_route_forward()\n  be2net: Fix UDP packet detected status in RX compl\n  Phonet: fix aligned-mode pipe socket buffer header reserve\n  netxen: support for GbE port settings\n  ...\n\nFix up conflicts in drivers/staging/brcm80211/brcmsmac/wl_mac80211.c\nwith the staging updates.\n"
    },
    {
      "commit": "422e6c4bc4b48c15b3cb57a1ca71431abfc57e54",
      "tree": "81ceb21f84a79e796ee33b5d17e17406f096abcb",
      "parents": [
        "c83ce989cb5ff86575821992ea82c4df5c388ebc",
        "574197e0de46a8a4db5c54ef7b65e43ffa8873a7"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Mar 15 15:48:13 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Mar 15 15:48:13 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6: (57 commits)\n  tidy the trailing symlinks traversal up\n  Turn resolution of trailing symlinks iterative everywhere\n  simplify link_path_walk() tail\n  Make trailing symlink resolution in path_lookupat() iterative\n  update nd-\u003einode in __do_follow_link() instead of after do_follow_link()\n  pull handling of one pathname component into a helper\n  fs: allow AT_EMPTY_PATH in linkat(), limit that to CAP_DAC_READ_SEARCH\n  Allow passing O_PATH descriptors via SCM_RIGHTS datagrams\n  readlinkat(), fchownat() and fstatat() with empty relative pathnames\n  Allow O_PATH for symlinks\n  New kind of open files - \"location only\".\n  ext4: Copy fs UUID to superblock\n  ext3: Copy fs UUID to superblock.\n  vfs: Export file system uuid via /proc/\u003cpid\u003e/mountinfo\n  unistd.h: Add new syscalls numbers to asm-generic\n  x86: Add new syscalls for x86_64\n  x86: Add new syscalls for x86_32\n  fs: Remove i_nlink check from file system link callback\n  fs: Don\u0027t allow to create hardlink for deleted file\n  vfs: Add open by file handle support\n  ...\n"
    },
    {
      "commit": "c337ffb68e1e71bad069b14d2246fa1e0c31699c",
      "tree": "7861a59b196adfd63758cc0921e4fb56030fbaf3",
      "parents": [
        "30df754dedebf27ef90452944a723ba058d23396",
        "84c0c6933cb0303fa006992a6659c2b46de4eb17"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Mar 15 15:15:17 2011 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Mar 15 15:15:17 2011 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6\n"
    },
    {
      "commit": "326be7b484843988afe57566b627fb7a70beac56",
      "tree": "04a15bfdb681ad09444cf2f3d72ae0d38fb0432b",
      "parents": [
        "65cfc6722361570bfe255698d9cd4dccaf47570d"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Mar 13 17:08:22 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Mar 15 02:21:45 2011 -0400"
      },
      "message": "Allow passing O_PATH descriptors via SCM_RIGHTS datagrams\n\nJust need to make sure that AF_UNIX garbage collector won\u0027t\nconfuse O_PATHed socket on filesystem for real AF_UNIX opened\nsocket.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e5537bfc98f01561fbdfbd8a78f0dc3e2360491d",
      "tree": "72e354ad341fbd2c1cd39cf931c89fc76ba67887",
      "parents": [
        "468c3f924f043cad7a04f4f4d5224a2c9bc886c1"
      ],
      "author": {
        "name": "Daniel Baluta",
        "email": "dbaluta@ixiacom.com",
        "time": "Mon Mar 14 15:25:33 2011 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Mar 14 15:25:33 2011 -0700"
      },
      "message": "af_unix: update locking comment\n\nWe latch our state using a spinlock not a r/w kind of lock.\n\nSigned-off-by: Daniel Baluta \u003cdbaluta@ixiacom.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "c9c6cac0c2bdbda42e7b804838648d0bc60ddb13",
      "tree": "c2d9b41eb24026d6769175e9ba3c17c8093b6aad",
      "parents": [
        "15a9155fe3e8215c02b80df51ec2cac7c0d726ad"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Feb 16 15:15:47 2011 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Mar 14 09:15:23 2011 -0400"
      },
      "message": "kill path_lookup()\n\nall remaining callers pass LOOKUP_PARENT to it, so\nflags argument can die; renamed to kern_path_parent()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "33175d84ee3fa29991adb80513683e010769e807",
      "tree": "3731f61cf82451b6892cf1368701e57e35d92908",
      "parents": [
        "c5908939b2738bafe1b309bc2465cb9f2e6184c5",
        "6dfbd87a20a737641ef228230c77f4262434fa24"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Mar 10 14:26:00 2011 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Mar 10 14:26:00 2011 -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_cmn.c\n"
    },
    {
      "commit": "6118e35a7126c1062b1a0f6737b84b4fe4d5c8d4",
      "tree": "412fe3b867969dd29b7ed5369aab046aa7f79dec",
      "parents": [
        "efea2c6b2efc1716b2c0cf257cc428d6cd3ed6e2"
      ],
      "author": {
        "name": "Hagen Paul Pfeifer",
        "email": "hagen@jauu.net",
        "time": "Fri Mar 04 11:45:06 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Mar 07 15:51:14 2011 -0800"
      },
      "message": "af_unix: remove unused struct sockaddr_un cruft\n\nSigned-off-by: Hagen Paul Pfeifer \u003chagen@jauu.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "b3ca9b02b00704053a38bfe4c31dbbb9c13595d0",
      "tree": "aee22e55bb36b3f8cffc22f840a958a8a6ea184b",
      "parents": [
        "2ea6d8c446752008df7f37867f0cf7483533b05e"
      ],
      "author": {
        "name": "Rainer Weikusat",
        "email": "rweikusat@mobileactivedefense.com",
        "time": "Mon Feb 28 04:50:55 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Mar 07 15:31:16 2011 -0800"
      },
      "message": "net: fix multithreaded signal handling in unix recv routines\n\nThe unix_dgram_recvmsg and unix_stream_recvmsg routines in\nnet/af_unix.c utilize mutex_lock(\u0026u-\u003ereadlock) calls in order to\nserialize read operations of multiple threads on a single socket. This\nimplies that, if all n threads of a process block in an AF_UNIX recv\ncall trying to read data from the same socket, one of these threads\nwill be sleeping in state TASK_INTERRUPTIBLE and all others in state\nTASK_UNINTERRUPTIBLE. Provided that a particular signal is supposed to\nbe handled by a signal handler defined by the process and that none of\nthis threads is blocking the signal, the complete_signal routine in\nkernel/signal.c will select the \u0027first\u0027 such thread it happens to\nencounter when deciding which thread to notify that a signal is\nsupposed to be handled and if this is one of the TASK_UNINTERRUPTIBLE\nthreads, the signal won\u0027t be handled until the one thread not blocking\non the u-\u003ereadlock mutex is woken up because some data to process has\narrived (if this ever happens). The included patch fixes this by\nchanging mutex_lock to mutex_lock_interruptible and handling possible\nerror returns in the same way interruptions are handled by the actual\nreceive-code.\n\nSigned-off-by: Rainer Weikusat \u003crweikusat@mobileactivedefense.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\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": "7180a03118cac7256fb04f929fe34d0aeee92c40",
      "tree": "c2386705b0a43d1b3e0fedde2cc9fa6e5cb17efc",
      "parents": [
        "b8970f0bfc78103cb74c66055de7379b15097840"
      ],
      "author": {
        "name": "Alban Crequy",
        "email": "alban.crequy@collabora.co.uk",
        "time": "Wed Jan 19 04:56:36 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jan 19 23:31:11 2011 -0800"
      },
      "message": "af_unix: coding style: remove one level of indentation in unix_shutdown()\n\nSigned-off-by: Alban Crequy \u003calban.crequy@collabora.co.uk\u003e\nReviewed-by: Ian Molton \u003cian.molton@collabora.co.uk\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "d6ae3bae3d1bf7a8bf367e29f2cac0788dcd0db5",
      "tree": "726d5e4ceb62556d89a4548064acdace5319b1e4",
      "parents": [
        "a5db219f4cf9f67995eabd53b81a1232c82f5852"
      ],
      "author": {
        "name": "Alban Crequy",
        "email": "alban.crequy@collabora.co.uk",
        "time": "Tue Jan 18 06:39:15 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jan 18 21:33:05 2011 -0800"
      },
      "message": "af_unix: implement socket filter\n\nLinux Socket Filters can already be successfully attached and detached on unix\nsockets with setsockopt(sockfd, SOL_SOCKET, SO_{ATTACH,DETACH}_FILTER, ...).\nSee: Documentation/networking/filter.txt\n\nBut the filter was never used in the unix socket code so it did not work. This\npatch uses sk_filter() to filter buffers before delivery.\n\nThis short program demonstrates the problem on SOCK_DGRAM.\n\nint main(void) {\n  int i, j, ret;\n  int sv[2];\n  struct pollfd fds[2];\n  char *message \u003d \"Hello world!\";\n  char buffer[64];\n  struct sock_filter ins[32] \u003d {{0,},};\n  struct sock_fprog filter;\n\n  socketpair(AF_UNIX, SOCK_DGRAM, 0, sv);\n\n  for (i \u003d 0 ; i \u003c 2 ; i++) {\n    fds[i].fd \u003d sv[i];\n    fds[i].events \u003d POLLIN;\n    fds[i].revents \u003d 0;\n  }\n\n  for(j \u003d 1 ; j \u003c 13 ; j++) {\n\n    /* Set a socket filter to truncate the message */\n    memset(ins, 0, sizeof(ins));\n    ins[0].code \u003d BPF_RET|BPF_K;\n    ins[0].k \u003d j;\n    filter.len \u003d 1;\n    filter.filter \u003d ins;\n    setsockopt(sv[1], SOL_SOCKET, SO_ATTACH_FILTER, \u0026filter, sizeof(filter));\n\n    /* send a message */\n    send(sv[0], message, strlen(message) + 1, 0);\n\n    /* The filter should let the message pass but truncated. */\n    poll(fds, 2, 0);\n\n    /* Receive the truncated message*/\n    ret \u003d recv(sv[1], buffer, 64, 0);\n    printf(\"received %d bytes, expected %d\\n\", ret, j);\n  }\n\n    for (i \u003d 0 ; i \u003c 2 ; i++)\n      close(sv[i]);\n\n  return 0;\n}\n\nSigned-off-by: Alban Crequy \u003calban.crequy@collabora.co.uk\u003e\nReviewed-by: Ian Molton \u003cian.molton@collabora.co.uk\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "3610cda53f247e176bcbb7a7cca64bc53b12acdb",
      "tree": "d780bc1e405116e75a194b2f4693a6f9bbe9f58f",
      "parents": [
        "44b8288308ac9da27eab7d7bdbf1375a568805c3"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jan 05 15:38:53 2011 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jan 05 15:38:53 2011 -0800"
      },
      "message": "af_unix: Avoid socket-\u003esk NULL OOPS in stream connect security hooks.\n\nunix_release() can asynchornously set socket-\u003esk to NULL, and\nit does so without holding the unix_state_lock() on \"other\"\nduring stream connects.\n\nHowever, the reverse mapping, sk-\u003esk_socket, is only transitioned\nto NULL under the unix_state_lock().\n\nTherefore make the security hooks follow the reverse mapping instead\nof the forward mapping.\n\nReported-by: Jeremy Fitzhardinge \u003cjeremy@goop.org\u003e\nReported-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\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": "25888e30319f8896fc656fc68643e6a078263060",
      "tree": "ae484d38b1250da885d3939dd9a97e667fbc871d",
      "parents": [
        "50a4205333c5e545551f1f82b3004ca635407c5c"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Thu Nov 25 04:11:39 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Nov 29 09:45:15 2010 -0800"
      },
      "message": "af_unix: limit recursion level\n\nIts easy to eat all kernel memory and trigger NMI watchdog, using an\nexploit program that queues unix sockets on top of others.\n\nlkml ref : http://lkml.org/lkml/2010/11/25/8\n\nThis mechanism is used in applications, one choice we have is to have a\nrecursion limit.\n\nOther limits might be needed as well (if we queue other types of files),\nsince the passfd mechanism is currently limited by socket receive queue\nsizes only.\n\nAdd a recursion_level to unix socket, allowing up to 4 levels.\n\nEach time we send an unix socket through sendfd mechanism, we copy its\nrecursion level (plus one) to receiver. This recursion level is cleared\nwhen socket receive queue is emptied.\n\nReported-by: Марк Коренберг \u003csocketpair@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": "9915672d41273f5b77f1b3c29b391ffb7732b84b",
      "tree": "191dbf657535e49265be7664755890630e69e329",
      "parents": [
        "cf41a51db89850033efc11c18a5257de810b5417"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Wed Nov 24 09:15:27 2010 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Nov 24 09:15:27 2010 -0800"
      },
      "message": "af_unix: limit unix_tot_inflight\n\nVegard Nossum found a unix socket OOM was possible, posting an exploit\nprogram.\n\nMy analysis is we can eat all LOWMEM memory before unix_gc() being\ncalled from unix_release_sock(). Moreover, the thread blocked in\nunix_gc() can consume huge amount of time to perform cleanup because of\nhuge working set.\n\nOne way to handle this is to have a sensible limit on unix_tot_inflight,\ntested from wait_for_unix_gc() and to force a call to unix_gc() if this\nlimit is hit.\n\nThis solves the OOM and also reduce overall latencies, and should not\nslowdown normal workloads.\n\nReported-by: Vegard Nossum \u003cvegard.nossum@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": "973a34aa8593dbfe84386343c694f5beecb51d8a",
      "tree": "fc2531a0641cbf9caa474518dccb3266d8e2bf05",
      "parents": [
        "5456f09aaf88731e16dbcea7522cb330b6846415"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Sun Oct 31 05:38:25 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Nov 08 13:50:09 2010 -0800"
      },
      "message": "af_unix: optimize unix_dgram_poll()\n\nunix_dgram_poll() is pretty expensive to check POLLOUT status, because\nit has to lock the socket to get its peer, take a reference on the peer\nto check its receive queue status, and queue another poll_wait on\npeer_wait. This all can be avoided if the process calling\nunix_dgram_poll() is not interested in POLLOUT status. It makes\nunix_dgram_recvmsg() faster by not queueing irrelevant pollers in\npeer_wait.\n\nOn a test program provided by Alan Crequy :\n\nBefore:\n\nreal    0m0.211s\nuser    0m0.000s\nsys     0m0.208s\n\nAfter:\n\nreal    0m0.044s\nuser    0m0.000s\nsys     0m0.040s\n\nSuggested-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nReported-by: Alban Crequy \u003calban.crequy@collabora.co.uk\u003e\nAcked-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "5456f09aaf88731e16dbcea7522cb330b6846415",
      "tree": "eac95420f5da87dc95342aa23d9a97653544863d",
      "parents": [
        "67426b756c4d52c511c4b22b269accea171692a8"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Sun Oct 31 05:36:23 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Nov 08 13:50:09 2010 -0800"
      },
      "message": "af_unix: fix unix_dgram_poll() behavior for EPOLLOUT event\n\nAlban Crequy reported a problem with connected dgram af_unix sockets and\nprovided a test program. epoll() would miss to send an EPOLLOUT event\nwhen a thread unqueues a packet from the other peer, making its receive\nqueue not full.\n\nThis is because unix_dgram_poll() fails to call sock_poll_wait(file,\n\u0026unix_sk(other)-\u003epeer_wait, wait);\nif the socket is not writeable at the time epoll_ctl(ADD) is called.\n\nWe must call sock_poll_wait(), regardless of \u0027writable\u0027 status, so that\nepoll can be notified later of states changes.\n\nMisc: avoids testing twice (sk-\u003esk_shutdown \u0026 RCV_SHUTDOWN)\n\nReported-by: Alban Crequy \u003calban.crequy@collabora.co.uk\u003e\nCc: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nAcked-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "67426b756c4d52c511c4b22b269accea171692a8",
      "tree": "60c640a4b103946d706671ccc2d12fc0d23ed544",
      "parents": [
        "fc766e4c4965915ab52a1d1fa3c7a7b3e7bc07f0"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Fri Oct 29 20:44:44 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Nov 08 13:50:08 2010 -0800"
      },
      "message": "af_unix: use keyed wakeups\n\nInstead of wakeup all sleepers, use wake_up_interruptible_sync_poll() to\nwakeup only ones interested into writing the socket.\n\nThis patch is a specialization of commit 37e5540b3c9d (epoll keyed\nwakeups: make sockets use keyed wakeups).\n\nOn a test program provided by Alan Crequy :\n\nBefore:\nreal    0m3.101s\nuser    0m0.000s\nsys     0m6.104s\n\nAfter:\n\nreal\t0m0.211s\nuser\t0m0.000s\nsys\t0m0.208s\n\nReported-by: Alban Crequy \u003calban.crequy@collabora.co.uk\u003e\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nCc: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "518de9b39e854542de59bfb8b9f61c8f7ecf808b",
      "tree": "06cd1dd303a1526501783589ec61696570c0ffa8",
      "parents": [
        "571428be550fbe37160596995e96ad398873fcbd"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Tue Oct 26 14:22:44 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 16:52:15 2010 -0700"
      },
      "message": "fs: allow for more than 2^31 files\n\nRobin Holt tried to boot a 16TB system and found af_unix was overflowing\na 32bit value :\n\n\u003cquote\u003e\n\nWe were seeing a failure which prevented boot.  The kernel was incapable\nof creating either a named pipe or unix domain socket.  This comes down\nto a common kernel function called unix_create1() which does:\n\n        atomic_inc(\u0026unix_nr_socks);\n        if (atomic_read(\u0026unix_nr_socks) \u003e 2 * get_max_files())\n                goto out;\n\nThe function get_max_files() is a simple return of files_stat.max_files.\nfiles_stat.max_files is a signed integer and is computed in\nfs/file_table.c\u0027s files_init().\n\n        n \u003d (mempages * (PAGE_SIZE / 1024)) / 10;\n        files_stat.max_files \u003d n;\n\nIn our case, mempages (total_ram_pages) is approx 3,758,096,384\n(0xe0000000).  That leaves max_files at approximately 1,503,238,553.\nThis causes 2 * get_max_files() to integer overflow.\n\n\u003c/quote\u003e\n\nFix is to let /proc/sys/fs/file-nr \u0026 /proc/sys/fs/file-max use long\nintegers, and change af_unix to use an atomic_long_t instead of atomic_t.\n\nget_max_files() is changed to return an unsigned long.  get_nr_files() is\nchanged to return a long.\n\nunix_nr_socks is changed from atomic_t to atomic_long_t, while not\nstrictly needed to address Robin problem.\n\nBefore patch (on a 64bit kernel) :\n# echo 2147483648 \u003e/proc/sys/fs/file-max\n# cat /proc/sys/fs/file-max\n-18446744071562067968\n\nAfter patch:\n# echo 2147483648 \u003e/proc/sys/fs/file-max\n# cat /proc/sys/fs/file-max\n2147483648\n# cat /proc/sys/fs/file-nr\n704     0       2147483648\n\nReported-by: Robin Holt \u003cholt@sgi.com\u003e\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nAcked-by: David Miller \u003cdavem@davemloft.net\u003e\nReviewed-by: Robin Holt \u003cholt@sgi.com\u003e\nTested-by: Robin Holt \u003cholt@sgi.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3f66116e89521ef71ab0d63dc07a639def88a577",
      "tree": "865ff7eed2724cc0ae141341fe17c612aa414c89",
      "parents": [
        "d6bf781712a1d25cc8987036b3a48535b331eb91"
      ],
      "author": {
        "name": "Alban Crequy",
        "email": "alban.crequy@collabora.co.uk",
        "time": "Mon Oct 04 08:48:28 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Oct 05 14:54:36 2010 -0700"
      },
      "message": "AF_UNIX: Implement SO_TIMESTAMP and SO_TIMETAMPNS on Unix sockets\n\nUserspace applications can already request to receive timestamps with:\nsetsockopt(sockfd, SOL_SOCKET, SO_TIMESTAMP, ...)\n\nAlthough setsockopt() returns zero (success), timestamps are not added to the\nancillary data. This patch fixes that on SOCK_DGRAM and SOCK_SEQPACKET Unix\nsockets.\n\nSigned-off-by: Alban Crequy \u003calban.crequy@collabora.co.uk\u003e\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "e548833df83c3554229eff0672900bfe958b45fd",
      "tree": "85efc4a76dc356593d6d394776aeb845dc580fb6",
      "parents": [
        "cbd9da7be869f676afc204e1a664163778c770bd",
        "053d8f6622701f849fda2ca2c9ae596c13599ba9"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Sep 09 22:27:33 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Sep 09 22:27:33 2010 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6\n\nConflicts:\n\tnet/mac80211/main.c\n"
    },
    {
      "commit": "8df73ff90f00f14d2c7ff7156f7ef153f7e9d3b7",
      "tree": "9df146da5dd92eeb921fbc21f856d7660ac92b0e",
      "parents": [
        "32737e934a952c1b0c744f2a78d80089d15c7ee3"
      ],
      "author": {
        "name": "Tetsuo Handa",
        "email": "penguin-kernel@I-love.SAKURA.ne.jp",
        "time": "Sat Sep 04 01:34:28 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Sep 07 13:57:23 2010 -0700"
      },
      "message": "UNIX: Do not loop forever at unix_autobind().\n\nWe assumed that unix_autobind() never fails if kzalloc() succeeded.\nBut unix_autobind() allows only 1048576 names. If /proc/sys/fs/file-max is\nlarger than 1048576 (e.g. systems with more than 10GB of RAM), a local user can\nconsume all names using fork()/socket()/bind().\n\nIf all names are in use, those who call bind() with addr_len \u003d\u003d sizeof(short)\nor connect()/sendmsg() with setsockopt(SO_PASSCRED) will continue\n\n  while (1)\n        yield();\n\nloop at unix_autobind() till a name becomes available.\nThis patch adds a loop counter in order to give up after 1048576 attempts.\n\nCalling yield() for once per 256 attempts may not be sufficient when many names\nare already in use, for __unix_find_socket_byname() can take long time under\nsuch circumstance. Therefore, this patch also adds cond_resched() call.\n\nNote that currently a local user can consume 2GB of kernel memory if the user\nis allowed to create and autobind 1048576 UNIX domain sockets. We should\nconsider adding some restriction for autobind operation.\n\nSigned-off-by: Tetsuo Handa \u003cpenguin-kernel@I-love.SAKURA.ne.jp\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "db40980fcdb560d7992b0511df16cdd3f7e381f3",
      "tree": "337b5c41bd55915a4b894ea6fe09a865e7dcb0e4",
      "parents": [
        "d61702f1273b71c2809365a7806d7fe84fd77f15"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Mon Sep 06 11:13:50 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Sep 06 18:48:45 2010 -0700"
      },
      "message": "net: poll() optimizations\n\nNo need to test twice sk-\u003esk_shutdown \u0026 RCV_SHUTDOWN\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "70d4bf6d467a330ccc947df9b2608e329d9e7708",
      "tree": "477dff26ac865f785e9197065e4807daeb89958c",
      "parents": [
        "4b706372f18de53970e4c6887a96459590fef80a"
      ],
      "author": {
        "name": "Neil Horman",
        "email": "nhorman@tuxdriver.com",
        "time": "Tue Jul 20 06:45:56 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jul 20 13:28:05 2010 -0700"
      },
      "message": "drop_monitor: convert some kfree_skb call sites to consume_skb\n\nConvert a few calls from kfree_skb to consume_skb\n\nNoticed while I was working on dropwatch that I was detecting lots of internal\nskb drops in several places.  While some are legitimate, several were not,\nfreeing skbs that were at the end of their life, rather than being discarded due\nto an error.  This patch converts those calls sites from using kfree_skb to\nconsume_skb, which quiets the in-kernel drop_monitor code from detecting them as\ndrops.  Tested successfully by myself\n\nSigned-off-by: Neil Horman \u003cnhorman@tuxdriver.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "6616f7888c6088324727363276f6de05a1dca6fc",
      "tree": "12a5fb7daa675d27d49067b78eb9a001aac145e2",
      "parents": [
        "7361c36c5224519b258219fe3d0e8abc865d8134"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Sun Jun 13 03:35:48 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jun 16 14:58:17 2010 -0700"
      },
      "message": "af_unix: Allow connecting to sockets in other network namespaces.\n\nRemove the restriction that only allows connecting to a unix domain\nsocket identified by unix path that is in the same network namespace.\n\nCrossing network namespaces is always tricky and we did not support\nthis at first, because of a strict policy of don\u0027t mix the namespaces.\nLater after Pavel proposed this we did not support this because no one\nhad performed the audit to make certain using unix domain sockets\nacross namespaces is safe.\n\nWhat fundamentally makes connecting to af_unix sockets in other\nnamespaces is safe is that you have to have the proper permissions on\nthe unix domain socket inode that lives in the filesystem.  If you\nwant strict isolation you just don\u0027t create inodes where unfriendlys\ncan get at them, or with permissions that allow unfriendlys to open\nthem.  All nicely handled for us by the mount namespace and other\nstandard file system facilities.\n\nI looked through unix domain sockets and they are a very controlled\nenvironment so none of the work that goes on in dev_forward_skb to\nmake crossing namespaces safe appears needed, we are not loosing\ncontroll of the skb and so do not need to set up the skb to look like\nit is comming in fresh from the outside world.  Further the fields in\nstruct unix_skb_parms should not have any problems crossing network\nnamespaces.\n\nNow that we handle SCM_CREDENTIALS in a way that gives useable values\nacross namespaces.  There does not appear to be any operational\nproblems with encouraging the use of unix domain sockets across\ncontainers either.\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": "7361c36c5224519b258219fe3d0e8abc865d8134",
      "tree": "7987367633b4729dff0afa2180862a2ce919f3cb",
      "parents": [
        "257b5358b32f17e0603b6ff57b13610b0e02348f"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Sun Jun 13 03:34:33 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jun 16 14:58:16 2010 -0700"
      },
      "message": "af_unix: Allow credentials to work across user and pid namespaces.\n\nIn unix_skb_parms store pointers to struct pid and struct cred instead\nof raw uid, gid, and pid values, then translate the credentials on\nreception into values that are meaningful in the receiving processes\nnamespaces.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nAcked-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\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": "a2f3be17c07ad9bd45ab300f79642ecb39cfb553",
      "tree": "22cd236918d0428c1f03f51079cbbf093ca5e5ed",
      "parents": [
        "26d27844dfb1d84eafa886f150098c54e192c260"
      ],
      "author": {
        "name": "Ilpo Järvinen",
        "email": "ilpo.jarvinen@helsinki.fi",
        "time": "Mon May 03 03:22:18 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon May 03 15:39:58 2010 -0700"
      },
      "message": "unix/garbage: kill copy of the skb queue walker\n\nWorse yet, it seems that its arguments were in reverse order. Also\nremove one related helper which seems hardly worth keeping.\n\nSigned-off-by: Ilpo Järvinen \u003cilpo.jarvinen@helsinki.fi\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": "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": "663717f65c075eb4c6da7a123041295bd5295cc0",
      "tree": "5613a3c05449ae2d36f6c70a7ebb4ce63e88f448",
      "parents": [
        "b9fb9ee07e67fce0b7bfd517a48710465706c30a"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Thu Feb 18 14:12:06 2010 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Feb 18 14:12:06 2010 -0800"
      },
      "message": "AF_UNIX: update locking comment\n\nThe lock used in unix_state_lock() is a spin_lock not reader-writer.\n\nSigned-off-by: Stephen Hemminger \u003cshemminger@vyatta.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "2c8c1e7297e19bdef3c178c3ea41d898a7716e3e",
      "tree": "4d336562e8d5379732a0646e17b0bb1750111ef6",
      "parents": [
        "72659ecce68588b74f6c46862c2b4cec137d7a5a"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Sun Jan 17 03:35:32 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Jan 17 19:16:02 2010 -0800"
      },
      "message": "net: spread __net_init, __net_exit\n\n__net_init/__net_exit are apparently not going away, so use them\nto full extent.\n\nIn some cases __net_init was removed, because it was called from\n__net_exit code.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "d7fc02c7bae7b1cf69269992cf880a43a350cdaa",
      "tree": "a43d56fa72913a1cc98a0bbebe054d08581b3a7c",
      "parents": [
        "ee1262dbc65ce0b6234a915d8432171e8d77f518",
        "28b4d5cc17c20786848cdc07b7ea237a309776bb"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 08 07:55:01 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 08 07:55:01 2009 -0800"
      },
      "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: (1815 commits)\n  mac80211: fix reorder buffer release\n  iwmc3200wifi: Enable wimax core through module parameter\n  iwmc3200wifi: Add wifi-wimax coexistence mode as a module parameter\n  iwmc3200wifi: Coex table command does not expect a response\n  iwmc3200wifi: Update wiwi priority table\n  iwlwifi: driver version track kernel version\n  iwlwifi: indicate uCode type when fail dump error/event log\n  iwl3945: remove duplicated event logging code\n  b43: fix two warnings\n  ipw2100: fix rebooting hang with driver loaded\n  cfg80211: indent regulatory messages with spaces\n  iwmc3200wifi: fix NULL pointer dereference in pmkid update\n  mac80211: Fix TX status reporting for injected data frames\n  ath9k: enable 2GHz band only if the device supports it\n  airo: Fix integer overflow warning\n  rt2x00: Fix padding bug on L2PAD devices.\n  WE: Fix set events not propagated\n  b43legacy: avoid PPC fault during resume\n  b43: avoid PPC fault during resume\n  tcp: fix a timewait refcnt race\n  ...\n\nFix up conflicts due to sysctl cleanups (dead sysctl_check code and\nCTL_UNNUMBERED removed) in\n\tkernel/sysctl_check.c\n\tnet/ipv4/sysctl_net_ipv4.c\n\tnet/ipv6/addrconf.c\n\tnet/sctp/sysctl.c\n"
    },
    {
      "commit": "f64f9e719261a87818dd192a3a2352e5b20fbd0f",
      "tree": "b2d5cbaef3df615295f6061d8c4d6a912690556c",
      "parents": [
        "152b6a62aea2d43359dd37004e9c218bf7bdeb3b"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Sun Nov 29 16:55:45 2009 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Nov 29 16:55:45 2009 -0800"
      },
      "message": "net: Move \u0026\u0026 and || to end of previous line\n\nNot including net/atm/\n\nCompiled tested x86 allyesconfig only\nAdded a \u003e 80 column line or two, which I ignored.\nExisting checkpatch plaints willfully, cheerfully ignored.\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "f8572d8f2a2ba75408b97dc24ef47c83671795d7",
      "tree": "052506a457939fea00d138d3a982d778df34e14c",
      "parents": [
        "86b1bc68e2f4244e4ea5db5458df9d19259fbb30"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Thu Nov 05 13:32:03 2009 -0800"
      },
      "committer": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Thu Nov 12 02:05:06 2009 -0800"
      },
      "message": "sysctl net: Remove unused binary sysctl code\n\nNow that sys_sysctl is a compatiblity wrapper around /proc/sys\nall sysctl strategy routines, and all ctl_name and strategy\nentries in the sysctl tables are unused, and can be\nrevmoed.\n\nIn addition neigh_sysctl_register has been modified to no longer\ntake a strategy argument and it\u0027s callers have been modified not\nto pass one.\n\nCc: \"David Miller\" \u003cdavem@davemloft.net\u003e\nCc: Hideaki YOSHIFUJI \u003cyoshfuji@linux-ipv6.org\u003e\nCc: netdev@vger.kernel.org\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\n"
    },
    {
      "commit": "13cfa97bef0f1172879f98307ac716acf3e9cea9",
      "tree": "012d5da286e39fbe94c7b100be9153a49191bd7e",
      "parents": [
        "37e8273cd30592d3a82bcb70cbb1bdc4eaeb6b71"
      ],
      "author": {
        "name": "Cyrill Gorcunov",
        "email": "gorcunov@openvz.org",
        "time": "Sun Nov 08 05:51:19 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Nov 10 20:54:41 2009 -0800"
      },
      "message": "net: netlink_getname, packet_getname -- use DECLARE_SOCKADDR guard\n\nUse guard DECLARE_SOCKADDR in a few more places which allow\nus to catch if the structure copied back is too big.\n\nSigned-off-by: Cyrill Gorcunov \u003cgorcunov@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "3f378b684453f2a028eda463ce383370545d9cc9",
      "tree": "dc50d087e137c6d173e25ae10ecd0f10823eca7a",
      "parents": [
        "13f18aa05f5abe135f47b6417537ae2b2fedc18c"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Nov 05 22:18:14 2009 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Nov 05 22:18:14 2009 -0800"
      },
      "message": "net: pass kern to net_proto_family create function\n\nThe generic __sock_create function has a kern argument which allows the\nsecurity system to make decisions based on if a socket is being created by\nthe kernel or by userspace.  This patch passes that flag to the\nnet_proto_family specific create function, so it can do the same thing.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\nAcked-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "cfadf853f6cd9689f79a63ca960c6f9d6665314f",
      "tree": "35418e342d9783f0974ea33ef03875aa21d2362a",
      "parents": [
        "05423b241311c9380b7280179295bac7794281b6",
        "f568a926a353d6816b3704d7367f34371df44ce7"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Oct 27 01:03:26 2009 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Oct 27 01:03:26 2009 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6\n\nConflicts:\n\tdrivers/net/sh_eth.c\n"
    },
    {
      "commit": "77238f2b942b38ab4e7f3aced44084493e4a8675",
      "tree": "5cddd194862ca982d3f701167f897566a037c275",
      "parents": [
        "50c54a57dfbd392e17f1473717b8e125afcb01a3"
      ],
      "author": {
        "name": "Tomoki Sekiyama",
        "email": "tomoki.sekiyama.qu@hitachi.com",
        "time": "Sun Oct 18 23:17:37 2009 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Oct 18 23:17:37 2009 -0700"
      },
      "message": "AF_UNIX: Fix deadlock on connecting to shutdown socket\n\nI found a deadlock bug in UNIX domain socket, which makes able to DoS\nattack against the local machine by non-root users.\n\nHow to reproduce:\n1. Make a listening AF_UNIX/SOCK_STREAM socket with an abstruct\n    namespace(*), and shutdown(2) it.\n 2. Repeat connect(2)ing to the listening socket from the other sockets\n    until the connection backlog is full-filled.\n 3. connect(2) takes the CPU forever. If every core is taken, the\n    system hangs.\n\nPoC code: (Run as many times as cores on SMP machines.)\n\nint main(void)\n{\n\tint ret;\n\tint csd;\n\tint lsd;\n\tstruct sockaddr_un sun;\n\n\t/* make an abstruct name address (*) */\n\tmemset(\u0026sun, 0, sizeof(sun));\n\tsun.sun_family \u003d PF_UNIX;\n\tsprintf(\u0026sun.sun_path[1], \"%d\", getpid());\n\n\t/* create the listening socket and shutdown */\n\tlsd \u003d socket(AF_UNIX, SOCK_STREAM, 0);\n\tbind(lsd, (struct sockaddr *)\u0026sun, sizeof(sun));\n\tlisten(lsd, 1);\n\tshutdown(lsd, SHUT_RDWR);\n\n\t/* connect loop */\n\talarm(15); /* forcely exit the loop after 15 sec */\n\tfor (;;) {\n\t\tcsd \u003d socket(AF_UNIX, SOCK_STREAM, 0);\n\t\tret \u003d connect(csd, (struct sockaddr *)\u0026sun, sizeof(sun));\n\t\tif (-1 \u003d\u003d ret) {\n\t\t\tperror(\"connect()\");\n\t\t\tbreak;\n\t\t}\n\t\tputs(\"Connection OK\");\n\t}\n\treturn 0;\n}\n\n(*) Make sun_path[0] \u003d 0 to use the abstruct namespace.\n    If a file-based socket is used, the system doesn\u0027t deadlock because\n    of context switches in the file system layer.\n\nWhy this happens:\n Error checks between unix_socket_connect() and unix_wait_for_peer() are\n inconsistent. The former calls the latter to wait until the backlog is\n processed. Despite the latter returns without doing anything when the\n socket is shutdown, the former doesn\u0027t check the shutdown state and\n just retries calling the latter forever.\n\nPatch:\n The patch below adds shutdown check into unix_socket_connect(), so\n connect(2) to the shutdown socket will return -ECONREFUSED.\n\nSigned-off-by: Tomoki Sekiyama \u003ctomoki.sekiyama.qu@hitachi.com\u003e\nSigned-off-by: Masanori Yoshida \u003cmasanori.yoshida.tv@hitachi.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "ec1b4cf74c81bfd0fbe5bf62bafc86c45917e72f",
      "tree": "1b693e4e027f3e42224e6221ae018daeb562e5e1",
      "parents": [
        "f7734fdf61ec6bb848e0bafc1fb8bad2c124bb50"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Mon Oct 05 05:58:39 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Oct 07 01:10:46 2009 -0700"
      },
      "message": "net: mark net_proto_ops as const\n\nAll usages of structure net_proto_ops should be declared const.\n\nSigned-off-by: Stephen Hemminger \u003cshemminger@vyatta.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "8ba69ba6a324b13e1190fc31e41954d190fd4f1d",
      "tree": "3794f633c57ca8257242abccc891c8be7d58cdf0",
      "parents": [
        "9a0da0d19c573e01aded6ac17747d2efc5b1115f"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Fri Sep 11 11:31:45 2009 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Sep 11 11:31:45 2009 -0700"
      },
      "message": "net: unix: fix sending fds in multiple buffers\n\nKalle Olavi Niemitalo reported that:\n\n  \"..., when one process calls sendmsg once to send 43804 bytes of\n  data and one file descriptor, and another process then calls recvmsg\n  three times to receive the 16032+16032+11740 bytes, each of those\n  recvmsg calls returns the file descriptor in the ancillary data.  I\n  confirmed this with strace.  The behaviour differs from Linux\n  2.6.26, where reportedly only one of those recvmsg calls (I think\n  the first one) returned the file descriptor.\"\n\nThis bug was introduced by a patch from me titled \"net: unix: fix inflight\ncounting bug in garbage collector\", commit 6209344f5.\n\nAnd the reason is, quoting Kalle:\n\n  \"Before your patch, unix_attach_fds() would set scm-\u003efp \u003d NULL, so\n  that if the loop in unix_stream_sendmsg() ran multiple iterations,\n  it could not call unix_attach_fds() again.  But now,\n  unix_attach_fds() leaves scm-\u003efp unchanged, and I think this causes\n  it to be called multiple times and duplicate the same file\n  descriptors to each struct sk_buff.\"\n\nFix this by introducing a flag that is cleared at the start and set\nwhen the fds attached to the first buffer.  The resulting code should\nwork equivalently to the one on 2.6.26.\n\nReported-by: Kalle Olavi Niemitalo \u003ckon@iki.fi\u003e\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\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": "31e6d363abcd0d05766c82f1a9c905a4c974a199",
      "tree": "f2b5c46354d95f91e743ae748b8add0de8bffd17",
      "parents": [
        "d3b238a03efd6d644ff93c8b10a1d38a596f2e34"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Wed Jun 17 19:05:41 2009 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Jun 18 00:29:12 2009 -0700"
      },
      "message": "net: correct off-by-one write allocations reports\n\ncommit 2b85a34e911bf483c27cfdd124aeb1605145dc80\n(net: No more expensive sock_hold()/sock_put() on each tx)\nchanged initial sk_wmem_alloc value.\n\nWe need to take into account this offset when reporting\nsk_wmem_alloc to user, in PROC_FS files or various\nioctls (SIOCOUTQ/TIOCOUTQ)\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "ce3b0f8d5c2203301fc87f3aaaed73e5819e2a48",
      "tree": "ab952affafe18e604f6aaf6b13315b9435588e60",
      "parents": [
        "f1191b50ec11c8e2ca766d6d99eb5bb9d2c084a3"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Mar 29 19:08:22 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Mar 31 23:00:26 2009 -0400"
      },
      "message": "New helper - current_umask()\n\ncurrent-\u003efs-\u003eumask is what most of fs_struct users are doing.\nPut that into a helper function.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "40d44446cf10d9d118e8f0132c94e1f25ea3be97",
      "tree": "5bf098f45d53c955792af9f85eda1ec123b1b3c4",
      "parents": [
        "86dc1ad2be17a7436ee8c6799f6b55e5a5b930f4"
      ],
      "author": {
        "name": "Wei Yongjun",
        "email": "yjwei@cn.fujitsu.com",
        "time": "Wed Feb 25 00:32:45 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Feb 26 23:07:34 2009 -0800"
      },
      "message": "unix: remove some pointless conditionals before kfree_skb()\n\nRemove some pointless conditionals before kfree_skb().\n\nSigned-off-by: Wei Yongjun \u003cyjwei@cn.fujitsu.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "be6d3e56a6b9b3a4ee44a0685e39e595073c6f0d",
      "tree": "3a770f4cc676efeba443b28caa1ad195eeff49bc",
      "parents": [
        "6a94cb73064c952255336cc57731904174b2c58f"
      ],
      "author": {
        "name": "Kentaro Takeda",
        "email": "takedakn@nttdata.co.jp",
        "time": "Wed Dec 17 13:24:15 2008 +0900"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Dec 31 18:07:37 2008 -0500"
      },
      "message": "introduce new LSM hooks where vfsmount is available.\n\nAdd new LSM hooks for path-based checks.  Call them on directory-modifying\noperations at the points where we still know the vfsmount involved.\n\nSigned-off-by: Kentaro Takeda \u003ctakedakn@nttdata.co.jp\u003e\nSigned-off-by: Tetsuo Handa \u003cpenguin-kernel@I-love.SAKURA.ne.jp\u003e\nSigned-off-by: Toshiharu Harada \u003charadats@nttdata.co.jp\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "0191b625ca5a46206d2fb862bb08f36f2fcb3b31",
      "tree": "454d1842b1833d976da62abcbd5c47521ebe9bd7",
      "parents": [
        "54a696bd07c14d3b1192d03ce7269bc59b45209a",
        "eb56092fc168bf5af199d47af50c0d84a96db898"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Dec 28 12:49:40 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Dec 28 12:49:40 2008 -0800"
      },
      "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: (1429 commits)\n  net: Allow dependancies of FDDI \u0026 Tokenring to be modular.\n  igb: Fix build warning when DCA is disabled.\n  net: Fix warning fallout from recent NAPI interface changes.\n  gro: Fix potential use after free\n  sfc: If AN is enabled, always read speed/duplex from the AN advertising bits\n  sfc: When disabling the NIC, close the device rather than unregistering it\n  sfc: SFT9001: Add cable diagnostics\n  sfc: Add support for multiple PHY self-tests\n  sfc: Merge top-level functions for self-tests\n  sfc: Clean up PHY mode management in loopback self-test\n  sfc: Fix unreliable link detection in some loopback modes\n  sfc: Generate unique names for per-NIC workqueues\n  802.3ad: use standard ethhdr instead of ad_header\n  802.3ad: generalize out mac address initializer\n  802.3ad: initialize ports LACPDU from const initializer\n  802.3ad: remove typedef around ad_system\n  802.3ad: turn ports is_individual into a bool\n  802.3ad: turn ports is_enabled into a bool\n  802.3ad: make ntt bool\n  ixgbe: Fix set_ringparam in ixgbe to use the same memory pools.\n  ...\n\nFixed trivial IPv4/6 address printing conflicts in fs/cifs/connect.c due\nto the conversion to %pI (in this networking merge) and the addition of\ndoing IPv6 addresses (from the earlier merge of CIFS).\n"
    },
    {
      "commit": "ec98ce480ada787f2cfbd696980ff3564415505b",
      "tree": "1a4d644b38f9f1e4b4e086fde0b195df4a92cf84",
      "parents": [
        "3496f92beb9aa99ef21fccc154a36c7698e9c538",
        "feaf3848a813a106f163013af6fcf6c4bfec92d9"
      ],
      "author": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Thu Dec 04 17:16:36 2008 +1100"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Thu Dec 04 17:16:36 2008 +1100"
      },
      "message": "Merge branch \u0027master\u0027 into next\n\nConflicts:\n\tfs/nfsd/nfs4recover.c\n\nManually fixed above to use new creds API functions, e.g.\nnfs4_save_creds().\n\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "aa2ba5f1082dc705745899584aac8416d710c056",
      "tree": "bde0bf4aff036c6bac19a0212194ae1092afb3c9",
      "parents": [
        "68024541e2e5a8f35e281daaa5068a29e2a538a5",
        "f6f7b52e2f6149d2ee365717afff315b05720162"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Dec 02 19:50:27 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Dec 02 19:50:27 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/net/ixgbe/ixgbe_main.c\n\tdrivers/net/smc91x.c\n"
    },
    {
      "commit": "5f23b734963ec7eaa3ebcd9050da0c9b7d143dd3",
      "tree": "f82c2265540dd5d32d64f08976cd9b6216842544",
      "parents": [
        "efbbced361f3ff4ff9e85310ccff894185c4d904"
      ],
      "author": {
        "name": "dann frazier",
        "email": "dannf@hp.com",
        "time": "Wed Nov 26 15:32:27 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Nov 26 15:32:27 2008 -0800"
      },
      "message": "net: Fix soft lockups/OOM issues w/ unix garbage collector\n\nThis is an implementation of David Miller\u0027s suggested fix in:\n  https://bugzilla.redhat.com/show_bug.cgi?id\u003d470201\n\nIt has been updated to use wait_event() instead of\nwait_event_interruptible().\n\nParaphrasing the description from the above report, it makes sendmsg()\nblock while UNIX garbage collection is in progress. This avoids a\nsituation where child processes continue to queue new FDs over a\nAF_UNIX socket to a parent which is in the exit path and running\ngarbage collection on these FDs. This contention can result in soft\nlockups and oom-killing of unrelated processes.\n\nSigned-off-by: dann frazier \u003cdannf@hp.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": "920de804bca61f88643bc9171bcd06f1a56c6258",
      "tree": "fb4c90b4b167a4b7518ea888e99bfd18a7d301fb",
      "parents": [
        "1f87e235e6fb92c2968b52b9191de04f1aff8e77"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Mon Nov 24 00:09:29 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Nov 24 00:09:29 2008 -0800"
      },
      "message": "net: Make sure BHs are disabled in sock_prot_inuse_add()\n\nThe rule of calling sock_prot_inuse_add() is that BHs must\nbe disabled.  Some new calls were added where this was not\ntrue and this tiggers warnings as reported by Ilpo.\n\nFix this by adding explicit BH disabling around those call sites,\nor moving sock_prot_inuse_add() call inside an existing BH disabled\nsection.\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "6f756a8c36bf54d0afb1d457082b3e3033d951a7",
      "tree": "33efc99e3df9edf1d777a00913852d24d19b930b",
      "parents": [
        "be77e5930725c3e77bcc0fb1def28e016080d0a1"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Nov 23 17:34:03 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Nov 23 17:34:03 2008 -0800"
      },
      "message": "net: Make sure BHs are disabled in sock_prot_inuse_add()\n\nThe rule of calling sock_prot_inuse_add() is that BHs must\nbe disabled.  Some new calls were added where this was not\ntrue and this tiggers warnings as reported by Ilpo.\n\nFix this by adding explicit BH disabling around those call sites.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "6b41e7dd90c6a628ab5fb8d781302d60a243b2ce",
      "tree": "87f1d679eb02bae2a9313c872d45729ab9254661",
      "parents": [
        "d171235e712c11c0a0f47f62619024bf726125e1"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Wed Nov 19 15:48:09 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Nov 19 15:48:09 2008 -0800"
      },
      "message": "net: af_unix should use KERN_INFO instead of KERN_DEBUG\n\nAs spotted by Joe Perches, we should use KERN_INFO in unix_sock_destructor()\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "07f0757a6808f2f36a0e58c3a54867ccffdb8dc9",
      "tree": "e04b573c3f1471ff21c6b2499682a620f4db7eae",
      "parents": [
        "a7a0d6a87b70f7b2bab5281fc0fd443772bd0795"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Wed Nov 19 15:44:53 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Nov 19 15:44:53 2008 -0800"
      },
      "message": "include/net net/ - csum_partial - remove unnecessary casts\n\nThe first argument to csum_partial is const void *\ncasts to char/u8 * are not necessary\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "a8076d8db98de6da61394b2e942320e4612643ac",
      "tree": "c1c0e52d635197e86b017fe09850a0f6ad261785",
      "parents": [
        "248969ae31e1b3276fc4399d67ce29a5d81e6fd9"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Mon Nov 17 02:38:49 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Nov 17 02:38:49 2008 -0800"
      },
      "message": "net: af_unix should update its inuse counter\n\nThis patch is a preparation to namespace conversion of /proc/net/protocols\n\nIn order to have relevant information for UNIX protocol, we should use\nsock_prot_inuse_add() to update a (percpu and pernamespace) counter of\ninuse sockets.\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    }
  ],
  "next": "248969ae31e1b3276fc4399d67ce29a5d81e6fd9"
}
