)]}'
{
  "log": [
    {
      "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"
    },
    {
      "commit": "248969ae31e1b3276fc4399d67ce29a5d81e6fd9",
      "tree": "13b57b061262af3cb2fba0aa8384d67f999ba7c2",
      "parents": [
        "c3ccc12339afa2633c72131e2aa97d52d9ca1b8a"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Mon Nov 17 00:00:30 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Nov 17 00:00:30 2008 -0800"
      },
      "message": "net: af_unix can make unix_nr_socks visbile in /proc\n\nCurrently, /proc/net/protocols displays socket counts only for TCP/TCPv6\nprotocols\n\nWe can provide unix_nr_socks for free here, this counter being\nalready maintained in af_unix\n\nBefore patch :\n\n# grep UNIX /proc/net/protocols\nUNIX       428     -1      -1   NI       0   yes  kernel\n\nAfter patch :\n\n# grep UNIX /proc/net/protocols\nUNIX       428     98      -1   NI       0   yes  kernel\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "6eba6a372b501aa3cdfb7df21a8364099125b9c4",
      "tree": "0ba82e1cc565584a82a4ddd3dd2c2a99dec0cdd4",
      "parents": [
        "191029963630719e867d8bd0c315d32c822622cb"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Sun Nov 16 22:58:44 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Nov 16 22:58:44 2008 -0800"
      },
      "message": "net: Cleanup of af_unix\n\nThis is a pure cleanup of net/unix/af_unix.c to meet current code\nstyle standards\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "2b828925652340277a889cbc11b2d0637f7cdaf7",
      "tree": "32fcb3d3e466fc419fad2d3717956a5b5ad3d35a",
      "parents": [
        "3a3b7ce9336952ea7b9564d976d068a238976c9d",
        "58e20d8d344b0ee083febb18c2b021d2427e56ca"
      ],
      "author": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Fri Nov 14 11:29:12 2008 +1100"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Fri Nov 14 11:29:12 2008 +1100"
      },
      "message": "Merge branch \u0027master\u0027 into next\n\nConflicts:\n\tsecurity/keys/internal.h\n\tsecurity/keys/process_keys.c\n\tsecurity/keys/request_key.c\n\nFixed conflicts above by using the non \u0027tsk\u0027 versions.\n\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "19d65624d38d6296dddf725d1b03baa8a491a553",
      "tree": "845b0cef28abf1c1c5baeafefbeeae1c53c88160",
      "parents": [
        "8f4194026bb1e3d95fedb340a2935895845ea1d5"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Nov 14 10:39:10 2008 +1100"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Fri Nov 14 10:39:10 2008 +1100"
      },
      "message": "CRED: Wrap task credential accesses in the UNIX socket protocol\n\nWrap access to task credentials so that they can be separated more easily from\nthe task_struct during the introduction of COW creds.\n\nChange most current-\u003e(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id().\n\nChange some task-\u003ee?[ug]id to task_e?[ug]id().  In some places it makes more\nsense to use RCU directly rather than a convenient wrapper; these will be\naddressed by later patches.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nReviewed-by: James Morris \u003cjmorris@namei.org\u003e\nAcked-by: Serge Hallyn \u003cserue@us.ibm.com\u003e\nCc: netdev@vger.kernel.org\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "7e452baf6b96b5aeba097afd91501d33d390cc97",
      "tree": "9b0e062d3677d50d731ffd0fba47423bfdee9253",
      "parents": [
        "3ac38c3a2e7dac3f8f35a56eb85c27881a4c3833",
        "f21f237cf55494c3a4209de323281a3b0528da10"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Nov 11 15:43:02 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Nov 11 15:43:02 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/message/fusion/mptlan.c\n\tdrivers/net/sfc/ethtool.c\n\tnet/mac80211/debugfs_sta.c\n"
    },
    {
      "commit": "6209344f5a3795d34b7f2c0061f49802283b6bdd",
      "tree": "5c037ddbb8caac17b0c6101c9ab86387df106d41",
      "parents": [
        "058e3739f6b0753696db1952378de9e8d2a11735"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Sun Nov 09 15:23:57 2008 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Nov 09 11:17:33 2008 -0800"
      },
      "message": "net: unix: fix inflight counting bug in garbage collector\n\nPreviously I assumed that the receive queues of candidates don\u0027t\nchange during the GC.  This is only half true, nothing can be received\nfrom the queues (see comment in unix_gc()), but buffers could be added\nthrough the other half of the socket pair, which may still have file\ndescriptors referring to it.\n\nThis can result in inc_inflight_move_tail() erronously increasing the\n\"inflight\" counter for a unix socket for which dec_inflight() wasn\u0027t\npreviously called.  This in turn can trigger the \"BUG_ON(total_refs \u003c\ninflight_refs)\" in a later garbage collection run.\n\nFix this by only manipulating the \"inflight\" counter for sockets which\nare candidates themselves.  Duplicating the file references in\nunix_attach_fds() is also needed to prevent a socket becoming a\ncandidate for GC while the skb that contains it is not yet queued.\n\nReported-by: Andrea Bittau \u003ca.bittau@cs.ucl.ac.uk\u003e\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nCC: stable@kernel.org\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9eeda9abd1faf489f3df9a1f557975f4c8650363",
      "tree": "3e0a58e25b776cfbee193195460324dccb1886c7",
      "parents": [
        "61c9eaf90081cbe6dc4f389e0056bff76eca19ec",
        "4bab0ea1d42dd1927af9df6fbf0003fc00617c50"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Nov 06 22:43:03 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Nov 06 22:43:03 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/wireless/ath5k/base.c\n\tnet/8021q/vlan_core.c\n"
    },
    {
      "commit": "6d9f239a1edb31d6133230f478fd1dc2da338ec5",
      "tree": "305fa0da95a49db4e342f3f3042f8be0968b03ce",
      "parents": [
        "6cf3f41e6c08bca6641a695449791c38a25f35ff"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon Nov 03 18:21:05 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Nov 03 18:21:05 2008 -0800"
      },
      "message": "net: \u0027\u0026\u0027 redux\n\nI want to compile out proc_* and sysctl_* handlers totally and\nstub them to NULL depending on config options, however usage of \u0026\nwill prevent this, since taking adress of NULL pointer will break\ncompilation.\n\nSo, drop \u0026 in front of every -\u003eproc_handler and every -\u003estrategy\nhandler, it was never needed in fact.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "e27dfcea48372a4105d9fdf2e8450926737f6215",
      "tree": "2530f222be8dc52a3676afc552f19b6745e115bc",
      "parents": [
        "c37ccc0d4e2a4ee52f1a40cff1be0049f2104bba"
      ],
      "author": {
        "name": "Jianjun Kong",
        "email": "jianjun@zeuux.org",
        "time": "Sat Nov 01 21:38:31 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Nov 01 21:38:31 2008 -0700"
      },
      "message": "af_unix: clean up net/unix/af_unix.c garbage.c sysctl_net_unix.c\n\nclean up net/unix/af_unix.c garbage.c sysctl_net_unix.c\n\nSigned-off-by: Jianjun Kong \u003cjianjun@zeuux.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "48dcc33e5e11de0f76b65b113988dbc930d17395",
      "tree": "5d541fc8c41d8bf9758f3ecec721f4a4b432d786",
      "parents": [
        "abdd5a0301a6306d6465ceca9de8e732b2fedaa5"
      ],
      "author": {
        "name": "Jianjun Kong",
        "email": "jianjun@zeuux.org",
        "time": "Sat Nov 01 21:37:27 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Nov 01 21:37:27 2008 -0700"
      },
      "message": "af_unix: netns: fix problem of return value\n\nfix problem of return value\n\nnet/unix/af_unix.c: unix_net_init()\nwhen error appears, it should return \u0027error\u0027, not always return 0.\n\nSigned-off-by: Jianjun Kong \u003cjianjun@zeuux.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "421748ecde8e69a6364e5ae66eb3bf87e1f995c0",
      "tree": "50ef878f8c46b1ec729625ed678d04aaeaaee6dd",
      "parents": [
        "a63bb99660d82dfe7c51588e1f9aadefb756ba51"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Aug 02 01:04:36 2008 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Oct 23 05:12:52 2008 -0400"
      },
      "message": "[PATCH] assorted path_lookup() -\u003e kern_path() conversions\n\nmore nameidata eviction\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "113aa838ec3a235d883f8357d31d90e16c47fc89",
      "tree": "4e25254fb0402aea01074244879f574e213a9f31",
      "parents": [
        "510149e31974fdbb2c00c9bee6c0e2a688e61c85"
      ],
      "author": {
        "name": "Alan Cox",
        "email": "alan@redhat.com",
        "time": "Mon Oct 13 19:01:08 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Oct 13 19:01:08 2008 -0700"
      },
      "message": "net: Rationalise email address: Network Specific Parts\n\nClean up the various different email addresses of mine listed in the code\nto a single current and valid address. As Dave says his network merges\nfor 2.6.28 are now done this seems a good point to send them in where\nthey won\u0027t risk disrupting real changes.\n\nSigned-off-by: Alan Cox \u003calan@redhat.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "4836e3007882984279ca63d3c42bf0b14616eb78",
      "tree": "28bf22726964e068b825491d71a141eefedbe5f8",
      "parents": [
        "5c7c204aeca51ccfad63caab4fcdc5d8026c0fd8",
        "4e1e018ecc6f7bfd10fc75b3ff9715cc8164e0a2"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jul 26 20:23:44 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jul 26 20:23:44 2008 -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: (39 commits)\n  [PATCH] fix RLIM_NOFILE handling\n  [PATCH] get rid of corner case in dup3() entirely\n  [PATCH] remove remaining namei_{32,64}.h crap\n  [PATCH] get rid of indirect users of namei.h\n  [PATCH] get rid of __user_path_lookup_open\n  [PATCH] f_count may wrap around\n  [PATCH] dup3 fix\n  [PATCH] don\u0027t pass nameidata to __ncp_lookup_validate()\n  [PATCH] don\u0027t pass nameidata to gfs2_lookupi()\n  [PATCH] new (local) helper: user_path_parent()\n  [PATCH] sanitize __user_walk_fd() et.al.\n  [PATCH] preparation to __user_walk_fd cleanup\n  [PATCH] kill nameidata passing to permission(), rename to inode_permission()\n  [PATCH] take noexec checks to very few callers that care\n  Re: [PATCH 3/6] vfs: open_exec cleanup\n  [patch 4/4] vfs: immutable inode checking cleanup\n  [patch 3/4] fat: dont call notify_change\n  [patch 2/4] vfs: utimes cleanup\n  [patch 1/4] vfs: utimes: move owner check into inode_change_ok()\n  [PATCH] vfs: use kstrdup() and check failing allocation\n  ...\n"
    },
    {
      "commit": "516e0cc5646f377ab80fcc2ee639892eccb99853",
      "tree": "e06296dcedb42dbe397d237887873e70c5823d51",
      "parents": [
        "3c333937ee3be114b181c4861188cfe8f6a59697"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 26 00:39:17 2008 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 26 20:53:40 2008 -0400"
      },
      "message": "[PATCH] f_count may wrap around\n\nmake it atomic_long_t; while we are at it, get rid of useless checks in affs,\nhfs and hpfs - -\u003eopen() always has it equal to 1, -\u003erelease() - to 0.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "547b792cac0a038b9dbf958d3c120df3740b5572",
      "tree": "08554d083b0ca7d65739dc1ce12f9b12a9b8e1f8",
      "parents": [
        "53e5e96ec18da6f65e89f05674711e1c93d8df67"
      ],
      "author": {
        "name": "Ilpo Järvinen",
        "email": "ilpo.jarvinen@helsinki.fi",
        "time": "Fri Jul 25 21:43:18 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jul 25 21:43:18 2008 -0700"
      },
      "message": "net: convert BUG_TRAP to generic WARN_ON\n\nRemoves legacy reinvent-the-wheel type thing. The generic\nmachinery integrates much better to automated debugging aids\nsuch as kerneloops.org (and others), and is unambiguous due to\nbetter naming. Non-intuively BUG_TRAP() is actually equal to\nWARN_ON() rather than BUG_ON() though some might actually be\npromoted to BUG_ON() but I left that to future.\n\nI could make at least one BUILD_BUG_ON conversion.\n\nSigned-off-by: Ilpo Järvinen \u003cilpo.jarvinen@helsinki.fi\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "1b63ba8a86c85524a8d7e5953b314ce71ebcb9c9",
      "tree": "fe3dc41cbb47ae12b7c3faf6a88b097349e50d5a",
      "parents": [
        "e35c3269edba151e1c703d87068a28ce2cd65bb0",
        "d420895efb259a78dda50f95289571faa6e10e41"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Jun 28 01:19:40 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Jun 28 01:19:40 2008 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6\n\nConflicts:\n\n\tdrivers/net/wireless/iwlwifi/iwl4965-base.c\n"
    },
    {
      "commit": "ec0d215f9420564fc8286dcf93d2d068bb53a07e",
      "tree": "f28d77219b4983c5e8c042202d5e37a746f05e60",
      "parents": [
        "db43a282d3ec92ea45109c5551fff3dcc5afef02"
      ],
      "author": {
        "name": "Rainer Weikusat",
        "email": "rweikusat@mssgmbh.com",
        "time": "Fri Jun 27 19:34:18 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jun 27 19:34:18 2008 -0700"
      },
      "message": "af_unix: fix \u0027poll for write\u0027/connected DGRAM sockets\n\nFor n:1 \u0027datagram connections\u0027 (eg /dev/log), the unix_dgram_sendmsg\nroutine implements a form of receiver-imposed flow control by\ncomparing the length of the receive queue of the \u0027peer socket\u0027 with\nthe max_ack_backlog value stored in the corresponding sock structure,\neither blocking the thread which caused the send-routine to be called\nor returning EAGAIN. This routine is used by both SOCK_DGRAM and\nSOCK_SEQPACKET sockets. The poll-implementation for these socket types\nis datagram_poll from core/datagram.c. A socket is deemed to be\nwriteable by this routine when the memory presently consumed by\ndatagrams owned by it is less than the configured socket send buffer\nsize. This is always wrong for PF_UNIX non-stream sockets connected to\nserver sockets dealing with (potentially) multiple clients if the\nabovementioned receive queue is currently considered to be full.\n\u0027poll\u0027 will then return, indicating that the socket is writeable, but\na subsequent write result in EAGAIN, effectively causing an (usual)\napplication to \u0027poll for writeability by repeated send request with\nO_NONBLOCK set\u0027 until it has consumed its time quantum.\n\nThe change below uses a suitably modified variant of the datagram_poll\nroutines for both type of PF_UNIX sockets, which tests if the\nrecv-queue of the peer a socket is connected to is presently\nconsidered to be \u0027full\u0027 as part of the \u0027is this socket\nwriteable\u0027-checking code. The socket being polled is additionally\nput onto the peer_wait wait queue associated with its peer, because the\nunix_dgram_recvmsg routine does a wake up on this queue after a\ndatagram was received and the \u0027other wakeup call\u0027 is done implicitly\nas part of skb destruction, meaning, a process blocked in poll\nbecause of a full peer receive queue could otherwise sleep forever\nif no datagram owned by its socket was already sitting on this queue.\nAmong this change is a small (inline) helper routine named\n\u0027unix_recvq_full\u0027, which consolidates the actual testing code (in three\ndifferent places) into a single location.\n\nSigned-off-by: Rainer Weikusat \u003crweikusat@mssgmbh.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "0344f1c66b544609e867bd24aa7bfa789dfa9830",
      "tree": "7f76abc095a90f7ad475417495d3d4f577080ae1",
      "parents": [
        "dad9b335c6940de2746a9788eb456d09cf102f81",
        "ef3a62d272f033989e83eb1f26505f93f93e3e69"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Jun 19 16:00:04 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Jun 19 16:00:04 2008 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6\n\nConflicts:\n\n\tnet/mac80211/tx.c\n"
    },
    {
      "commit": "3c73419c09a5ef73d56472dbfdade9e311496e9b",
      "tree": "19dc2714a4649445bc7cbcd06c0d1851962d41fc",
      "parents": [
        "4552e1198a08198ce0b42e856845b5394c82c59c"
      ],
      "author": {
        "name": "Rainer Weikusat",
        "email": "rweikusat@mssgmbh.com",
        "time": "Tue Jun 17 22:28:05 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jun 17 22:28:05 2008 -0700"
      },
      "message": "af_unix: fix \u0027poll for write\u0027/ connected DGRAM sockets\n\nThe unix_dgram_sendmsg routine implements a (somewhat crude)\nform of receiver-imposed flow control by comparing the length of the\nreceive queue of the \u0027peer socket\u0027 with the max_ack_backlog value\nstored in the corresponding sock structure, either blocking\nthe thread which caused the send-routine to be called or returning\nEAGAIN. This routine is used by both SOCK_DGRAM and SOCK_SEQPACKET\nsockets. The poll-implementation for these socket types is\ndatagram_poll from core/datagram.c. A socket is deemed to be writeable\nby this routine when the memory presently consumed by datagrams\nowned by it is less than the configured socket send buffer size. This\nis always wrong for connected PF_UNIX non-stream sockets when the\nabovementioned receive queue is currently considered to be full.\n\u0027poll\u0027 will then return, indicating that the socket is writeable, but\na subsequent write result in EAGAIN, effectively causing an\n(usual) application to \u0027poll for writeability by repeated send request\nwith O_NONBLOCK set\u0027 until it has consumed its time quantum.\n\nThe change below uses a suitably modified variant of the datagram_poll\nroutines for both type of PF_UNIX sockets, which tests if the\nrecv-queue of the peer a socket is connected to is presently\nconsidered to be \u0027full\u0027 as part of the \u0027is this socket\nwriteable\u0027-checking code. The socket being polled is additionally\nput onto the peer_wait wait queue associated with its peer, because the\nunix_dgram_sendmsg routine does a wake up on this queue after a\ndatagram was received and the \u0027other wakeup call\u0027 is done implicitly\nas part of skb destruction, meaning, a process blocked in poll\nbecause of a full peer receive queue could otherwise sleep forever\nif no datagram owned by its socket was already sitting on this queue.\nAmong this change is a small (inline) helper routine named\n\u0027unix_recvq_full\u0027, which consolidates the actual testing code (in three\ndifferent places) into a single location.\n\nSigned-off-by: Rainer Weikusat \u003crweikusat@mssgmbh.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "0b040829952d84bf2a62526f0e24b624e0699447",
      "tree": "b2e836e7e64343f19b949e50099bbe2ea554ec30",
      "parents": [
        "573bf470e693f73a6ac437b17a64a10902ba54bf"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@kernel.org",
        "time": "Tue Jun 10 22:46:50 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jun 11 21:00:38 2008 -0700"
      },
      "message": "net: remove CVS keywords\n\nThis patch removes CVS keywords that weren\u0027t updated for a long time\nfrom comments.\n\nSigned-off-by: Adrian Bunk \u003cbunk@kernel.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "d02aacff4467806ee56f147ac8eff6911d95811a",
      "tree": "3bc6197f735f18dd4c3cd7c77f2a45bb9b8fac16",
      "parents": [
        "e270b51df657011983241ec61a1fc7de186e16cd",
        "9edb74cc6ccb3a893c3d40727b7003c3c16f85a0"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 24 08:40:34 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 24 08:40:34 2008 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (22 commits)\n  tun: Multicast handling in tun_chr_ioctl() needs proper locking.\n  [NET]: Fix heavy stack usage in seq_file output routines.\n  [AF_UNIX] Initialise UNIX sockets before general device initcalls\n  [RTNETLINK]: Fix bogus ASSERT_RTNL warning\n  iwlwifi: Fix built-in compilation of iwlcore (part 2)\n  tun: Fix minor race in TUNSETLINK ioctl handling.\n  ppp_generic: use stats from net_device structure\n  iwlwifi: Don\u0027t unlock priv-\u003emutex if it isn\u0027t locked\n  wireless: rndis_wlan: modparam_workaround_interval is never below 0.\n  prism54: prism54_get_encode() test below 0 on unsigned index\n  mac80211: update mesh EID values\n  b43: Workaround DMA quirks\n  mac80211: fix use before check of Qdisc length\n  net/mac80211/rx.c: fix off-by-one\n  mac80211: Fix race between ieee80211_rx_bss_put and lookup routines.\n  ath5k: Fix radio identification on AR5424/2424\n  ssb: Fix all-ones boardflags\n  b43: Add more btcoexist workarounds\n  b43: Fix HostFlags data types\n  b43: Workaround invalid bluetooth settings\n  ...\n"
    },
    {
      "commit": "3d36696024499aef19dbf24a781e91a24fbbe4af",
      "tree": "2d999dfee2897123f6fb16e2a75327ac8db2020d",
      "parents": [
        "c9c1014b2bd014c7ec037bbb6f58818162fdb265"
      ],
      "author": {
        "name": "David Woodhouse",
        "email": "dwmw2@infradead.org",
        "time": "Thu Apr 24 00:59:25 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Apr 24 00:59:25 2008 -0700"
      },
      "message": "[AF_UNIX] Initialise UNIX sockets before general device initcalls\n\nWhen drivers call request_module(), it tries to do something with UNIX\nsockets and triggers a \u0027runaway loop modprobe net-pf-1\u0027 warning. Avoid\nthis by initialising AF_UNIX support earlier.\n\nSigned-off-by: David Woodhouse \u003cdwmw2@infradead.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "463c3197263bd26ac59a00d2484990e17e35c50e",
      "tree": "b27c04f978ccd447ae33f7387b6a4aba0033acc5",
      "parents": [
        "0622753b800e4cc6cb9319b36b27658c72dd7cdc"
      ],
      "author": {
        "name": "Dave Hansen",
        "email": "haveblue@us.ibm.com",
        "time": "Fri Feb 15 14:37:57 2008 -0800"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Apr 19 00:25:34 2008 -0400"
      },
      "message": "[PATCH] r/o bind mounts: get callers of vfs_mknod/create/mkdir()\n\nThis takes care of all of the direct callers of vfs_mknod().\nSince a few of these cases also handle normal file creation\nas well, this also covers some calls to vfs_create().\n\nSo that we don\u0027t have to make three mnt_want/drop_write()\ncalls inside of the switch statement, we move some of its\nlogic outside of the switch and into a helper function\nsuggested by Christoph.\n\nThis also encapsulates a fix for mknod(S_IFREG) that Miklos\nfound.\n\n[AV: merged mkdir handling, added missing nfsd pieces]\n\nAcked-by: Al Viro \u003cviro@ZenIV.linux.org.uk\u003e\nSigned-off-by: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "b9f3124f08fffe2ad706fd164f6702fdca409a91",
      "tree": "c58bf735e48e746fcedaba9d9ef70732a8781627",
      "parents": [
        "1a4187963e5a706e78bbfa2d5b2e9101a63f1f7c"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Sat Apr 12 19:04:38 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Apr 12 19:04:38 2008 -0700"
      },
      "message": "[AF_UNIX]: Use SEQ_START_TOKEN\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "878628fbf2589eb24357e42027d5f54b1dafd3c8",
      "tree": "30c109d8f337b3910e3b5364877c3c521dd700b5",
      "parents": [
        "57da52c1e62c6c13875e97de6c69d3156f8416da"
      ],
      "author": {
        "name": "YOSHIFUJI Hideaki",
        "email": "yoshfuji@linux-ipv6.org",
        "time": "Wed Mar 26 03:57:35 2008 +0900"
      },
      "committer": {
        "name": "YOSHIFUJI Hideaki",
        "email": "yoshfuji@linux-ipv6.org",
        "time": "Wed Mar 26 04:40:00 2008 +0900"
      },
      "message": "[NET] NETNS: Omit namespace comparision without CONFIG_NET_NS.\n\nIntroduce an inline net_eq() to compare two namespaces.\nWithout CONFIG_NET_NS, since no namespace other than \u0026init_net\nexists, it is always 1.\n\nWe do not need to convert 1) inline vs inline and\n2) inline vs \u0026init_net comparisons.\n\nSigned-off-by: YOSHIFUJI Hideaki \u003cyoshfuji@linux-ipv6.org\u003e\n"
    },
    {
      "commit": "1218854afa6f659be90b748cf1bc7badee954a35",
      "tree": "78b83e3941fa7e5a03c04e2e4f6ddb1a08ea38a0",
      "parents": [
        "3b1e0a655f8eba44ab1ee2a1068d169ccfb853b9"
      ],
      "author": {
        "name": "YOSHIFUJI Hideaki",
        "email": "yoshfuji@linux-ipv6.org",
        "time": "Wed Mar 26 02:36:06 2008 +0900"
      },
      "committer": {
        "name": "YOSHIFUJI Hideaki",
        "email": "yoshfuji@linux-ipv6.org",
        "time": "Wed Mar 26 04:39:56 2008 +0900"
      },
      "message": "[NET] NETNS: Omit seq_net_private-\u003enet without CONFIG_NET_NS.\n\nWithout CONFIG_NET_NS, no namespace other than \u0026init_net exists,\nno need to store net in seq_net_private.\n\nSigned-off-by: YOSHIFUJI Hideaki \u003cyoshfuji@linux-ipv6.org\u003e\n"
    },
    {
      "commit": "3b1e0a655f8eba44ab1ee2a1068d169ccfb853b9",
      "tree": "09edb35f32ebcfb1b4dad904425128a110ef16ee",
      "parents": [
        "c346dca10840a874240c78efe3f39acf4312a1f2"
      ],
      "author": {
        "name": "YOSHIFUJI Hideaki",
        "email": "yoshfuji@linux-ipv6.org",
        "time": "Wed Mar 26 02:26:21 2008 +0900"
      },
      "committer": {
        "name": "YOSHIFUJI Hideaki",
        "email": "yoshfuji@linux-ipv6.org",
        "time": "Wed Mar 26 04:39:55 2008 +0900"
      },
      "message": "[NET] NETNS: Omit sock-\u003esk_net without CONFIG_NET_NS.\n\nIntroduce per-sock inlines: sock_net(), sock_net_set()\nand per-inet_timewait_sock inlines: twsk_net(), twsk_net_set().\nWithout CONFIG_NET_NS, no namespace other than \u0026init_net exists.\nLet\u0027s explicitly define them to help compiler optimizations.\n\nSigned-off-by: YOSHIFUJI Hideaki \u003cyoshfuji@linux-ipv6.org\u003e\n"
    },
    {
      "commit": "0dc47877a3de00ceadea0005189656ae8dc52669",
      "tree": "7440a87385fe318cb42f0ae161be195f5e967d82",
      "parents": [
        "6387c4bed539539b05fa773cf2ff26529dc3074c"
      ],
      "author": {
        "name": "Harvey Harrison",
        "email": "harvey.harrison@gmail.com",
        "time": "Wed Mar 05 20:47:47 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Mar 05 20:47:47 2008 -0800"
      },
      "message": "net: replace remaining __FUNCTION__ occurrences\n\n__FUNCTION__ is gcc-specific, use __func__\n\nSigned-off-by: Harvey Harrison \u003charvey.harrison@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "1d957f9bf87da74f420424d16ece005202bbebd3",
      "tree": "363d4770c0c74a536524c99ccd2762ce96ee9bbe",
      "parents": [
        "4ac9137858e08a19f29feac4e1f4df7c268b0ba5"
      ],
      "author": {
        "name": "Jan Blunck",
        "email": "jblunck@suse.de",
        "time": "Thu Feb 14 19:34:35 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Feb 14 21:13:33 2008 -0800"
      },
      "message": "Introduce path_put()\n\n* Add path_put() functions for releasing a reference to the dentry and\n  vfsmount of a struct path in the right order\n\n* Switch from path_release(nd) to path_put(\u0026nd-\u003epath)\n\n* Rename dput_path() to path_put_conditional()\n\n[akpm@linux-foundation.org: fix cifs]\nSigned-off-by: Jan Blunck \u003cjblunck@suse.de\u003e\nSigned-off-by: Andreas Gruenbacher \u003cagruen@suse.de\u003e\nAcked-by: Christoph Hellwig \u003chch@lst.de\u003e\nCc: \u003clinux-fsdevel@vger.kernel.org\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Steven French \u003csfrench@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4ac9137858e08a19f29feac4e1f4df7c268b0ba5",
      "tree": "f5b5d84fd12fcc2b0ba0e7ce1a79ff381ad8f5dd",
      "parents": [
        "c5e725f33b733a77de622e91b6ba5645fcf070be"
      ],
      "author": {
        "name": "Jan Blunck",
        "email": "jblunck@suse.de",
        "time": "Thu Feb 14 19:34:32 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Feb 14 21:13:33 2008 -0800"
      },
      "message": "Embed a struct path into struct nameidata instead of nd-\u003e{dentry,mnt}\n\nThis is the central patch of a cleanup series. In most cases there is no good\nreason why someone would want to use a dentry for itself. This series reflects\nthat fact and embeds a struct path into nameidata.\n\nTogether with the other patches of this series\n- it enforced the correct order of getting/releasing the reference count on\n  \u003cdentry,vfsmount\u003e pairs\n- it prepares the VFS for stacking support since it is essential to have a\n  struct path in every place where the stack can be traversed\n- it reduces the overall code size:\n\nwithout patch series:\n   text    data     bss     dec     hex filename\n5321639  858418  715768 6895825  6938d1 vmlinux\n\nwith patch series:\n   text    data     bss     dec     hex filename\n5320026  858418  715768 6894212  693284 vmlinux\n\nThis patch:\n\nSwitch from nd-\u003e{dentry,mnt} to nd-\u003epath.{dentry,mnt} everywhere.\n\n[akpm@linux-foundation.org: coding-style fixes]\n[akpm@linux-foundation.org: fix cifs]\n[akpm@linux-foundation.org: fix smack]\nSigned-off-by: Jan Blunck \u003cjblunck@suse.de\u003e\nSigned-off-by: Andreas Gruenbacher \u003cagruen@suse.de\u003e\nAcked-by: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Casey Schaufler \u003ccasey@schaufler-ca.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9a429c4983deae020f1e757ecc8f547b6d4e2f2b",
      "tree": "172e27a5866e182b902cd77506df1755aafadb60",
      "parents": [
        "b950dfcf504842a0f2bb142a33ef938f1c00d300"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Tue Jan 01 21:58:02 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 28 15:00:31 2008 -0800"
      },
      "message": "[NET]: Add some acquires/releases sparse annotations.\n\nAdd __acquires() and __releases() annotations to suppress some sparse\nwarnings.\n\nexample of warnings :\n\nnet/ipv4/udp.c:1555:14: warning: context imbalance in \u0027udp_seq_start\u0027 - wrong\ncount at exit\nnet/ipv4/udp.c:1571:13: warning: context imbalance in \u0027udp_seq_stop\u0027 -\nunexpected unlock\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "a0a53c8ba95451feef6c1975016f0a1eb3044ad4",
      "tree": "0b64ce018878cbaa0bf5cdfa308d4a7e71218914",
      "parents": [
        "27147c9e6e8316af91dea487aa2c14b18dcff4cf"
      ],
      "author": {
        "name": "Denis V. Lunev",
        "email": "den@openvz.org",
        "time": "Tue Dec 11 04:19:17 2007 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 28 14:57:14 2008 -0800"
      },
      "message": "[NETNS]: struct net content re-work (v3)\n\nRecently David Miller and Herbert Xu pointed out that struct net becomes\noverbloated and un-maintainable. There are two solutions:\n- provide a pointer to a network subsystem definition from struct net.\n  This costs an additional dereferrence\n- place sub-system definition into the structure itself. This will speedup\n  run-time access at the cost of recompilation time\n\nThe second approach looks better for us. Other sub-systems will follow.\n\nSigned-off-by: Denis V. Lunev \u003cden@openvz.org\u003e\nAcked-by: Daniel Lezcano \u003cdlezcano@fr.ibm.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "1597fbc0faf88c42edb3fe42e92e53b83c3f120e",
      "tree": "17a56a96af0e00a1af452f0530997585803b6c7b",
      "parents": [
        "1d430b913c2e6293a80a4a422406bc9489a476ad"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Sat Dec 01 23:51:01 2007 +1100"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 28 14:55:23 2008 -0800"
      },
      "message": "[UNIX]: Make the unix sysctl tables per-namespace\n\nThis is the core.\n\n * add the ctl_table_header on the struct net;\n * make the unix_sysctl_register and _unregister clone the table;\n * moves calls to them into per-net init and exit callbacks;\n * move the .data pointer in the proper place.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nAcked-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "1d430b913c2e6293a80a4a422406bc9489a476ad",
      "tree": "1b7a34062422a8d23fbb57a8ea935ec3ac15a8ae",
      "parents": [
        "d392e49756a99ba51577d265d6db83e3f01c6ac8"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Sat Dec 01 23:45:41 2007 +1100"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 28 14:55:22 2008 -0800"
      },
      "message": "[UNIX]: Use ctl paths to register unix ctl tables\n\nUnlike previous ones, this patch is useful by its own,\nas it decreases the vmlinux size :)\n\nBut it will be used later, when the per-namespace sysctl\nis added.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nAcked-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "d392e49756a99ba51577d265d6db83e3f01c6ac8",
      "tree": "644610d6fc7ab79a9e8a7f76357062759ec8d690",
      "parents": [
        "97577e38284f48ca773392e2d401af2f6c95dc08"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Sat Dec 01 23:44:15 2007 +1100"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 28 14:55:22 2008 -0800"
      },
      "message": "[UNIX]: Move the sysctl_unix_max_dgram_qlen\n\nThis will make all the sub-namespaces always use the\ndefault value (10) and leave the tuning via sysctl\nto the init namespace only.\n\nPer-namespace tuning is coming.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nAcked-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "97577e38284f48ca773392e2d401af2f6c95dc08",
      "tree": "f744e46259cf06b13858f2965526d512308cb7da",
      "parents": [
        "dd88590995de7c7ce108718a9ad52b3832e77814"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Sat Dec 01 23:40:40 2007 +1100"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 28 14:55:21 2008 -0800"
      },
      "message": "[UNIX]: Extend unix_sysctl_(un)register prototypes\n\nAdd the struct net * argument to both of them to use in\nthe future. Also make the register one return an error code.\n\nIt is useless right now, but will make the future patches\nmuch simpler.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nAcked-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "8d8ad9d7c4bfe79bc91b7fc419ecfb9dcdfe6a51",
      "tree": "4b655c4b898e634f39fd170eeb8d06f45b240660",
      "parents": [
        "ce865a61c810c971b47f57c729ec6e9b2d522d94"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Mon Nov 26 20:10:50 2007 +0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 28 14:55:03 2008 -0800"
      },
      "message": "[NET]: Name magic constants in sock_wake_async()\n\nThe sock_wake_async() performs a bit different actions\ndepending on \"how\" argument. Unfortunately this argument\nony has numerical magic values.\n\nI propose to give names to their constants to help people\nreading this function callers understand what\u0027s going on\nwithout looking into this function all the time.\n\nI suppose this is 2.6.25 material, but if it\u0027s not (or the\nnaming seems poor/bad/awful), I can rework it against the\ncurrent net-2.6 tree.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "a53eb3feb2718bf906e81be89fae823b9b6157b6",
      "tree": "4f854d526d80c8386d0212f1a12924c8d9b7fbf0",
      "parents": [
        "c28149016c24f4399c0a1eb0ebc15c92611223f0"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Fri Nov 23 20:30:01 2007 +0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 28 14:54:49 2008 -0800"
      },
      "message": "[UNIX] Move the unix sock iterators in to proper place\n\nThe first_unix_socket() and next_unix_sockets() are now used\nin proc file and in forall_unix_socets macro only.\n\nThe forall_unix_sockets is not used in this file at all so\nremove it. After this move the helpers to where they really\nbelong, i.e. closer to proc code under the #ifdef CONFIG_PROC_FS\noption.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "e372c41401993b45c721c4d92730e7e0a79f7c1b",
      "tree": "8f062f506c0578fc83b7d05c8751a7ccac96e50e",
      "parents": [
        "097e66c578459f79e3a2128c54e9df5194e1419a"
      ],
      "author": {
        "name": "Denis V. Lunev",
        "email": "den@openvz.org",
        "time": "Mon Nov 19 22:31:54 2007 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 28 14:54:28 2008 -0800"
      },
      "message": "[NET]: Consolidate net namespace related proc files creation.\n\nSigned-off-by: Denis V. Lunev \u003cden@openvz.org\u003e\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "097e66c578459f79e3a2128c54e9df5194e1419a",
      "tree": "bdc164e849dc33a4321ea51d965a113917bb287b",
      "parents": [
        "d12d01d6b4d197115c4d7736172b5b1ec8b1eb71"
      ],
      "author": {
        "name": "Denis V. Lunev",
        "email": "den@openvz.org",
        "time": "Mon Nov 19 22:29:30 2007 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 28 14:54:27 2008 -0800"
      },
      "message": "[NET]: Make AF_UNIX per network namespace safe [v2]\n\nBecause of the global nature of garbage collection, and because of the\ncost of per namespace hash tables unix_socket_table has been kept\nglobal.  With a filter added on lookups so we don\u0027t see sockets from\nthe wrong namespace.\n\nCurrently I don\u0027t fold the namesapce into the hash so multiple\nnamespaces using the same socket name will be guaranteed a hash\ncollision.\n\nChanges from v1:\n- fixed unix_seq_open\n\nSigned-off-by: Denis V. Lunev \u003cden@openvz.org\u003e\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "0a11225887fe6cbccd882404dc36ddc50f47daf9",
      "tree": "19f23a33bcd1f794e5e4bf06d0d97f4a0f7a7533",
      "parents": [
        "6ab3b487db77fa98a24560f11a5a8e744b98d877"
      ],
      "author": {
        "name": "Florian Zumbiehl",
        "email": "florz@florz.de",
        "time": "Thu Nov 29 23:19:23 2007 +1100"
      },
      "committer": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Thu Nov 29 23:19:23 2007 +1100"
      },
      "message": "[UNIX]: EOF on non-blocking SOCK_SEQPACKET\n\nI am not absolutely sure whether this actually is a bug (as in: I\u0027ve got\nno clue what the standards say or what other implementations do), but at\nleast I was pretty surprised when I noticed that a recv() on a\nnon-blocking unix domain socket of type SOCK_SEQPACKET (which is connection\noriented, after all) where the remote end has closed the connection\nreturned -1 (EAGAIN) rather than 0 to indicate end of file.\n\nThis is a test case:\n\n| #include \u003csys/types.h\u003e\n| #include \u003cunistd.h\u003e\n| #include \u003csys/socket.h\u003e\n| #include \u003csys/un.h\u003e\n| #include \u003cfcntl.h\u003e\n| #include \u003cstring.h\u003e\n| #include \u003cstdlib.h\u003e\n| \n| int main(){\n| \tint sock;\n| \tstruct sockaddr_un addr;\n| \tchar buf[4096];\n| \tint pfds[2];\n| \n| \tpipe(pfds);\n| \tsock\u003dsocket(PF_UNIX,SOCK_SEQPACKET,0);\n| \taddr.sun_family\u003dAF_UNIX;\n| \tstrcpy(addr.sun_path,\"/tmp/foobar_testsock\");\n| \tbind(sock,(struct sockaddr *)\u0026addr,sizeof(addr));\n| \tlisten(sock,1);\n| \tif(fork()){\n| \t\tclose(sock);\n| \t\tsock\u003dsocket(PF_UNIX,SOCK_SEQPACKET,0);\n| \t\tconnect(sock,(struct sockaddr *)\u0026addr,sizeof(addr));\n| \t\tfcntl(sock,F_SETFL,fcntl(sock,F_GETFL)|O_NONBLOCK);\n| \t\tclose(pfds[1]);\n| \t\tread(pfds[0],buf,sizeof(buf));\n| \t\trecv(sock,buf,sizeof(buf),0); // \u003c-- this one\n| \t}else accept(sock,NULL,NULL);\n| \texit(0);\n| }\n\nIf you try it, make sure /tmp/foobar_testsock doesn\u0027t exist.\n\nThe marked recv() returns -1 (EAGAIN) on 2.6.23.9. Below you find a\npatch that fixes that.\n\nSigned-off-by: Florian Zumbiehl \u003cflorz@florz.de\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "284b327be2f86cf751316ff344b6945e580e654f",
      "tree": "61a5e5b353be80e092795e357863509861a6a774",
      "parents": [
        "5c80f1ae9842a8b7985acd0f02efb9828effb05f"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Sat Nov 10 22:08:30 2007 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Nov 10 22:08:30 2007 -0800"
      },
      "message": "[UNIX]: The unix_nr_socks limit can be exceeded\n\nThe unix_nr_socks value is limited with the 2 * get_max_files() value,\nas seen from the unix_create1(). However, the check and the actual\nincrement are separated with the GFP_KERNEL allocation, so this limit\ncan be exceeded under a memory pressure - task may go to sleep freeing\nthe pages and some other task will be allowed to allocate a new sock\nand so on and so forth.\n\nSo make the increment before the check (similar thing is done in the\nsock_kmalloc) and go to kmalloc after this.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "5c80f1ae9842a8b7985acd0f02efb9828effb05f",
      "tree": "e8a41006d8df869782c9d8c0e686df4a30025ed8",
      "parents": [
        "9305cfa4443dbfb99faf35c5603ec0c0e91b5ef8"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Sat Nov 10 22:07:13 2007 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Nov 10 22:07:13 2007 -0800"
      },
      "message": "[AF_UNIX]: Convert socks to unix_socks in scan_inflight, not in callbacks\n\nThe scan_inflight() routine scans through the unix sockets and calls\nsome passed callback. The fact is that all these callbacks work with\nthe unix_sock objects, not the sock ones, so make this conversion in\nthe scan_inflight() before calling the callbacks.\n\nThis removes one unneeded variable from the inc_inflight_move_tail().\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "9305cfa4443dbfb99faf35c5603ec0c0e91b5ef8",
      "tree": "957551b7016caedcb6f85ec733e6a14d6707096f",
      "parents": [
        "8032b46489e50ef8f3992159abd0349b5b8e476c"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Sat Nov 10 22:06:01 2007 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Nov 10 22:06:01 2007 -0800"
      },
      "message": "[AF_UNIX]: Make unix_tot_inflight counter non-atomic\n\nThis counter is _always_ modified under the unix_gc_lock spinlock, \nso its atomicity can be provided w/o additional efforts.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "6257ff2177ff02d7f260a7a501876aa41cb9a9f6",
      "tree": "9d9f80ccf16f3d4ef062e896f62974c5496193ad",
      "parents": [
        "154adbc8469ff21fbf5c958446ee92dbaab01be1"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Thu Nov 01 00:39:31 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Nov 01 00:39:31 2007 -0700"
      },
      "message": "[NET]: Forget the zero_it argument of sk_alloc()\n\nFinally, the zero_it argument can be completely removed from\nthe callers and from the function prototype.\n\nBesides, fix the checkpatch.pl warnings about using the\nassignments inside if-s.\n\nThis patch is rather big, and it is a part of the previous one.\nI splitted it wishing to make the patches more readable. Hope \nthis particular split helped.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "b488893a390edfe027bae7a46e9af8083e740668",
      "tree": "c469a7f99ad01005a73011c029eb5e5d15454559",
      "parents": [
        "3eb07c8c8adb6f0572baba844ba2d9e501654316"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Thu Oct 18 23:40:14 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Oct 19 11:53:40 2007 -0700"
      },
      "message": "pid namespaces: changes to show virtual ids to user\n\nThis is the largest patch in the set. Make all (I hope) the places where\nthe pid is shown to or get from user operate on the virtual pids.\n\nThe idea is:\n - all in-kernel data structures must store either struct pid itself\n   or the pid\u0027s global nr, obtained with pid_nr() call;\n - when seeking the task from kernel code with the stored id one\n   should use find_task_by_pid() call that works with global pids;\n - when showing pid\u0027s numerical value to the user the virtual one\n   should be used, but however when one shows task\u0027s pid outside this\n   task\u0027s namespace the global one is to be used;\n - when getting the pid from userspace one need to consider this as\n   the virtual one and use appropriate task/pid-searching functions.\n\n[akpm@linux-foundation.org: build fix]\n[akpm@linux-foundation.org: nuther build fix]\n[akpm@linux-foundation.org: yet nuther build fix]\n[akpm@linux-foundation.org: remove unneeded casts]\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@openvz.org\u003e\nCc: Sukadev Bhattiprolu \u003csukadev@us.ibm.com\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "71e20f1873d46e138c26ce83f8fe54b7221f572f",
      "tree": "3b5c5083d3ffcf7c9d7ddad81acf30c09197ef99",
      "parents": [
        "d172fcd3ae1ca7ac27ec8904242fd61e0e11d332"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Oct 15 17:00:19 2007 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Oct 15 17:00:19 2007 +0200"
      },
      "message": "sched: affine sync wakeups\n\nmake sync wakeups affine for cache-cold tasks: if a cache-cold task\nis woken up by a sync wakeup then use the opportunity to migrate it\nstraight away. (the two tasks are \u0027related\u0027 because they communicate)\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "cf7732e4cc14b56d593ff53352673e1fd5e3ba52",
      "tree": "3479e278b72f9d535a58066bc2a26238806252ce",
      "parents": [
        "39699037a5c94d7cd1363dfe48a50c78c643fd9a"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Wed Oct 10 02:29:29 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Oct 10 16:55:33 2007 -0700"
      },
      "message": "[NET]: Make core networking code use seq_open_private\n\nThis concerns the ipv4 and ipv6 code mostly, but also the netlink\nand unix sockets.\n\nThe netlink code is an example of how to use the __seq_open_private()\ncall - it saves the net namespace on this private.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "1b8d7ae42d02e483ad94035cca851e4f7fbecb40",
      "tree": "81f8cc0ee49ef99cc67dfed3dc7b7ecb510abf8b",
      "parents": [
        "457c4cbc5a3dde259d2a1f15d5f9785290397267"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Mon Oct 08 23:24:22 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Oct 10 16:49:07 2007 -0700"
      },
      "message": "[NET]: Make socket creation namespace safe.\n\nThis patch passes in the namespace a new socket should be created in\nand has the socket code do the appropriate reference counting.  By\nvirtue of this all socket create methods are touched.  In addition\nthe socket create methods are modified so that they will fail if\nyou attempt to create a socket in a non-default network namespace.\n\nFailing if we attempt to create a socket outside of the default\nnetwork namespace ensures that as we incrementally make the network stack\nnetwork namespace aware we will not export functionality that someone\nhas not audited and made certain is network namespace safe.\nAllowing us to partially enable network namespaces before all of the\nexotic protocols are supported.\n\nAny protocol layers I have missed will fail to compile because I now\npass an extra parameter into the socket creation code.\n\n[ Integrated AF_IUCV build fixes from Andrew Morton... -DaveM ]\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "457c4cbc5a3dde259d2a1f15d5f9785290397267",
      "tree": "a2ceee88780cbce27433b9a4434b3e9251efd81a",
      "parents": [
        "07feaebfcc10cd35e745c7073667935246494bee"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Wed Sep 12 12:01:34 2007 +0200"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Oct 10 16:49:06 2007 -0700"
      },
      "message": "[NET]: Make /proc/net per network namespace\n\nThis patch makes /proc/net per network namespace.  It modifies the global\nvariables proc_net and proc_net_stat to be per network namespace.\nThe proc_net file helpers are modified to take a network namespace argument,\nand all of their callers are fixed to pass \u0026init_net for that argument.\nThis ensures that all of the /proc/net files are only visible and\nusable in the initial network namespace until the code behind them\nhas been updated to be handle multiple network namespaces.\n\nMaking /proc/net per namespace is necessary as at least some files\nin /proc/net depend upon the set of network devices which is per\nnetwork namespace, and even more files in /proc/net have contents\nthat are relevant to a single network namespace.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "131116989b5c349f9b1ab9ee083d37cc73160ac8",
      "tree": "6b381fc02ec93bd5f02da685124a6ca45c77cd46",
      "parents": [
        "1a3a206f7f2aa50545cc3d056405ad7bc3c9bca8"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Mon Jul 30 18:05:45 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Tue Jul 31 02:28:27 2007 -0700"
      },
      "message": "[AF_UNIX]: Make code static.\n\nThe following code can now become static:\n- struct unix_socket_table\n- unix_table_lock\n\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "1fd05ba5a2f2aa8e7b9b52ef55df850e2e7d54c9",
      "tree": "3403194403ab25f1f7a360a002adf63be2b4e9b0",
      "parents": [
        "99d24edeb6abc6ca3a0d0fbdb83c664c04403c8c"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Wed Jul 11 14:22:39 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jul 11 14:22:39 2007 -0700"
      },
      "message": "[AF_UNIX]: Rewrite garbage collector, fixes race.\n\nThrow out the old mark \u0026 sweep garbage collector and put in a\nrefcounting cycle detecting one.\n\nThe old one had a race with recvmsg, that resulted in false positives\nand hence data loss.  The old algorithm operated on all unix sockets\nin the system, so any additional locking would have meant performance\nproblems for all users of these.\n\nThe new algorithm instead only operates on \"in flight\" sockets, which\nare very rare, and the additional locking for these doesn\u0027t negatively\nimpact the vast majority of users.\n\nIn fact it\u0027s probable, that there weren\u0027t *any* heavy senders of\nsockets over sockets, otherwise the above race would have been\ndiscovered long ago.\n\nThe patch works OK with the app that exposed the race with the old\ncode.  The garbage collection has also been verified to work in a few\nsimple cases.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "56b3d975bbce65f655c5612b4822da671f9fd9b2",
      "tree": "7e29d70405d9c8e28ddee3b03a07157477fc780f",
      "parents": [
        "3be550f34b03e5eb762f74d447ebbeba97efbd6d"
      ],
      "author": {
        "name": "Philippe De Muyter",
        "email": "phdm@macqel.be",
        "time": "Tue Jul 10 23:07:31 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jul 10 23:07:31 2007 -0700"
      },
      "message": "[NET]: Make all initialized struct seq_operations const.\n\nMake all initialized struct seq_operations in net/ const\n\nSigned-off-by: Philippe De Muyter \u003cphdm@macqel.be\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "3c0d2f3780fc94746c4842e965bd2570e2119bb6",
      "tree": "993e21657b05a2e299e699006aa53a0c0a380e4c",
      "parents": [
        "c764c9ade6d9b710bad2b9c631ede9864333b98c"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue Jun 05 13:10:29 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Thu Jun 07 13:40:44 2007 -0700"
      },
      "message": "[AF_UNIX]: Fix stream recvmsg() race.\n\nA recv() on an AF_UNIX, SOCK_STREAM socket can race with a\nsend()+close() on the peer, causing recv() to return zero, even though\nthe sent data should be received.\n\nThis happens if the send() and the close() is performed between\nskb_dequeue() and checking sk-\u003esk_shutdown in unix_stream_recvmsg():\n\nprocess A  skb_dequeue() returns NULL, there\u0027s no data in the socket queue\nprocess B  new data is inserted onto the queue by unix_stream_sendmsg()\nprocess B  sk-\u003esk_shutdown is set to SHUTDOWN_MASK by unix_release_sock()\nprocess A  sk-\u003esk_shutdown is checked, unix_release_sock() returns zero\n\nI\u0027m surprised nobody noticed this, it\u0027s not hard to trigger.  Maybe\nit\u0027s just (un)luck with the timing.\n\nIt\u0027s possible to work around this bug in userspace, by retrying the\nrecv() once in case of a zero return value.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    }
  ],
  "next": "278a3de5abc7901805689a66340b5af9882b4f9a"
}
