)]}'
{
  "log": [
    {
      "commit": "1ff8419871ea757ae0298aa296bcff9b2ca48561",
      "tree": "ff2194bc75f06107e16220ce303ef546f9a4c769",
      "parents": [
        "8d25b36b77fe32c296ece83e94ca6ae4d17f3e25",
        "7d7e5a60c62e88cb8782760bb6c4d3bd1577a6c6"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 25 17:40:16 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 25 17:40:16 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:\n  ipsec: ipcomp - Decompress into frags if necessary\n  ipsec: ipcomp - Merge IPComp implementations\n  pkt_sched: Fix locking in shutdown_scheduler_queue()\n"
    },
    {
      "commit": "4ecb90090c84210a8bd2a9d7a5906e616735873c",
      "tree": "a7baec8859ff9750296be318400ba4475eb40b6c",
      "parents": [
        "99541c23cd32bacf1a591ca537a7c0cb9053ad7e"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Fri Jul 25 01:48:32 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 25 10:53:45 2008 -0700"
      },
      "message": "sysctl: allow override of /proc/sys/net with CAP_NET_ADMIN\n\nExtend the permission check for networking sysctl\u0027s to allow modification\nwhen current process has CAP_NET_ADMIN capability and is not root.  This\nversion uses the until now unused permissions hook to override the mode\nvalue for /proc/sys/net if accessed by a user with capabilities.\n\nFound while working with Quagga.  It is impossible to turn forwarding\non/off through the command interface because Quagga uses secure coding\npractice of dropping privledges during initialization and only raising via\ncapabilities when necessary.  Since the dameon has reset real/effective\nuid after initialization, all attempts to access /proc/sys/net variables\nwill fail.\n\nSigned-off-by: Stephen Hemminger \u003cshemminger@vyatta.com\u003e\nAcked-by: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Chris Wright \u003cchrisw@sous-sol.org\u003e\nCc: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: Andrew Morgan \u003cmorgan@kernel.org\u003e\nCc: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "717115e1a5856b57af0f71e1df7149108294fc10",
      "tree": "9528a992245c2fb993a0cf0bc8221dc7dea5d259",
      "parents": [
        "2711b793eb62a5873a0ba583a69252040aef176e"
      ],
      "author": {
        "name": "Dave Young",
        "email": "hidave.darkstar@gmail.com",
        "time": "Fri Jul 25 01:45:58 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 25 10:53:29 2008 -0700"
      },
      "message": "printk ratelimiting rewrite\n\nAll ratelimit user use same jiffies and burst params, so some messages\n(callbacks) will be lost.\n\nFor example:\na call printk_ratelimit(5 * HZ, 1)\nb call printk_ratelimit(5 * HZ, 1) before the 5*HZ timeout of a, then b will\nwill be supressed.\n\n- rewrite __ratelimit, and use a ratelimit_state as parameter.  Thanks for\n  hints from andrew.\n\n- Add WARN_ON_RATELIMIT, update rcupreempt.h\n\n- remove __printk_ratelimit\n\n- use __ratelimit in net_ratelimit\n\nSigned-off-by: Dave Young \u003chidave.darkstar@gmail.com\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: \"Paul E. McKenney\" \u003cpaulmck@us.ibm.com\u003e\nCc: Dave Young \u003chidave.darkstar@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "696adfe84c11c571a1e0863460ff0ec142b4e5a9",
      "tree": "f00042d0c69211955ec6ef3a5d4a5c49ec7f8890",
      "parents": [
        "2fc9c4e18f94431e7eb77d97edb2a995b46fba55"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Fri Jul 25 01:45:34 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 25 10:53:27 2008 -0700"
      },
      "message": "list_for_each_rcu must die: networking\n\nAll uses of list_for_each_rcu() can be profitably replaced by the\neasier-to-use list_for_each_entry_rcu().  This patch makes this change for\nnetworking, in preparation for removing the list_for_each_rcu() API\nentirely.\n\nAcked-by: David S. Miller \u003cdavem@davemloft.net\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.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": "7d7e5a60c62e88cb8782760bb6c4d3bd1577a6c6",
      "tree": "c6bedd62097698466d7dc0b5166e4ed29e1b6ee5",
      "parents": [
        "6fccab671f2f0a24b799f29a4ec878f62d34656c"
      ],
      "author": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Fri Jul 25 02:55:33 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jul 25 02:55:33 2008 -0700"
      },
      "message": "ipsec: ipcomp - Decompress into frags if necessary\n\nWhen decompressing extremely large packets allocating them through\nkmalloc is prone to failure.  Therefore it\u0027s better to use page\nfrags instead.\n\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "6fccab671f2f0a24b799f29a4ec878f62d34656c",
      "tree": "e90a1ac0770f8fe59bd7c8768663052a7756b950",
      "parents": [
        "cffe1c5d7a5a1e54f7c2c6d0510f651a965bccc3"
      ],
      "author": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Fri Jul 25 02:54:40 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jul 25 02:54:40 2008 -0700"
      },
      "message": "ipsec: ipcomp - Merge IPComp implementations\n\nThis patch merges the IPv4/IPv6 IPComp implementations since most\nof the code is identical.  As a result future enhancements will no\nlonger need to be duplicated.\n\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "cffe1c5d7a5a1e54f7c2c6d0510f651a965bccc3",
      "tree": "8d016589486306d406f12ed6b8d85f4be59e460d",
      "parents": [
        "f867e6af94239a04ec23aeec2fcda5aa58e41db7"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jul 25 01:25:04 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jul 25 01:25:04 2008 -0700"
      },
      "message": "pkt_sched: Fix locking in shutdown_scheduler_queue()\n\nQdisc locks need to be held with BH disabled.\n\nTested-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "c3c2233d84bee397b8271923c007264eb3efa67b",
      "tree": "3a6d7d9644f926cdf00cad03920bb238fc6f5b15",
      "parents": [
        "f9247273cb69ba101877e946d2d83044409cc8c5",
        "f867e6af94239a04ec23aeec2fcda5aa58e41db7"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 24 12:14:58 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 24 12:14:58 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:\n  pkt_sched: sch_sfq: dump a real number of flows\n  atm: [fore200e] use MODULE_FIRMWARE() and other suggested cleanups\n  netfilter: make security table depend on NETFILTER_ADVANCED\n  tcp: Clear probes_out more aggressively in tcp_ack().\n  e1000e: fix e1000_netpoll(), remove extraneous e1000_clean_tx_irq() call\n  net: Update entry in af_family_clock_key_strings\n  netdev: Remove warning from __netif_schedule().\n  sky2: don\u0027t stop queue on shutdown\n"
    },
    {
      "commit": "e38b36f325153eaadd1c2a7abc5762079233e540",
      "tree": "92cfc9855e41c5328d91456f5e373c00ecb8d383",
      "parents": [
        "510df2dd482496083e1c3b1a8c9b6afd5fa4c7d7"
      ],
      "author": {
        "name": "Ulrich Drepper",
        "email": "drepper@redhat.com",
        "time": "Wed Jul 23 21:29:42 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 24 10:47:29 2008 -0700"
      },
      "message": "flag parameters: check magic constants\n\nThis patch adds test that ensure the boundary conditions for the various\nconstants introduced in the previous patches is met.  No code is generated.\n\n[akpm@linux-foundation.org: fix alpha]\nSigned-off-by: Ulrich Drepper \u003cdrepper@redhat.com\u003e\nAcked-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nCc: Michael Kerrisk \u003cmtk.manpages@googlemail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "77d2720059618b9b6e827a8b73831eb6c6fad63c",
      "tree": "c8a08caa9a864c546fda2e043d5232c377d210c6",
      "parents": [
        "99829b832997d907c30669bfd17da32151e18f04"
      ],
      "author": {
        "name": "Ulrich Drepper",
        "email": "drepper@redhat.com",
        "time": "Wed Jul 23 21:29:35 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 24 10:47:29 2008 -0700"
      },
      "message": "flag parameters: NONBLOCK in socket and socketpair\n\nThis patch introduces support for the SOCK_NONBLOCK flag in socket,\nsocketpair, and  paccept.  To do this the internal function sock_attach_fd\ngets an additional parameter which it uses to set the appropriate flag for\nthe file descriptor.\n\nGiven that in modern, scalable programs almost all socket connections are\nnon-blocking and the minimal additional cost for the new functionality\nI see no reason not to add this code.\n\nThe following test must be adjusted for architectures other than x86 and\nx86-64 and in case the syscall numbers changed.\n\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n#include \u003cfcntl.h\u003e\n#include \u003cpthread.h\u003e\n#include \u003cstdio.h\u003e\n#include \u003cunistd.h\u003e\n#include \u003cnetinet/in.h\u003e\n#include \u003csys/socket.h\u003e\n#include \u003csys/syscall.h\u003e\n\n#ifndef __NR_paccept\n# ifdef __x86_64__\n#  define __NR_paccept 288\n# elif defined __i386__\n#  define SYS_PACCEPT 18\n#  define USE_SOCKETCALL 1\n# else\n#  error \"need __NR_paccept\"\n# endif\n#endif\n\n#ifdef USE_SOCKETCALL\n# define paccept(fd, addr, addrlen, mask, flags) \\\n  ({ long args[6] \u003d { \\\n       (long) fd, (long) addr, (long) addrlen, (long) mask, 8, (long) flags }; \\\n     syscall (__NR_socketcall, SYS_PACCEPT, args); })\n#else\n# define paccept(fd, addr, addrlen, mask, flags) \\\n  syscall (__NR_paccept, fd, addr, addrlen, mask, 8, flags)\n#endif\n\n#define PORT 57392\n\n#define SOCK_NONBLOCK O_NONBLOCK\n\nstatic pthread_barrier_t b;\n\nstatic void *\ntf (void *arg)\n{\n  pthread_barrier_wait (\u0026b);\n  int s \u003d socket (AF_INET, SOCK_STREAM, 0);\n  struct sockaddr_in sin;\n  sin.sin_family \u003d AF_INET;\n  sin.sin_addr.s_addr \u003d htonl (INADDR_LOOPBACK);\n  sin.sin_port \u003d htons (PORT);\n  connect (s, (const struct sockaddr *) \u0026sin, sizeof (sin));\n  close (s);\n  pthread_barrier_wait (\u0026b);\n\n  pthread_barrier_wait (\u0026b);\n  s \u003d socket (AF_INET, SOCK_STREAM, 0);\n  sin.sin_port \u003d htons (PORT);\n  connect (s, (const struct sockaddr *) \u0026sin, sizeof (sin));\n  close (s);\n  pthread_barrier_wait (\u0026b);\n\n  return NULL;\n}\n\nint\nmain (void)\n{\n  int fd;\n  fd \u003d socket (PF_INET, SOCK_STREAM, 0);\n  if (fd \u003d\u003d -1)\n    {\n      puts (\"socket(0) failed\");\n      return 1;\n    }\n  int fl \u003d fcntl (fd, F_GETFL);\n  if (fl \u003d\u003d -1)\n    {\n      puts (\"fcntl failed\");\n      return 1;\n    }\n  if (fl \u0026 O_NONBLOCK)\n    {\n      puts (\"socket(0) set non-blocking mode\");\n      return 1;\n    }\n  close (fd);\n\n  fd \u003d socket (PF_INET, SOCK_STREAM|SOCK_NONBLOCK, 0);\n  if (fd \u003d\u003d -1)\n    {\n      puts (\"socket(SOCK_NONBLOCK) failed\");\n      return 1;\n    }\n  fl \u003d fcntl (fd, F_GETFL);\n  if (fl \u003d\u003d -1)\n    {\n      puts (\"fcntl failed\");\n      return 1;\n    }\n  if ((fl \u0026 O_NONBLOCK) \u003d\u003d 0)\n    {\n      puts (\"socket(SOCK_NONBLOCK) does not set non-blocking mode\");\n      return 1;\n    }\n  close (fd);\n\n  int fds[2];\n  if (socketpair (PF_UNIX, SOCK_STREAM, 0, fds) \u003d\u003d -1)\n    {\n      puts (\"socketpair(0) failed\");\n      return 1;\n    }\n  for (int i \u003d 0; i \u003c 2; ++i)\n    {\n      fl \u003d fcntl (fds[i], F_GETFL);\n      if (fl \u003d\u003d -1)\n        {\n          puts (\"fcntl failed\");\n          return 1;\n        }\n      if (fl \u0026 O_NONBLOCK)\n        {\n          printf (\"socketpair(0) set non-blocking mode for fds[%d]\\n\", i);\n          return 1;\n        }\n      close (fds[i]);\n    }\n\n  if (socketpair (PF_UNIX, SOCK_STREAM|SOCK_NONBLOCK, 0, fds) \u003d\u003d -1)\n    {\n      puts (\"socketpair(SOCK_NONBLOCK) failed\");\n      return 1;\n    }\n  for (int i \u003d 0; i \u003c 2; ++i)\n    {\n      fl \u003d fcntl (fds[i], F_GETFL);\n      if (fl \u003d\u003d -1)\n        {\n          puts (\"fcntl failed\");\n          return 1;\n        }\n      if ((fl \u0026 O_NONBLOCK) \u003d\u003d 0)\n        {\n          printf (\"socketpair(SOCK_NONBLOCK) does not set non-blocking mode for fds[%d]\\n\", i);\n          return 1;\n        }\n      close (fds[i]);\n    }\n\n  pthread_barrier_init (\u0026b, NULL, 2);\n\n  struct sockaddr_in sin;\n  pthread_t th;\n  if (pthread_create (\u0026th, NULL, tf, NULL) !\u003d 0)\n    {\n      puts (\"pthread_create failed\");\n      return 1;\n    }\n\n  int s \u003d socket (AF_INET, SOCK_STREAM, 0);\n  int reuse \u003d 1;\n  setsockopt (s, SOL_SOCKET, SO_REUSEADDR, \u0026reuse, sizeof (reuse));\n  sin.sin_family \u003d AF_INET;\n  sin.sin_addr.s_addr \u003d htonl (INADDR_LOOPBACK);\n  sin.sin_port \u003d htons (PORT);\n  bind (s, (struct sockaddr *) \u0026sin, sizeof (sin));\n  listen (s, SOMAXCONN);\n\n  pthread_barrier_wait (\u0026b);\n\n  int s2 \u003d paccept (s, NULL, 0, NULL, 0);\n  if (s2 \u003c 0)\n    {\n      puts (\"paccept(0) failed\");\n      return 1;\n    }\n\n  fl \u003d fcntl (s2, F_GETFL);\n  if (fl \u0026 O_NONBLOCK)\n    {\n      puts (\"paccept(0) set non-blocking mode\");\n      return 1;\n    }\n  close (s2);\n  close (s);\n\n  pthread_barrier_wait (\u0026b);\n\n  s \u003d socket (AF_INET, SOCK_STREAM, 0);\n  sin.sin_port \u003d htons (PORT);\n  setsockopt (s, SOL_SOCKET, SO_REUSEADDR, \u0026reuse, sizeof (reuse));\n  bind (s, (struct sockaddr *) \u0026sin, sizeof (sin));\n  listen (s, SOMAXCONN);\n\n  pthread_barrier_wait (\u0026b);\n\n  s2 \u003d paccept (s, NULL, 0, NULL, SOCK_NONBLOCK);\n  if (s2 \u003c 0)\n    {\n      puts (\"paccept(SOCK_NONBLOCK) failed\");\n      return 1;\n    }\n\n  fl \u003d fcntl (s2, F_GETFL);\n  if ((fl \u0026 O_NONBLOCK) \u003d\u003d 0)\n    {\n      puts (\"paccept(SOCK_NONBLOCK) does not set non-blocking mode\");\n      return 1;\n    }\n  close (s2);\n  close (s);\n\n  pthread_barrier_wait (\u0026b);\n  puts (\"OK\");\n\n  return 0;\n}\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nSigned-off-by: Ulrich Drepper \u003cdrepper@redhat.com\u003e\nAcked-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nCc: Michael Kerrisk \u003cmtk.manpages@googlemail.com\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c019bbc612f6633ede7ed67725cbf68de45ae8a4",
      "tree": "99b23660c2915e699f35f3fc5820b5cc30f890b3",
      "parents": [
        "aaca0bdca573f3f51ea03139f9c7289541e7bca3"
      ],
      "author": {
        "name": "Ulrich Drepper",
        "email": "drepper@redhat.com",
        "time": "Wed Jul 23 21:29:21 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 24 10:47:27 2008 -0700"
      },
      "message": "flag parameters: paccept w/out set_restore_sigmask\n\nSome platforms do not have support to restore the signal mask in the\nreturn path from a syscall.  For those platforms syscalls like pselect are\nnot defined at all.  This is, I think, not a good choice for paccept()\nsince paccept() adds more value on top of accept() than just the signal\nmask handling.\n\nTherefore this patch defines a scaled down version of the sys_paccept\nfunction for those platforms.  It returns -EINVAL in case the signal mask\nis non-NULL but behaves the same otherwise.\n\nNote that I explicitly included \u003clinux/thread_info.h\u003e.  I saw that it is\ncurrently included but indirectly two levels down.  There is too much risk\nin relying on this.  The header might change and then suddenly the\nfunction definition would change without anyone immediately noticing.\n\nSigned-off-by: Ulrich Drepper \u003cdrepper@redhat.com\u003e\nCc: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nCc: Michael Kerrisk \u003cmtk.manpages@googlemail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "aaca0bdca573f3f51ea03139f9c7289541e7bca3",
      "tree": "d25b0baa73b5301d91a5c848a896bad0fb719acc",
      "parents": [
        "a677a039be7243357d93502bff2b40850c942e2d"
      ],
      "author": {
        "name": "Ulrich Drepper",
        "email": "drepper@redhat.com",
        "time": "Wed Jul 23 21:29:20 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 24 10:47:27 2008 -0700"
      },
      "message": "flag parameters: paccept\n\nThis patch is by far the most complex in the series.  It adds a new syscall\npaccept.  This syscall differs from accept in that it adds (at the userlevel)\ntwo additional parameters:\n\n- a signal mask\n- a flags value\n\nThe flags parameter can be used to set flag like SOCK_CLOEXEC.  This is\nimlpemented here as well.  Some people argued that this is a property which\nshould be inherited from the file desriptor for the server but this is against\nPOSIX.  Additionally, we really want the signal mask parameter as well\n(similar to pselect, ppoll, etc).  So an interface change in inevitable.\n\nThe flag value is the same as for socket and socketpair.  I think diverging\nhere will only create confusion.  Similar to the filesystem interfaces where\nthe use of the O_* constants differs, it is acceptable here.\n\nThe signal mask is handled as for pselect etc.  The mask is temporarily\ninstalled for the thread and removed before the call returns.  I modeled the\ncode after pselect.  If there is a problem it\u0027s likely also in pselect.\n\nFor architectures which use socketcall I maintained this interface instead of\nadding a system call.  The symmetry shouldn\u0027t be broken.\n\nThe following test must be adjusted for architectures other than x86 and\nx86-64 and in case the syscall numbers changed.\n\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n#include \u003cerrno.h\u003e\n#include \u003cfcntl.h\u003e\n#include \u003cpthread.h\u003e\n#include \u003csignal.h\u003e\n#include \u003cstdio.h\u003e\n#include \u003cunistd.h\u003e\n#include \u003cnetinet/in.h\u003e\n#include \u003csys/socket.h\u003e\n#include \u003csys/syscall.h\u003e\n\n#ifndef __NR_paccept\n# ifdef __x86_64__\n#  define __NR_paccept 288\n# elif defined __i386__\n#  define SYS_PACCEPT 18\n#  define USE_SOCKETCALL 1\n# else\n#  error \"need __NR_paccept\"\n# endif\n#endif\n\n#ifdef USE_SOCKETCALL\n# define paccept(fd, addr, addrlen, mask, flags) \\\n  ({ long args[6] \u003d { \\\n       (long) fd, (long) addr, (long) addrlen, (long) mask, 8, (long) flags }; \\\n     syscall (__NR_socketcall, SYS_PACCEPT, args); })\n#else\n# define paccept(fd, addr, addrlen, mask, flags) \\\n  syscall (__NR_paccept, fd, addr, addrlen, mask, 8, flags)\n#endif\n\n#define PORT 57392\n\n#define SOCK_CLOEXEC O_CLOEXEC\n\nstatic pthread_barrier_t b;\n\nstatic void *\ntf (void *arg)\n{\n  pthread_barrier_wait (\u0026b);\n  int s \u003d socket (AF_INET, SOCK_STREAM, 0);\n  struct sockaddr_in sin;\n  sin.sin_family \u003d AF_INET;\n  sin.sin_addr.s_addr \u003d htonl (INADDR_LOOPBACK);\n  sin.sin_port \u003d htons (PORT);\n  connect (s, (const struct sockaddr *) \u0026sin, sizeof (sin));\n  close (s);\n\n  pthread_barrier_wait (\u0026b);\n  s \u003d socket (AF_INET, SOCK_STREAM, 0);\n  sin.sin_port \u003d htons (PORT);\n  connect (s, (const struct sockaddr *) \u0026sin, sizeof (sin));\n  close (s);\n  pthread_barrier_wait (\u0026b);\n\n  pthread_barrier_wait (\u0026b);\n  sleep (2);\n  pthread_kill ((pthread_t) arg, SIGUSR1);\n\n  return NULL;\n}\n\nstatic void\nhandler (int s)\n{\n}\n\nint\nmain (void)\n{\n  pthread_barrier_init (\u0026b, NULL, 2);\n\n  struct sockaddr_in sin;\n  pthread_t th;\n  if (pthread_create (\u0026th, NULL, tf, (void *) pthread_self ()) !\u003d 0)\n    {\n      puts (\"pthread_create failed\");\n      return 1;\n    }\n\n  int s \u003d socket (AF_INET, SOCK_STREAM, 0);\n  int reuse \u003d 1;\n  setsockopt (s, SOL_SOCKET, SO_REUSEADDR, \u0026reuse, sizeof (reuse));\n  sin.sin_family \u003d AF_INET;\n  sin.sin_addr.s_addr \u003d htonl (INADDR_LOOPBACK);\n  sin.sin_port \u003d htons (PORT);\n  bind (s, (struct sockaddr *) \u0026sin, sizeof (sin));\n  listen (s, SOMAXCONN);\n\n  pthread_barrier_wait (\u0026b);\n\n  int s2 \u003d paccept (s, NULL, 0, NULL, 0);\n  if (s2 \u003c 0)\n    {\n      puts (\"paccept(0) failed\");\n      return 1;\n    }\n\n  int coe \u003d fcntl (s2, F_GETFD);\n  if (coe \u0026 FD_CLOEXEC)\n    {\n      puts (\"paccept(0) set close-on-exec-flag\");\n      return 1;\n    }\n  close (s2);\n\n  pthread_barrier_wait (\u0026b);\n\n  s2 \u003d paccept (s, NULL, 0, NULL, SOCK_CLOEXEC);\n  if (s2 \u003c 0)\n    {\n      puts (\"paccept(SOCK_CLOEXEC) failed\");\n      return 1;\n    }\n\n  coe \u003d fcntl (s2, F_GETFD);\n  if ((coe \u0026 FD_CLOEXEC) \u003d\u003d 0)\n    {\n      puts (\"paccept(SOCK_CLOEXEC) does not set close-on-exec flag\");\n      return 1;\n    }\n  close (s2);\n\n  pthread_barrier_wait (\u0026b);\n\n  struct sigaction sa;\n  sa.sa_handler \u003d handler;\n  sa.sa_flags \u003d 0;\n  sigemptyset (\u0026sa.sa_mask);\n  sigaction (SIGUSR1, \u0026sa, NULL);\n\n  sigset_t ss;\n  pthread_sigmask (SIG_SETMASK, NULL, \u0026ss);\n  sigaddset (\u0026ss, SIGUSR1);\n  pthread_sigmask (SIG_SETMASK, \u0026ss, NULL);\n\n  sigdelset (\u0026ss, SIGUSR1);\n  alarm (4);\n  pthread_barrier_wait (\u0026b);\n\n  errno \u003d 0 ;\n  s2 \u003d paccept (s, NULL, 0, \u0026ss, 0);\n  if (s2 !\u003d -1 || errno !\u003d EINTR)\n    {\n      puts (\"paccept did not fail with EINTR\");\n      return 1;\n    }\n\n  close (s);\n\n  puts (\"OK\");\n\n  return 0;\n}\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n[akpm@linux-foundation.org: make it compile]\n[akpm@linux-foundation.org: add sys_ni stub]\nSigned-off-by: Ulrich Drepper \u003cdrepper@redhat.com\u003e\nAcked-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nCc: Michael Kerrisk \u003cmtk.manpages@googlemail.com\u003e\nCc: \u003clinux-arch@vger.kernel.org\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: Roland McGrath \u003croland@redhat.com\u003e\nCc: Kyle McMartin \u003ckyle@mcmartin.ca\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a677a039be7243357d93502bff2b40850c942e2d",
      "tree": "6cf1669c4752e2527e02f33baa920cd2dfd59117",
      "parents": [
        "6e2c10a12a2170856f5582d62d583cbcd1cb5eaf"
      ],
      "author": {
        "name": "Ulrich Drepper",
        "email": "drepper@redhat.com",
        "time": "Wed Jul 23 21:29:17 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 24 10:47:27 2008 -0700"
      },
      "message": "flag parameters: socket and socketpair\n\nThis patch adds support for flag values which are ORed to the type passwd\nto socket and socketpair.  The additional code is minimal.  The flag\nvalues in this implementation can and must match the O_* flags.  This\navoids overhead in the conversion.\n\nThe internal functions sock_alloc_fd and sock_map_fd get a new parameters\nand all callers are changed.\n\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n#include \u003cfcntl.h\u003e\n#include \u003cstdio.h\u003e\n#include \u003cunistd.h\u003e\n#include \u003cnetinet/in.h\u003e\n#include \u003csys/socket.h\u003e\n\n#define PORT 57392\n\n/* For Linux these must be the same.  */\n#define SOCK_CLOEXEC O_CLOEXEC\n\nint\nmain (void)\n{\n  int fd;\n  fd \u003d socket (PF_INET, SOCK_STREAM, 0);\n  if (fd \u003d\u003d -1)\n    {\n      puts (\"socket(0) failed\");\n      return 1;\n    }\n  int coe \u003d fcntl (fd, F_GETFD);\n  if (coe \u003d\u003d -1)\n    {\n      puts (\"fcntl failed\");\n      return 1;\n    }\n  if (coe \u0026 FD_CLOEXEC)\n    {\n      puts (\"socket(0) set close-on-exec flag\");\n      return 1;\n    }\n  close (fd);\n\n  fd \u003d socket (PF_INET, SOCK_STREAM|SOCK_CLOEXEC, 0);\n  if (fd \u003d\u003d -1)\n    {\n      puts (\"socket(SOCK_CLOEXEC) failed\");\n      return 1;\n    }\n  coe \u003d fcntl (fd, F_GETFD);\n  if (coe \u003d\u003d -1)\n    {\n      puts (\"fcntl failed\");\n      return 1;\n    }\n  if ((coe \u0026 FD_CLOEXEC) \u003d\u003d 0)\n    {\n      puts (\"socket(SOCK_CLOEXEC) does not set close-on-exec flag\");\n      return 1;\n    }\n  close (fd);\n\n  int fds[2];\n  if (socketpair (PF_UNIX, SOCK_STREAM, 0, fds) \u003d\u003d -1)\n    {\n      puts (\"socketpair(0) failed\");\n      return 1;\n    }\n  for (int i \u003d 0; i \u003c 2; ++i)\n    {\n      coe \u003d fcntl (fds[i], F_GETFD);\n      if (coe \u003d\u003d -1)\n        {\n          puts (\"fcntl failed\");\n          return 1;\n        }\n      if (coe \u0026 FD_CLOEXEC)\n        {\n          printf (\"socketpair(0) set close-on-exec flag for fds[%d]\\n\", i);\n          return 1;\n        }\n      close (fds[i]);\n    }\n\n  if (socketpair (PF_UNIX, SOCK_STREAM|SOCK_CLOEXEC, 0, fds) \u003d\u003d -1)\n    {\n      puts (\"socketpair(SOCK_CLOEXEC) failed\");\n      return 1;\n    }\n  for (int i \u003d 0; i \u003c 2; ++i)\n    {\n      coe \u003d fcntl (fds[i], F_GETFD);\n      if (coe \u003d\u003d -1)\n        {\n          puts (\"fcntl failed\");\n          return 1;\n        }\n      if ((coe \u0026 FD_CLOEXEC) \u003d\u003d 0)\n        {\n          printf (\"socketpair(SOCK_CLOEXEC) does not set close-on-exec flag for fds[%d]\\n\", i);\n          return 1;\n        }\n      close (fds[i]);\n    }\n\n  puts (\"OK\");\n\n  return 0;\n}\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nSigned-off-by: Ulrich Drepper \u003cdrepper@redhat.com\u003e\nAcked-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nCc: Michael Kerrisk \u003cmtk.manpages@googlemail.com\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: Ralf Baechle \u003cralf@linux-mips.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f867e6af94239a04ec23aeec2fcda5aa58e41db7",
      "tree": "aba94e6be14429ab8a6556c8d10c11a04914568c",
      "parents": [
        "6f75a9b6426e686649ac440c37ec7c249501f9a5"
      ],
      "author": {
        "name": "Jarek Poplawski",
        "email": "jarkao2@gmail.com",
        "time": "Wed Jul 23 21:34:27 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jul 23 21:34:27 2008 -0700"
      },
      "message": "pkt_sched: sch_sfq: dump a real number of flows\n\nDump the \"flows\" number according to the number of active flows\ninstead of repeating the \"limit\".\n\nReported-by: Denys Fedoryshchenko \u003cdenys@visp.net.lb\u003e\nSigned-off-by: Jarek Poplawski \u003cjarkao2@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "26dcce0fabbef75ae426461edf21b5030bad60f3",
      "tree": "56c64fa47dc29f7ea5a8fd0cab0459fb0a05a2bc",
      "parents": [
        "d7b6de14a0ef8a376f9d57b867545b47302b7bfb",
        "eb6a12c2428d21a9f3e0f1a50e927d5fd80fc3d0"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jul 23 18:37:44 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jul 23 18:37:44 2008 -0700"
      },
      "message": "Merge branch \u0027cpus4096-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027cpus4096-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (31 commits)\n  NR_CPUS: Replace NR_CPUS in speedstep-centrino.c\n  cpumask: Provide a generic set of CPUMASK_ALLOC macros, FIXUP\n  NR_CPUS: Replace NR_CPUS in cpufreq userspace routines\n  NR_CPUS: Replace per_cpu(..., smp_processor_id()) with __get_cpu_var\n  NR_CPUS: Replace NR_CPUS in arch/x86/kernel/genapic_flat_64.c\n  NR_CPUS: Replace NR_CPUS in arch/x86/kernel/genx2apic_uv_x.c\n  NR_CPUS: Replace NR_CPUS in arch/x86/kernel/cpu/proc.c\n  NR_CPUS: Replace NR_CPUS in arch/x86/kernel/cpu/mcheck/mce_64.c\n  cpumask: Optimize cpumask_of_cpu in lib/smp_processor_id.c, fix\n  cpumask: Use optimized CPUMASK_ALLOC macros in the centrino_target\n  cpumask: Provide a generic set of CPUMASK_ALLOC macros\n  cpumask: Optimize cpumask_of_cpu in lib/smp_processor_id.c\n  cpumask: Optimize cpumask_of_cpu in kernel/time/tick-common.c\n  cpumask: Optimize cpumask_of_cpu in drivers/misc/sgi-xp/xpc_main.c\n  cpumask: Optimize cpumask_of_cpu in arch/x86/kernel/ldt.c\n  cpumask: Optimize cpumask_of_cpu in arch/x86/kernel/io_apic_64.c\n  cpumask: Replace cpumask_of_cpu with cpumask_of_cpu_ptr\n  Revert \"cpumask: introduce new APIs\"\n  cpumask: make for_each_cpu_mask a bit smaller\n  net: Pass reference to cpumask variable in net/sunrpc/svc.c\n  ...\n\nFix up trivial conflicts in drivers/cpufreq/cpufreq.c manually\n"
    },
    {
      "commit": "70eed75d76635ba7350651b9bd96529a306ec67a",
      "tree": "3fe67ecd24dfdffee1145b5d3983ac7113d9783c",
      "parents": [
        "4b53fb67e385b856a991d402096379dab462170a"
      ],
      "author": {
        "name": "Patrick McHardy",
        "email": "kaber@trash.net",
        "time": "Wed Jul 23 16:42:42 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jul 23 16:42:42 2008 -0700"
      },
      "message": "netfilter: make security table depend on NETFILTER_ADVANCED\n\nSigned-off-by: Patrick McHardy \u003ckaber@trash.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "4b53fb67e385b856a991d402096379dab462170a",
      "tree": "333dada17059f4c67c48123974059206c2e676d9",
      "parents": [
        "e8ebe3b893792887317bc24cc4608753f81b81d3"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jul 23 16:38:45 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jul 23 16:38:45 2008 -0700"
      },
      "message": "tcp: Clear probes_out more aggressively in tcp_ack().\n\nThis is based upon an excellent bug report from Eric Dumazet.\n\ntcp_ack() should clear -\u003eicsk_probes_out even if there are packets\noutstanding.  Otherwise if we get a sequence of ACKs while we do have\npackets outstanding over and over again, we\u0027ll never clear the\nprobes_out value and eventually think the connection is too sick and\nwe\u0027ll reset it.\n\nThis appears to be some \"optimization\" added to tcp_ack() in the 2.4.x\ntimeframe.  In 2.2.x, probes_out is pretty much always cleared by\ntcp_ack().\n\nHere is Eric\u0027s original report:\n\n----------------------------------------\nApparently, we can in some situations reset TCP connections in a couple of seconds when some frames are lost.\n\nIn order to reproduce the problem, please try the following program on linux-2.6.25.*\n\nSetup some iptables rules to allow two frames per second sent on loopback interface to tcp destination port 12000\n\niptables -N SLOWLO\niptables -A SLOWLO -m hashlimit --hashlimit 2 --hashlimit-burst 1 --hashlimit-mode dstip --hashlimit-name slow2 -j ACCEPT\niptables -A SLOWLO -j DROP\n\niptables -A OUTPUT -o lo -p tcp --dport 12000 -j SLOWLO\n\nThen run the attached program and see the output :\n\n# ./loop\nState      Recv-Q Send-Q                                  Local Address:Port                                    Peer Address:Port\nESTAB      0      40                                          127.0.0.1:54455                                      127.0.0.1:12000  timer:(persist,200ms,1)\nState      Recv-Q Send-Q                                  Local Address:Port                                    Peer Address:Port\nESTAB      0      40                                          127.0.0.1:54455                                      127.0.0.1:12000  timer:(persist,200ms,3)\nState      Recv-Q Send-Q                                  Local Address:Port                                    Peer Address:Port\nESTAB      0      40                                          127.0.0.1:54455                                      127.0.0.1:12000  timer:(persist,200ms,5)\nState      Recv-Q Send-Q                                  Local Address:Port                                    Peer Address:Port\nESTAB      0      40                                          127.0.0.1:54455                                      127.0.0.1:12000  timer:(persist,200ms,7)\nState      Recv-Q Send-Q                                  Local Address:Port                                    Peer Address:Port\nESTAB      0      40                                          127.0.0.1:54455                                      127.0.0.1:12000  timer:(persist,200ms,9)\nState      Recv-Q Send-Q                                  Local Address:Port                                    Peer Address:Port\nESTAB      0      40                                          127.0.0.1:54455                                      127.0.0.1:12000  timer:(persist,200ms,11)\nState      Recv-Q Send-Q                                  Local Address:Port                                    Peer Address:Port\nESTAB      0      40                                          127.0.0.1:54455                                      127.0.0.1:12000  timer:(persist,201ms,13)\nState      Recv-Q Send-Q                                  Local Address:Port                                    Peer Address:Port\nESTAB      0      40                                          127.0.0.1:54455                                      127.0.0.1:12000  timer:(persist,188ms,15)\nwrite(): Connection timed out\nwrote 890 bytes but was interrupted after 9 seconds\nESTAB      0      0                 127.0.0.1:12000            127.0.0.1:54455\nExiting read() because no data available (4000 ms timeout).\nread 860 bytes\n\nWhile this tcp session makes progress (sending frames with 50 bytes of payload, every 500ms), linux tcp stack decides to reset it, when tcp_retries 2 is reached (default value : 15)\n\ntcpdump :\n\n15:30:28.856695 IP 127.0.0.1.56554 \u003e 127.0.0.1.12000: S 33788768:33788768(0) win 32792 \u003cmss 16396,nop,nop,sackOK,nop,wscale 7\u003e\n15:30:28.856711 IP 127.0.0.1.12000 \u003e 127.0.0.1.56554: S 33899253:33899253(0) ack 33788769 win 32792 \u003cmss 16396,nop,nop,sackOK,nop,wscale 7\u003e\n15:30:29.356947 IP 127.0.0.1.56554 \u003e 127.0.0.1.12000: P 1:61(60) ack 1 win 257\n15:30:29.356966 IP 127.0.0.1.12000 \u003e 127.0.0.1.56554: . ack 61 win 257\n15:30:29.866415 IP 127.0.0.1.56554 \u003e 127.0.0.1.12000: P 61:111(50) ack 1 win 257\n15:30:29.866427 IP 127.0.0.1.12000 \u003e 127.0.0.1.56554: . ack 111 win 257\n15:30:30.366516 IP 127.0.0.1.56554 \u003e 127.0.0.1.12000: P 111:161(50) ack 1 win 257\n15:30:30.366527 IP 127.0.0.1.12000 \u003e 127.0.0.1.56554: . ack 161 win 257\n15:30:30.876196 IP 127.0.0.1.56554 \u003e 127.0.0.1.12000: P 161:211(50) ack 1 win 257\n15:30:30.876207 IP 127.0.0.1.12000 \u003e 127.0.0.1.56554: . ack 211 win 257\n15:30:31.376282 IP 127.0.0.1.56554 \u003e 127.0.0.1.12000: P 211:261(50) ack 1 win 257\n15:30:31.376290 IP 127.0.0.1.12000 \u003e 127.0.0.1.56554: . ack 261 win 257\n15:30:31.885619 IP 127.0.0.1.56554 \u003e 127.0.0.1.12000: P 261:311(50) ack 1 win 257\n15:30:31.885631 IP 127.0.0.1.12000 \u003e 127.0.0.1.56554: . ack 311 win 257\n15:30:32.385705 IP 127.0.0.1.56554 \u003e 127.0.0.1.12000: P 311:361(50) ack 1 win 257\n15:30:32.385715 IP 127.0.0.1.12000 \u003e 127.0.0.1.56554: . ack 361 win 257\n15:30:32.895249 IP 127.0.0.1.56554 \u003e 127.0.0.1.12000: P 361:411(50) ack 1 win 257\n15:30:32.895266 IP 127.0.0.1.12000 \u003e 127.0.0.1.56554: . ack 411 win 257\n15:30:33.395341 IP 127.0.0.1.56554 \u003e 127.0.0.1.12000: P 411:461(50) ack 1 win 257\n15:30:33.395351 IP 127.0.0.1.12000 \u003e 127.0.0.1.56554: . ack 461 win 257\n15:30:33.918085 IP 127.0.0.1.56554 \u003e 127.0.0.1.12000: P 461:511(50) ack 1 win 257\n15:30:33.918096 IP 127.0.0.1.12000 \u003e 127.0.0.1.56554: . ack 511 win 257\n15:30:34.418163 IP 127.0.0.1.56554 \u003e 127.0.0.1.12000: P 511:561(50) ack 1 win 257\n15:30:34.418172 IP 127.0.0.1.12000 \u003e 127.0.0.1.56554: . ack 561 win 257\n15:30:34.927685 IP 127.0.0.1.56554 \u003e 127.0.0.1.12000: P 561:611(50) ack 1 win 257\n15:30:34.927698 IP 127.0.0.1.12000 \u003e 127.0.0.1.56554: . ack 611 win 257\n15:30:35.427757 IP 127.0.0.1.56554 \u003e 127.0.0.1.12000: P 611:661(50) ack 1 win 257\n15:30:35.427766 IP 127.0.0.1.12000 \u003e 127.0.0.1.56554: . ack 661 win 257\n15:30:35.937359 IP 127.0.0.1.56554 \u003e 127.0.0.1.12000: P 661:711(50) ack 1 win 257\n15:30:35.937376 IP 127.0.0.1.12000 \u003e 127.0.0.1.56554: . ack 711 win 257\n15:30:36.437451 IP 127.0.0.1.56554 \u003e 127.0.0.1.12000: P 711:761(50) ack 1 win 257\n15:30:36.437464 IP 127.0.0.1.12000 \u003e 127.0.0.1.56554: . ack 761 win 257\n15:30:36.947022 IP 127.0.0.1.56554 \u003e 127.0.0.1.12000: P 761:811(50) ack 1 win 257\n15:30:36.947039 IP 127.0.0.1.12000 \u003e 127.0.0.1.56554: . ack 811 win 257\n15:30:37.447135 IP 127.0.0.1.56554 \u003e 127.0.0.1.12000: P 811:861(50) ack 1 win 257\n15:30:37.447203 IP 127.0.0.1.12000 \u003e 127.0.0.1.56554: . ack 861 win 257\n15:30:41.448171 IP 127.0.0.1.12000 \u003e 127.0.0.1.56554: F 1:1(0) ack 861 win 257\n15:30:41.448189 IP 127.0.0.1.56554 \u003e 127.0.0.1.12000: R 33789629:33789629(0) win 0\n\nSource of program :\n\n/*\n * small producer/consumer program.\n * setup a listener on 127.0.0.1:12000\n * Forks a child\n *   child connect to 127.0.0.1, and sends 10 bytes on this tcp socket every 100 ms\n * Father accepts connection, and read all data\n */\n#include \u003csys/types.h\u003e\n#include \u003csys/socket.h\u003e\n#include \u003cnetinet/in.h\u003e\n#include \u003cunistd.h\u003e\n#include \u003cstdio.h\u003e\n#include \u003ctime.h\u003e\n#include \u003csys/poll.h\u003e\n\nint port \u003d 12000;\nchar buffer[4096];\nint main(int argc, char *argv[])\n{\n        int lfd \u003d socket(AF_INET, SOCK_STREAM, 0);\n        struct sockaddr_in socket_address;\n        time_t t0, t1;\n        int on \u003d 1, sfd, res;\n        unsigned long total \u003d 0;\n        socklen_t alen \u003d sizeof(socket_address);\n        pid_t pid;\n\n        time(\u0026t0);\n        socket_address.sin_family \u003d AF_INET;\n        socket_address.sin_port \u003d htons(port);\n        socket_address.sin_addr.s_addr \u003d htonl(INADDR_LOOPBACK);\n\n        if (lfd \u003d\u003d -1) {\n                perror(\"socket()\");\n                return 1;\n        }\n        setsockopt(lfd, SOL_SOCKET, SO_REUSEADDR, \u0026on, sizeof(int));\n        if (bind(lfd, (struct sockaddr *)\u0026socket_address, sizeof(socket_address)) \u003d\u003d -1) {\n                perror(\"bind\");\n                close(lfd);\n                return 1;\n        }\n        if (listen(lfd, 1) \u003d\u003d -1) {\n                perror(\"listen()\");\n                close(lfd);\n                return 1;\n        }\n        pid \u003d fork();\n        if (pid \u003d\u003d 0) {\n                int i, cfd \u003d socket(AF_INET, SOCK_STREAM, 0);\n                close(lfd);\n                if (connect(cfd, (struct sockaddr *)\u0026socket_address, sizeof(socket_address)) \u003d\u003d -1) {\n                        perror(\"connect()\");\n                        return 1;\n                        }\n                for (i \u003d 0 ; ;) {\n                        res \u003d write(cfd, \"blablabla\\n\", 10);\n                        if (res \u003e 0) total +\u003d res;\n                        else if (res \u003d\u003d -1) {\n                                perror(\"write()\");\n                                break;\n                        } else break;\n                        usleep(100000);\n                        if (++i \u003d\u003d 10) {\n                                system(\"ss -on dst 127.0.0.1:12000\");\n                                i \u003d 0;\n                        }\n                }\n                time(\u0026t1);\n                fprintf(stderr, \"wrote %lu bytes but was interrupted after %g seconds\\n\", total, difftime(t1, t0));\n                system(\"ss -on | grep 127.0.0.1:12000\");\n                close(cfd);\n                return 0;\n        }\n        sfd \u003d accept(lfd, (struct sockaddr *)\u0026socket_address, \u0026alen);\n        if (sfd \u003d\u003d -1) {\n                perror(\"accept\");\n                return 1;\n        }\n        close(lfd);\n        while (1) {\n                struct pollfd pfd[1];\n                pfd[0].fd \u003d sfd;\n                pfd[0].events \u003d POLLIN;\n                if (poll(pfd, 1, 4000) \u003d\u003d 0) {\n                        fprintf(stderr, \"Exiting read() because no data available (4000 ms timeout).\\n\");\n                        break;\n                }\n                res \u003d read(sfd, buffer, sizeof(buffer));\n                if (res \u003e 0) total +\u003d res;\n                else if (res \u003d\u003d 0) break;\n                else perror(\"read()\");\n        }\n        fprintf(stderr, \"read %lu bytes\\n\", total);\n        close(sfd);\n        return 0;\n}\n----------------------------------------\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "b4942af65028c5eb516fdd9053020ccb2ee186ce",
      "tree": "c1dbedc282777c599abf430dbd591edd1380dcab",
      "parents": [
        "5b3ab1dbd401b36ba2f9bfee2d2dae252fd62cd8"
      ],
      "author": {
        "name": "Oliver Hartkopp",
        "email": "oliver@hartkopp.net",
        "time": "Wed Jul 23 14:06:04 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jul 23 14:06:04 2008 -0700"
      },
      "message": "net: Update entry in af_family_clock_key_strings\n\nIn the merge phase of the CAN subsystem the \naf_family_clock_key_strings[] have been added to sock.c in commit \n443aef0eddfa44c158d1b94ebb431a70638fcab4 \n(lockdep: fixup sk_callback_lock annotation). This trivial patch adds \nthe missing name for address family 29 (AF_CAN).\n\nSigned-off-by: Oliver Hartkopp \u003coliver@hartkopp.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "5b3ab1dbd401b36ba2f9bfee2d2dae252fd62cd8",
      "tree": "e03459ee944e51a49f46e71aa688c8507005659f",
      "parents": [
        "8a6d2ea0cd121e3bfff4dbce5bc111874cf9e9d2"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jul 23 14:01:29 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jul 23 14:01:29 2008 -0700"
      },
      "message": "netdev: Remove warning from __netif_schedule().\n\nIt isn\u0027t helping anything and we aren\u0027t going to be able to change all\nthe drivers that do queue wakeups in strange situations.\n\nJust letting a noop_qdisc get scheduled will work because when\nqdisc_run() executes via net_tx_work() it will simply find no packets\npending when it makes the -\u003edequeue() call in qdisc_restart.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "5554b35933245e95710d709175e14c02cbc956a4",
      "tree": "2eeb2f05a7061da3c9a3bc9ea69a344b990c6b49",
      "parents": [
        "0f6e38a6381446eff5175b77d1094834a633a90f",
        "7f1b358a236ee9c19657a619ac6f2dcabcaa0924"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jul 23 12:03:18 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jul 23 12:03:18 2008 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/async_tx\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/async_tx: (24 commits)\n  I/OAT: I/OAT version 3.0 support\n  I/OAT: tcp_dma_copybreak default value dependent on I/OAT version\n  I/OAT: Add watchdog/reset functionality to ioatdma\n  iop_adma: cleanup iop_chan_xor_slot_count\n  iop_adma: document how to calculate the minimum descriptor pool size\n  iop_adma: directly reclaim descriptors on allocation failure\n  async_tx: make async_tx_test_ack a boolean routine\n  async_tx: remove depend_tx from async_tx_sync_epilog\n  async_tx: export async_tx_quiesce\n  async_tx: fix handling of the \"out of descriptor\" condition in async_xor\n  async_tx: ensure the xor destination buffer remains dma-mapped\n  async_tx: list_for_each_entry_rcu() cleanup\n  dmaengine: Driver for the Synopsys DesignWare DMA controller\n  dmaengine: Add slave DMA interface\n  dmaengine: add DMA_COMPL_SKIP_{SRC,DEST}_UNMAP flags to control dma unmap\n  dmaengine: Add dma_client parameter to device_alloc_chan_resources\n  dmatest: Simple DMA memcpy test client\n  dmaengine: DMA engine driver for Marvell XOR engine\n  iop-adma: fix platform driver hotplug/coldplug\n  dmaengine: track the number of clients using a channel\n  ...\n\nFixed up conflict in drivers/dca/dca-sysfs.c manually\n"
    },
    {
      "commit": "c010b2f76c3032e48097a6eef291d8593d5d79a6",
      "tree": "16077c83703527732991a55dea1abe330c0ccdc6",
      "parents": [
        "6069fb2ef5d4f47432359c97f350e0cfcc4d208e",
        "521c4d96e0840ecce25b956e00f416ed499ef2ba"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 22 19:09:51 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 22 19:09:51 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: (82 commits)\n  ipw2200: Call netif_*_queue() interfaces properly.\n  netxen: Needs to include linux/vmalloc.h\n  [netdrvr] atl1d: fix !CONFIG_PM build\n  r6040: rework init_one error handling\n  r6040: bump release number to 0.18\n  r6040: handle RX fifo full and no descriptor interrupts\n  r6040: change the default waiting time\n  r6040: use definitions for magic values in descriptor status\n  r6040: completely rework the RX path\n  r6040: call napi_disable when puting down the interface and set lp-\u003edev accordingly.\n  mv643xx_eth: fix NETPOLL build\n  r6040: rework the RX buffers allocation routine\n  r6040: fix scheduling while atomic in r6040_tx_timeout\n  r6040: fix null pointer access and tx timeouts\n  r6040: prefix all functions with r6040\n  rndis_host: support WM6 devices as modems\n  at91_ether: use netstats in net_device structure\n  sfc: Create one RX queue and interrupt per CPU package by default\n  sfc: Use a separate workqueue for resets\n  sfc: I2C adapter initialisation fixes\n  ...\n"
    },
    {
      "commit": "16a37acaaf4aaa631ba3f83710ed6cdb1a597520",
      "tree": "5826c763c70dc6b798c0d12216a80f4596dec284",
      "parents": [
        "09177e85d6a0bffac8b55afd28ed8b82bd873f0b"
      ],
      "author": {
        "name": "Maciej Sosnowski",
        "email": "maciej.sosnowski@intel.com",
        "time": "Tue Jul 22 17:30:57 2008 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Jul 22 17:30:57 2008 -0700"
      },
      "message": "I/OAT: tcp_dma_copybreak default value dependent on I/OAT version\n\nI/OAT DMA performance tuning showed different optimal values of\ntcp_dma_copybreak for different I/OAT versions (4096 for 1.2 and 2048\nfor 2.0).  This patch lets ioatdma driver set tcp_dma_copybreak value\naccording to these results.\n\n[dan.j.williams@intel.com: remove some ifdefs]\nSigned-off-by: Maciej Sosnowski \u003cmaciej.sosnowski@intel.com\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n"
    },
    {
      "commit": "3d0f24a74e7957593a5622eb5c04ed6860dd8391",
      "tree": "52c17c0606f47f5435ada93baf63d1a585a2ccb9",
      "parents": [
        "75307c0fe7fcb3b52a92fe32384fc33f50622654"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Tue Jul 22 14:35:50 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jul 22 14:35:50 2008 -0700"
      },
      "message": "ipv6: icmp6_dst_gc return change\n\nChange icmp6_dst_gc to return the one value the caller cares about rather\nthan using call by reference.\n\nSigned-off-by: Stephen Hemminger \u003cshemminger@vyatta.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "75307c0fe7fcb3b52a92fe32384fc33f50622654",
      "tree": "e29728cacb84bc7b77644099fc8a466c575b90aa",
      "parents": [
        "a76d7345a3f92bb8352f200e7b2e380dddcd7e36"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Tue Jul 22 14:35:07 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jul 22 14:35:07 2008 -0700"
      },
      "message": "ipv6: use kcalloc\n\nTh fib_table_hash is an array, so use kcalloc.\n\nSigned-off-by: Stephen Hemminger \u003cshemminger@vyatta.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "a76d7345a3f92bb8352f200e7b2e380dddcd7e36",
      "tree": "cf86c16ba208ef3af16d06fb941a592f754ad966",
      "parents": [
        "c8a4522245e9931a53a98d5160bb4c00d3f73921"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Tue Jul 22 14:34:35 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jul 22 14:34:35 2008 -0700"
      },
      "message": "ipv6: use spin_trylock_bh\n\nNow there is spin_trylock_bh, use it rather than open coding.\n\nSigned-off-by: Stephen Hemminger \u003cshemminger@vyatta.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "c8a4522245e9931a53a98d5160bb4c00d3f73921",
      "tree": "53dfe5ef6ae5706a8ebaa90ae2ae4c84b3dc04fa",
      "parents": [
        "417f28bb340725544c36b35465444d2fd57232b8"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Tue Jul 22 14:34:09 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jul 22 14:34:09 2008 -0700"
      },
      "message": "ipv6: use round_jiffies\n\nThis timer normally happens once a minute, there is no need to cause an\nearly wakeup for it, so align it to next second boundary to safe power.\nIt can\u0027t be deferred because then it could take too long on cleanup or DoS.\n\nSigned-off-by: Stephen Hemminger \u003cshemminger@vyatta.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "417f28bb340725544c36b35465444d2fd57232b8",
      "tree": "8a38097b4ea34a2877ecfdb95f37ad2864f5754d",
      "parents": [
        "888c848ed34bd5f8cb56567624c0d951ab35174e"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Tue Jul 22 14:33:45 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jul 22 14:33:45 2008 -0700"
      },
      "message": "netns: dont alloc ipv6 fib timer list\n\nFIB timer list is a trivial size structure, avoid indirection and just\nput it in existing ns.\n\nSigned-off-by: Stephen Hemminger \u003cshemminger@vyatta.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "888c848ed34bd5f8cb56567624c0d951ab35174e",
      "tree": "b63a960b5fbdc8bebab6ed1d84212a95a19c0bc2",
      "parents": [
        "4d6971e909e904be60218739fc961188471fc4f4"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@kernel.org",
        "time": "Tue Jul 22 14:21:58 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jul 22 14:21:58 2008 -0700"
      },
      "message": "ipv6: make struct ipv6_devconf static\n\nstruct ipv6_devconf can now become static.\n\nSigned-off-by: Adrian Bunk \u003cbunk@kernel.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "4d6971e909e904be60218739fc961188471fc4f4",
      "tree": "b1c5b55ec7f6e6982f6ae55b1e580db629decb8e",
      "parents": [
        "abd0b198ea699578c3c3476d646c91842e19dbd2"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@kernel.org",
        "time": "Tue Jul 22 14:21:30 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jul 22 14:21:30 2008 -0700"
      },
      "message": "sctp: remove sctp_assoc_proc_exit()\n\nCommit 20c2c1fd6c842caf70dcb1d94b9d58861949fd3d\n(sctp: add sctp/remaddr table to complete RFC remote address table OID)\nadded an unused sctp_assoc_proc_exit() function that seems to have been \nunintentionally created when copying the assocs code.\n\nSigned-off-by: Adrian Bunk \u003cbunk@kernel.org\u003e\nAcked-by: Neil Horman \u003cnhorman@tuxdriver.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "abd0b198ea699578c3c3476d646c91842e19dbd2",
      "tree": "7fd20239f80d1cad22e9023d3c481944b81a198a",
      "parents": [
        "a94f779f9d82eb2d758a8715eaae5df98e8dcb21"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@kernel.org",
        "time": "Tue Jul 22 14:20:45 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jul 22 14:20:45 2008 -0700"
      },
      "message": "sctp: make sctp_outq_flush() static\n\nsctp_outq_flush() can now become static.\n\nSigned-off-by: Adrian Bunk \u003cbunk@kernel.org\u003e\nAcked-by: Neil Horman \u003cnhorman@tuxdriver.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "a94f779f9d82eb2d758a8715eaae5df98e8dcb21",
      "tree": "0ea45807ecf0f6788ec226000b4ff69b0c0bd2a1",
      "parents": [
        "8086cd451f08f4c0f9693fc66d87754bbd18cfba"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@kernel.org",
        "time": "Tue Jul 22 14:20:11 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jul 22 14:20:11 2008 -0700"
      },
      "message": "pkt_sched: make qdisc_class_hash_alloc() static\n\nThis patch makes the needlessly global qdisc_class_hash_alloc() static.\n\nSigned-off-by: Adrian Bunk \u003cbunk@kernel.org\u003e\nAcked-by: Patrick McHardy \u003ckaber@trash.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "cf508b1211dbe576778ff445ea1b4b0bcfa5c4ea",
      "tree": "4774838c2db17db71662a625fea25def8823341a",
      "parents": [
        "d29f749e252bcdbfe7a75a58f0ee92da16f127c0"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jul 22 14:16:42 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jul 22 14:16:42 2008 -0700"
      },
      "message": "netdev: Handle -\u003eaddr_list_lock just like -\u003e_xmit_lock for lockdep.\n\nThe new address list lock needs to handle the same device layering\nissues that the _xmit_lock one does.\n\nThis integrates work done by Patrick McHardy.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "d29f749e252bcdbfe7a75a58f0ee92da16f127c0",
      "tree": "701734c2beed075d603d28cc4a343ecf1d4e475b",
      "parents": [
        "b32d13102d39ed411d152a7ffcc5f66d5b3b1b49"
      ],
      "author": {
        "name": "Dave Jones",
        "email": "davej@redhat.com",
        "time": "Tue Jul 22 14:09:06 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jul 22 14:09:06 2008 -0700"
      },
      "message": "net: Fix build failure with \u0027make mandocs\u0027.\n\nThe function header comments have to go with the functions\nthey are documenting, or things go horribly wrong when we\ntry to process them with the docbook tools.\n\nWarning(include/linux/netdevice.h:1006): No description found for parameter \u0027dev_queue\u0027\nWarning(include/linux/netdevice.h:1033): No description found for parameter \u0027dev_queue\u0027\nWarning(include/linux/netdevice.h:1067): No description found for parameter \u0027dev_queue\u0027\nWarning(include/linux/netdevice.h:1093): No description found for parameter \u0027dev_queue\u0027\nWarning(include/linux/netdevice.h:1474): No description found for parameter \u0027txq\u0027\nError(net/core/dev.c:1674): cannot understand prototype: \u0027u32 simple_tx_hashrnd; \u0027\n\nSigned-off-by: Dave Jones \u003cdavej@redhat.com\u003e\nAcked-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "16be63fd1670000b96b76cb55b6f1bead21b4c4b",
      "tree": "7b5bbe9ccf70098a88e31a6da9196f1476730eea",
      "parents": [
        "110cf374a809817d5c080c0ac82d65d029820a66"
      ],
      "author": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Tue May 27 11:50:16 2008 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Mon Jul 21 21:54:51 2008 -0700"
      },
      "message": "bluetooth: remove improper bluetooth class symlinks.\n\nDon\u0027t create symlinks in a class to a device that is not owned by the\nclass.  If the bluetooth subsystem really wants to point to all of the\ndevices it controls, it needs to create real devices, not fake symlinks.\n\nCc: Maxim Krasnyansky \u003cmaxk@qualcomm.com\u003e\nCc: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nAcked-by: Marcel Holtmann \u003cmarcel@holtmann.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "b32d13102d39ed411d152a7ffcc5f66d5b3b1b49",
      "tree": "5db024bc2defe8440ea67c16dce65c4082ff4b98",
      "parents": [
        "ebb36a978131810c98e7198b1187090c697cf99f"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jul 21 18:45:34 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jul 21 18:45:34 2008 -0700"
      },
      "message": "tcp: Fix bitmask test in tcp_syn_options()\n\nAs reported by Alexey Dobriyan:\n\n\t  CHECK   net/ipv4/tcp_output.c\n\tnet/ipv4/tcp_output.c:475:7: warning: dubious: !x \u0026 y\n\nAnd sparse is damn right!\n\n\tif (unlikely(!OPTION_TS \u0026 opts-\u003eoptions))\n\t\t    ^^^\n\t\tsize +\u003d TCPOLEN_SACKPERM_ALIGNED;\n\nOPTION_TS is (1 \u003c\u003c 1), so condition will never trigger.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "47112e25da41d9059626033986dc3353e101f815",
      "tree": "72857968c318960ba50a4cc7232041228e8361dc",
      "parents": [
        "6579e57b31d79d31d9b806e41ba48774e73257dc"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Mon Jul 21 13:35:08 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jul 21 13:35:08 2008 -0700"
      },
      "message": "udplite: Protection against coverage value wrap-around\n\nThis patch clamps the cscov setsockopt values to a maximum of 0xFFFF.\n\nSetsockopt values greater than 0xffff can cause an unwanted\nwrap-around.  Further, IPv6 jumbograms are not supported (RFC 3838,\n3.5), so that values greater than 0xffff are not even useful.\n\nFurther changes: fixed a typo in the documentation.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "6579e57b31d79d31d9b806e41ba48774e73257dc",
      "tree": "03ba72024a1982ee76b8a891a443b0fdfb6d7c93",
      "parents": [
        "7943986ca1138ac99597b1aa4dc893012dcfdc08"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Mon Jul 21 13:31:48 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jul 21 13:31:48 2008 -0700"
      },
      "message": "net: Print the module name as part of the watchdog message\n\nAs suggested by Dave:\n\nThis patch adds a function to get the driver name from a struct net_device,\nand consequently uses this in the watchdog timeout handler to print as \npart of the message. \n\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "7943986ca1138ac99597b1aa4dc893012dcfdc08",
      "tree": "d4e0461f4f0d8c6046253bb72ed12e583e19a5d9",
      "parents": [
        "847499ce71bdcc8fc542062df6ebed3e596608dd"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Mon Jul 21 13:28:44 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jul 21 13:28:44 2008 -0700"
      },
      "message": "net: use kcalloc in netdev_queue alloc\n\nMinor nit, use size_t for allocation size and kcalloc to allocate\nan array. Probably makes no actual code difference.\n\nSigned-off-by: Stephen Hemminger \u003cshemminger@vyatta.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "847499ce71bdcc8fc542062df6ebed3e596608dd",
      "tree": "94e7daee7bf9aa15c32bcd8816cc86aad1ff0d10",
      "parents": [
        "3a33cc108d11fab2a2544e2601066ba4924736aa"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Mon Jul 21 13:21:35 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jul 21 13:21:35 2008 -0700"
      },
      "message": "ipv6: use timer pending\n\nThis fixes the bridge reference count problem and cleanups ipv6 FIB\ntimer management.  Don\u0027t use expires field, because it is not a proper\nway to test, instead use timer_pending().\n\nSigned-off-by: Stephen Hemminger \u003cshemminger@vyatta.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "5547cd0ae8b46db9a084505239294eed9b8c8e2d",
      "tree": "0ce92a2050c5b6bd8dfe50f6942fbd79da9cbc32",
      "parents": [
        "c71529e42ce39c167dc53430cb8f3d5634af77df"
      ],
      "author": {
        "name": "Patrick McHardy",
        "email": "kaber@trash.net",
        "time": "Mon Jul 21 10:03:49 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jul 21 10:11:02 2008 -0700"
      },
      "message": "netfilter: nf_conntrack_sctp: fix sparse warnings\n\nIntroduced by a258860e (netfilter: ctnetlink: add full support for SCTP to ctnetlink):\n\nnet/netfilter/nf_conntrack_proto_sctp.c:483:2: warning: cast from restricted type\nnet/netfilter/nf_conntrack_proto_sctp.c:483:2: warning: incorrect type in argument 1 (different base types)\nnet/netfilter/nf_conntrack_proto_sctp.c:483:2:    expected unsigned int [unsigned] [usertype] x\nnet/netfilter/nf_conntrack_proto_sctp.c:483:2:    got restricted unsigned int const \u003cnoident\u003e\nnet/netfilter/nf_conntrack_proto_sctp.c:483:2: warning: cast from restricted type\nnet/netfilter/nf_conntrack_proto_sctp.c:483:2: warning: cast from restricted type\nnet/netfilter/nf_conntrack_proto_sctp.c:483:2: warning: cast from restricted type\nnet/netfilter/nf_conntrack_proto_sctp.c:483:2: warning: cast from restricted type\nnet/netfilter/nf_conntrack_proto_sctp.c:487:2: warning: cast from restricted type\nnet/netfilter/nf_conntrack_proto_sctp.c:487:2: warning: incorrect type in argument 1 (different base types)\nnet/netfilter/nf_conntrack_proto_sctp.c:487:2:    expected unsigned int [unsigned] [usertype] x\nnet/netfilter/nf_conntrack_proto_sctp.c:487:2:    got restricted unsigned int const \u003cnoident\u003e\nnet/netfilter/nf_conntrack_proto_sctp.c:487:2: warning: cast from restricted type\nnet/netfilter/nf_conntrack_proto_sctp.c:487:2: warning: cast from restricted type\nnet/netfilter/nf_conntrack_proto_sctp.c:487:2: warning: cast from restricted type\nnet/netfilter/nf_conntrack_proto_sctp.c:487:2: warning: cast from restricted type\nnet/netfilter/nf_conntrack_proto_sctp.c:532:42: warning: incorrect type in assignment (different base types)\nnet/netfilter/nf_conntrack_proto_sctp.c:532:42:    expected restricted unsigned int \u003cnoident\u003e\nnet/netfilter/nf_conntrack_proto_sctp.c:532:42:    got unsigned int\nnet/netfilter/nf_conntrack_proto_sctp.c:534:39: warning: incorrect type in assignment (different base types)\nnet/netfilter/nf_conntrack_proto_sctp.c:534:39:    expected restricted unsigned int \u003cnoident\u003e\nnet/netfilter/nf_conntrack_proto_sctp.c:534:39:    got unsigned int\n\nSigned-off-by: Patrick McHardy \u003ckaber@trash.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "c71529e42ce39c167dc53430cb8f3d5634af77df",
      "tree": "4d7d97e2f35b72ee5da618ffdf60eb53e58350d8",
      "parents": [
        "db1a75bdcc1766dc7e1fae9201ae287dcbcb6c66"
      ],
      "author": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Mon Jul 21 10:03:23 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jul 21 10:11:02 2008 -0700"
      },
      "message": "netfilter: nf_nat_sip: c\u003d is optional for session\n\nAccording to RFC2327, the connection information is optional\nin the session description since it can be specified in the\nmedia description instead.\n\nMy provider does exactly that and does not provide any connection\ninformation in the session description.  As a result the new\nkernel drops all invite responses.\n\nThis patch makes it optional as documented.\n\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nSigned-off-by: Patrick McHardy \u003ckaber@trash.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "db1a75bdcc1766dc7e1fae9201ae287dcbcb6c66",
      "tree": "6cc8bd2324d762a177e6e31d1cda7f28ddcc1a5f",
      "parents": [
        "72961ecf84d67d6359a1b30f9b2a8427f13e1e71"
      ],
      "author": {
        "name": "Jan Engelhardt",
        "email": "jengelh@medozas.de",
        "time": "Mon Jul 21 10:02:59 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jul 21 10:11:01 2008 -0700"
      },
      "message": "netfilter: xt_TCPMSS: collapse tcpmss_reverse_mtu{4,6} into one function\n\nSigned-off-by: Jan Engelhardt \u003cjengelh@medozas.de\u003e\nSigned-off-by: Patrick McHardy \u003ckaber@trash.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "72961ecf84d67d6359a1b30f9b2a8427f13e1e71",
      "tree": "531aeb470c069d4ecd91a4080dc820308d84fc9d",
      "parents": [
        "280763c053fee297d95b474f2c145990670371e6"
      ],
      "author": {
        "name": "Eric Leblond",
        "email": "eric@inl.fr",
        "time": "Mon Jul 21 10:02:35 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jul 21 10:11:00 2008 -0700"
      },
      "message": "netfilter: nfnetlink_log: send complete hardware header\n\nThis patch adds some fields to NFLOG to be able to send the complete\nhardware header with all necessary informations.\nIt sends to userspace:\n * the type of hardware link\n * the lenght of hardware header\n * the hardware header\n\nSigned-off-by: Eric Leblond \u003ceric@inl.fr\u003e\nSigned-off-by: Patrick McHardy \u003ckaber@trash.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "280763c053fee297d95b474f2c145990670371e6",
      "tree": "daa5d6b0107318e1fb0fe4c7184c77ab0d40b6ff",
      "parents": [
        "584015727a3b88b46602b20077b46cd04f8b4ab3"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Mon Jul 21 10:02:12 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jul 21 10:10:59 2008 -0700"
      },
      "message": "netfilter: xt_time: fix time\u0027s time_mt()\u0027s use of do_div()\n\nFix netfilter xt_time\u0027s time_mt()\u0027s use of do_div() on an s64 by using\ndiv_s64() instead.\n\nThis was introduced by patch ee4411a1b1e0b679c99686629b5eab5a072ce49f\n(\"[NETFILTER]: x_tables: add xt_time match\").\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Patrick McHardy \u003ckaber@trash.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "584015727a3b88b46602b20077b46cd04f8b4ab3",
      "tree": "a9b4ec18e2181e03ee24b59b30f7408bcbcf140c",
      "parents": [
        "07a7c1070ed382ad4562e3a0d453fd2001d92f7b"
      ],
      "author": {
        "name": "Krzysztof Piotr Oledzki",
        "email": "ole@ans.pl",
        "time": "Mon Jul 21 10:01:34 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jul 21 10:10:58 2008 -0700"
      },
      "message": "netfilter: accounting rework: ct_extend + 64bit counters (v4)\n\nInitially netfilter has had 64bit counters for conntrack-based accounting, but\nit was changed in 2.6.14 to save memory. Unfortunately in-kernel 64bit counters are\nstill required, for example for \"connbytes\" extension. However, 64bit counters\nwaste a lot of memory and it was not possible to enable/disable it runtime.\n\nThis patch:\n - reimplements accounting with respect to the extension infrastructure,\n - makes one global version of seq_print_acct() instead of two seq_print_counters(),\n - makes it possible to enable it at boot time (for CONFIG_SYSCTL/CONFIG_SYSFS\u003dn),\n - makes it possible to enable/disable it at runtime by sysctl or sysfs,\n - extends counters from 32bit to 64bit,\n - renames ip_conntrack_counter -\u003e nf_conn_counter,\n - enables accounting code unconditionally (no longer depends on CONFIG_NF_CT_ACCT),\n - set initial accounting enable state based on CONFIG_NF_CT_ACCT\n - removes buggy IPCT_COUNTER_FILLING event handling.\n\nIf accounting is enabled newly created connections get additional acct extend.\nOld connections are not changed as it is not possible to add a ct_extend area\nto confirmed conntrack. Accounting is performed for all connections with\nacct extend regardless of a current state of \"net.netfilter.nf_conntrack_acct\".\n\nSigned-off-by: Krzysztof Piotr Oledzki \u003cole@ans.pl\u003e\nSigned-off-by: Patrick McHardy \u003ckaber@trash.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "0dbff689c2f299e8f63911247925f2728d087688",
      "tree": "77a0b4db11d438315e2ef97ce117bbe532774600",
      "parents": [
        "ae6134bdf3197206fba95563d755d2fa50d90ddd"
      ],
      "author": {
        "name": "Changli Gao",
        "email": "xiaosuo@gmail.com",
        "time": "Mon Jul 21 10:00:51 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jul 21 10:10:57 2008 -0700"
      },
      "message": "netfilter: nf_nat_core: eliminate useless find_appropriate_src for IP_NAT_RANGE_PROTO_RANDOM\n\nSigned-off-by: Changli Gao \u003cxiaosuo@gmail.com\u003e\nSigned-off-by: Patrick McHardy \u003ckaber@trash.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "d3678b463df73f5060d7420915080e19baeb379b",
      "tree": "4f4fc3e49bb0a9d21b9280f1c1a990eb03651564",
      "parents": [
        "867d79fb9a4d5929ad8335c896fcfe11c3b2ef14"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jul 21 09:56:13 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jul 21 10:10:50 2008 -0700"
      },
      "message": "Revert \"pkt_sched: Make default qdisc nonshared-multiqueue safe.\"\n\nThis reverts commit a0c80b80e0fb48129e4e9d6a9ede914f9ff1850d.\n\nAfter discussions with Jamal and Herbert on netdev, we should\nprovide at least minimal prioritization at the qdisc level\neven in multiqueue situations.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "867d79fb9a4d5929ad8335c896fcfe11c3b2ef14",
      "tree": "b33fe42bfc1e73b9e0f65baf9f02ddc437e6dc83",
      "parents": [
        "b6b2fed1f4802b8fcc9d7548a8f785225d38f9a3"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 21 09:54:18 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jul 21 10:10:49 2008 -0700"
      },
      "message": "net: In __netif_schedule() use WARN_ON instead of BUG_ON\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "b6b2fed1f4802b8fcc9d7548a8f785225d38f9a3",
      "tree": "eebdc34112d617524b762c585b79b2eaab3386ae",
      "parents": [
        "c3ee84163e5bc0dc2e1ccf1d3fc412debca73bab"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jul 21 09:48:06 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jul 21 10:10:48 2008 -0700"
      },
      "message": "net: Improve simple_tx_hash().\n\nBased upon feedback from Eric Dumazet and Andi Kleen.\n\nCure several deficiencies in simple_tx_hash() by using\njhash + reciprocol multiply.\n\n1) Eliminates expensive modulus operation.\n\n2) Makes hash less attackable by using random seed.\n\n3) Eliminates endianness hash distribution issues.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "c3ee84163e5bc0dc2e1ccf1d3fc412debca73bab",
      "tree": "9b6319d2abab9ab6e4692dfd71ff4c38dfe7f997",
      "parents": [
        "fd24c4af6e82231391fa09875ae6378fa1399f0f"
      ],
      "author": {
        "name": "Daniel Lezcano",
        "email": "dlezcano@fr.ibm.com",
        "time": "Mon Jul 21 09:18:07 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jul 21 09:18:07 2008 -0700"
      },
      "message": "pkt_sched: Remove unused variable skb in dev_deactivate_queue function.\n\nRemoved unused variable \u0027skb\u0027 in the dev_deactivate_queue function\n\nSigned-off-by: Daniel Lezcano \u003cdlezcano@fr.ibm.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "eb6a12c2428d21a9f3e0f1a50e927d5fd80fc3d0",
      "tree": "5ac6f43899648abeab1d43aad3107f664e7f13d5",
      "parents": [
        "c4762aba0b1f72659aae9ce37b772ca8bd8f06f4",
        "14b395e35d1afdd8019d11b92e28041fad591b71"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Jul 21 17:19:50 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Jul 21 17:19:50 2008 +0200"
      },
      "message": "Merge branch \u0027linus\u0027 into cpus4096-for-linus\n\nConflicts:\n\n\tnet/sunrpc/svc.c\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "14b395e35d1afdd8019d11b92e28041fad591b71",
      "tree": "cff7ba9bed7a38300b19a5bacc632979d64fd9c8",
      "parents": [
        "734b397cd14f3340394a8dd3266bec97d01f034b",
        "5108b27651727b5aba0826e8fd7be71b42428701"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jul 20 21:21:46 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jul 20 21:21:46 2008 -0700"
      },
      "message": "Merge branch \u0027for-2.6.27\u0027 of git://linux-nfs.org/~bfields/linux\n\n* \u0027for-2.6.27\u0027 of git://linux-nfs.org/~bfields/linux: (51 commits)\n  nfsd: nfs4xdr.c do-while is not a compound statement\n  nfsd: Use C99 initializers in fs/nfsd/nfs4xdr.c\n  lockd: Pass \"struct sockaddr *\" to new failover-by-IP function\n  lockd: get host reference in nlmsvc_create_block() instead of callers\n  lockd: minor svclock.c style fixes\n  lockd: eliminate duplicate nlmsvc_lookup_host call from nlmsvc_lock\n  lockd: eliminate duplicate nlmsvc_lookup_host call from nlmsvc_testlock\n  lockd: nlm_release_host() checks for NULL, caller needn\u0027t\n  file lock: reorder struct file_lock to save space on 64 bit builds\n  nfsd: take file and mnt write in nfs4_upgrade_open\n  nfsd: document open share bit tracking\n  nfsd: tabulate nfs4 xdr encoding functions\n  nfsd: dprint operation names\n  svcrdma: Change WR context get/put to use the kmem cache\n  svcrdma: Create a kmem cache for the WR contexts\n  svcrdma: Add flush_scheduled_work to module exit function\n  svcrdma: Limit ORD based on client\u0027s advertised IRD\n  svcrdma: Remove unused wait q from svcrdma_xprt structure\n  svcrdma: Remove unneeded spin locks from __svc_rdma_free\n  svcrdma: Add dma map count and WARN_ON\n  ...\n"
    },
    {
      "commit": "702beb87d6b4e08cca394b210679e5d7c2ac9383",
      "tree": "8bd3c2ae958e42dbc525a0ab3575148472dc28fe",
      "parents": [
        "d1671a9c15f55a1475d41269494518e348880c33"
      ],
      "author": {
        "name": "David Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Jul 20 18:17:02 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jul 20 21:18:26 2008 -0700"
      },
      "message": "ipv6: Fix warning in addrconf code.\n\nReported by Linus.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d1671a9c15f55a1475d41269494518e348880c33",
      "tree": "140dec7fc0a8eaddc0f529e1790f888811de53a7",
      "parents": [
        "ae0645a451b02ad35c520b01177b70ebd59c91ab",
        "3a682fbd732d3d27bec722a923952b0938e8a404"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jul 20 21:17:20 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jul 20 21:17:20 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:\n  pkt_sched: Fix build with NET_SCHED disabled.\n"
    },
    {
      "commit": "3a682fbd732d3d27bec722a923952b0938e8a404",
      "tree": "715ca6472e7c3d9b354cb8bfa18db74dabcdaeff",
      "parents": [
        "fb65a7c091529bfffb1262515252c0d0f6241c5c"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Jul 20 18:13:01 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Jul 20 18:13:01 2008 -0700"
      },
      "message": "pkt_sched: Fix build with NET_SCHED disabled.\n\nThe stab bits can\u0027t be referenced uniless the full\npacket scheduler layer is enabled.\n\nReported by Stephen Rothwell.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "db6d8c7a4027b48d797b369a53f8470aaeed7063",
      "tree": "e140c104a89abc2154e1f41a7db8ebecbb6fa0b4",
      "parents": [
        "3a533374283aea50eab3976d8a6d30532175f009",
        "fb65a7c091529bfffb1262515252c0d0f6241c5c"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jul 20 17:43:29 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jul 20 17:43:29 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: (1232 commits)\n  iucv: Fix bad merging.\n  net_sched: Add size table for qdiscs\n  net_sched: Add accessor function for packet length for qdiscs\n  net_sched: Add qdisc_enqueue wrapper\n  highmem: Export totalhigh_pages.\n  ipv6 mcast: Omit redundant address family checks in ip6_mc_source().\n  net: Use standard structures for generic socket address structures.\n  ipv6 netns: Make several \"global\" sysctl variables namespace aware.\n  netns: Use net_eq() to compare net-namespaces for optimization.\n  ipv6: remove unused macros from net/ipv6.h\n  ipv6: remove unused parameter from ip6_ra_control\n  tcp: fix kernel panic with listening_get_next\n  tcp: Remove redundant checks when setting eff_sacks\n  tcp: options clean up\n  tcp: Fix MD5 signatures for non-linear skbs\n  sctp: Update sctp global memory limit allocations.\n  sctp: remove unnecessary byteshifting, calculate directly in big-endian\n  sctp: Allow only 1 listening socket with SO_REUSEADDR\n  sctp: Do not leak memory on multiple listen() calls\n  sctp: Support ipv6only AF_INET6 sockets.\n  ...\n"
    },
    {
      "commit": "a352def21a642133758b868c71bee12ab34ad5c5",
      "tree": "95d0f7229f9e4afccdc6fbbf11f7f5c6dd83b0fd",
      "parents": [
        "e1e5770bb63fb9d71619a68f52cb0ba4b2ae58a6"
      ],
      "author": {
        "name": "Alan Cox",
        "email": "alan@redhat.com",
        "time": "Wed Jul 16 21:53:12 2008 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jul 20 17:12:34 2008 -0700"
      },
      "message": "tty: Ldisc revamp\n\nMove the line disciplines towards a conventional -\u003eops arrangement.  For\nthe moment the actual \u0027tty_ldisc\u0027 struct in the tty is kept as part of\nthe tty struct but this can then be changed if it turns out that when it\nall settles down we want to refcount ldiscs separately to the tty.\n\nPull the ldisc code out of /proc and put it with our ldisc code.\n\nSigned-off-by: Alan Cox \u003calan@redhat.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "fb65a7c091529bfffb1262515252c0d0f6241c5c",
      "tree": "021a043df0e0d328c509c0e8fb74429cbce006c7",
      "parents": [
        "175f9c1bba9b825d22b142d183c9e175488b260c"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Jul 20 10:18:44 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Jul 20 10:18:44 2008 -0700"
      },
      "message": "iucv: Fix bad merging.\n\nNoticed by Stephen Rothwell.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "175f9c1bba9b825d22b142d183c9e175488b260c",
      "tree": "6b9cdb2e3802e7fc8422dc0d0cc200f6d4d1d0a5",
      "parents": [
        "0abf77e55a2459aa9905be4b226e4729d5b4f0cb"
      ],
      "author": {
        "name": "Jussi Kivilinna",
        "email": "jussi.kivilinna@mbnet.fi",
        "time": "Sun Jul 20 00:08:47 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Jul 20 00:08:47 2008 -0700"
      },
      "message": "net_sched: Add size table for qdiscs\n\nAdd size table functions for qdiscs and calculate packet size in\nqdisc_enqueue().\n\nBased on patch by Patrick McHardy\n http://marc.info/?l\u003dlinux-netdev\u0026m\u003d115201979221729\u0026w\u003d2\n\nSigned-off-by: Jussi Kivilinna \u003cjussi.kivilinna@mbnet.fi\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "0abf77e55a2459aa9905be4b226e4729d5b4f0cb",
      "tree": "0224961150c0c2c65b5ad407b1af8cf84266e919",
      "parents": [
        "5f86173bdf15981ca49d0434f638b68f70a35644"
      ],
      "author": {
        "name": "Jussi Kivilinna",
        "email": "jussi.kivilinna@mbnet.fi",
        "time": "Sun Jul 20 00:08:27 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Jul 20 00:08:27 2008 -0700"
      },
      "message": "net_sched: Add accessor function for packet length for qdiscs\n\nSigned-off-by: Jussi Kivilinna \u003cjussi.kivilinna@mbnet.fi\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "5f86173bdf15981ca49d0434f638b68f70a35644",
      "tree": "e6792339e577ed4a8261358e56df9f1a2b87f655",
      "parents": [
        "db7a94d60f871ce6a52e97d82dea476cee0c4ea0"
      ],
      "author": {
        "name": "Jussi Kivilinna",
        "email": "jussi.kivilinna@mbnet.fi",
        "time": "Sun Jul 20 00:08:04 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Jul 20 00:08:04 2008 -0700"
      },
      "message": "net_sched: Add qdisc_enqueue wrapper\n\nSigned-off-by: Jussi Kivilinna \u003cjussi.kivilinna@mbnet.fi\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "a6ffb404dc03f806a257faaab831a6cb55c0b790",
      "tree": "d2d7de4af9dff7360e2737f36a4dd1cc37c983c9",
      "parents": [
        "230b183921ecbaa5fedc0d35ad6ba7bb64b6e06a"
      ],
      "author": {
        "name": "YOSHIFUJI Hideaki",
        "email": "yoshfuji@linux-ipv6.org",
        "time": "Sat Jul 19 22:36:07 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Jul 19 22:36:07 2008 -0700"
      },
      "message": "ipv6 mcast: Omit redundant address family checks in ip6_mc_source().\n\nThe caller has alredy checked for them.\n\nSigned-off-by: YOSHIFUJI Hideaki \u003cyoshfuji@linux-ipv6.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "230b183921ecbaa5fedc0d35ad6ba7bb64b6e06a",
      "tree": "2ea0a3bde5deab4b90ca9ed58e23b020494f25a0",
      "parents": [
        "53b7997fd5c62408d10b9aafb38974ce90fd2356"
      ],
      "author": {
        "name": "YOSHIFUJI Hideaki",
        "email": "yoshfuji@linux-ipv6.org",
        "time": "Sat Jul 19 22:35:47 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Jul 19 22:35:47 2008 -0700"
      },
      "message": "net: Use standard structures for generic socket address structures.\n\nUse sockaddr_storage{} for generic socket address storage\nand ensures proper alignment.\nUse sockaddr{} for pointers to omit several casts.\n\nSigned-off-by: YOSHIFUJI Hideaki \u003cyoshfuji@linux-ipv6.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "53b7997fd5c62408d10b9aafb38974ce90fd2356",
      "tree": "bc23e6ec248a6d999cdc779abdfdc843c5640197",
      "parents": [
        "721499e8931c5732202481ae24f2dfbf9910f129"
      ],
      "author": {
        "name": "YOSHIFUJI Hideaki",
        "email": "yoshfuji@linux-ipv6.org",
        "time": "Sat Jul 19 22:35:03 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Jul 19 22:35:03 2008 -0700"
      },
      "message": "ipv6 netns: Make several \"global\" sysctl variables namespace aware.\n\nSigned-off-by: YOSHIFUJI Hideaki \u003cyoshfuji@linux-ipv6.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "721499e8931c5732202481ae24f2dfbf9910f129",
      "tree": "c94d8d681966109bb41f712f21f3a9825ae2172d",
      "parents": [
        "407d819cf0fd54c6fc1138a509225696aecafd15"
      ],
      "author": {
        "name": "YOSHIFUJI Hideaki",
        "email": "yoshfuji@linux-ipv6.org",
        "time": "Sat Jul 19 22:34:43 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Jul 19 22:34:43 2008 -0700"
      },
      "message": "netns: Use net_eq() to compare net-namespaces for optimization.\n\nWithout CONFIG_NET_NS, namespace is always \u0026init_net.\nCompiler will be able to omit namespace comparisons with this patch.\n\nSigned-off-by: YOSHIFUJI Hideaki \u003cyoshfuji@linux-ipv6.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "407d819cf0fd54c6fc1138a509225696aecafd15",
      "tree": "b653a5c8c09f7c316f5f98947be262e27a4ca33a",
      "parents": [
        "7abbcd6a4c8d6179121f2915a761b1133bf1cd99",
        "b1235d79611e78a07629b4cbe53291c9cffd1834"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Jul 19 00:30:39 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Jul 19 00:30:39 2008 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/holtmann/bluetooth-2.6\n"
    },
    {
      "commit": "725a8ff04a5dc473cd9d8eb7817ca96fc36c7789",
      "tree": "bd632ddb3f0998217240b1e244307937020aa5bd",
      "parents": [
        "bdccc4ca13a639d759206c5b21ed73f8a813eaba"
      ],
      "author": {
        "name": "Denis V. Lunev",
        "email": "den@openvz.org",
        "time": "Sat Jul 19 00:28:58 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Jul 19 00:28:58 2008 -0700"
      },
      "message": "ipv6: remove unused parameter from ip6_ra_control\n\nSigned-off-by: Denis V. Lunev \u003cden@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "bdccc4ca13a639d759206c5b21ed73f8a813eaba",
      "tree": "fb7bcba6f33746566ae8204a08e068b7310a05d1",
      "parents": [
        "4389dded7767d24290463f2a8302ba3253ebdd56"
      ],
      "author": {
        "name": "Daniel Lezcano",
        "email": "dlezcano@fr.ibm.com",
        "time": "Sat Jul 19 00:15:13 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Jul 19 00:15:13 2008 -0700"
      },
      "message": "tcp: fix kernel panic with listening_get_next\n\n# BUG: unable to handle kernel NULL pointer dereference at\n0000000000000038\nIP: [\u003cffffffff821ed01e\u003e] listening_get_next+0x50/0x1b3\nPGD 11e4b9067 PUD 11d16c067 PMD 0\nOops: 0000 [1] SMP\nlast sysfs file: /sys/devices/system/cpu/cpu3/cache/index2/shared_cpu_map\nCPU 3\nModules linked in: bridge ipv6 button battery ac loop dm_mod tg3 ext3\njbd edd fan thermal processor thermal_sys hwmon sg sata_svw libata dock\nserverworks sd_mod scsi_mod ide_disk ide_core [last unloaded: freq_table]\nPid: 3368, comm: slpd Not tainted 2.6.26-rc2-mm1-lxc4 #1\nRIP: 0010:[\u003cffffffff821ed01e\u003e] [\u003cffffffff821ed01e\u003e]\nlistening_get_next+0x50/0x1b3\nRSP: 0018:ffff81011e1fbe18 EFLAGS: 00010246\nRAX: 0000000000000000 RBX: ffff8100be0ad3c0 RCX: ffff8100619f50c0\nRDX: ffffffff82475be0 RSI: ffff81011d9ae6c0 RDI: ffff8100be0ad508\nRBP: ffff81011f4f1240 R08: 00000000ffffffff R09: ffff8101185b6780\nR10: 000000000000002d R11: ffffffff820fdbfa R12: ffff8100be0ad3c8\nR13: ffff8100be0ad6a0 R14: ffff8100be0ad3c0 R15: ffffffff825b8ce0\nFS: 00007f6a0ebd16d0(0000) GS:ffff81011f424540(0000)\nknlGS:0000000000000000\nCS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b\nCR2: 0000000000000038 CR3: 000000011dc20000 CR4: 00000000000006e0\nDR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000\nDR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400\nProcess slpd (pid: 3368, threadinfo ffff81011e1fa000, task\nffff81011f4b8660)\nStack: 00000000000002ee ffff81011f5a57c0 ffff81011f4f1240\nffff81011e1fbe90\n0000000000001000 0000000000000000 00007fff16bf2590 ffffffff821ed9c8\nffff81011f5a57c0 ffff81011d9ae6c0 000000000000041a ffffffff820b0abd\nCall Trace:\n[\u003cffffffff821ed9c8\u003e] ? tcp_seq_next+0x34/0x7e\n[\u003cffffffff820b0abd\u003e] ? seq_read+0x1aa/0x29d\n[\u003cffffffff820d21b4\u003e] ? proc_reg_read+0x73/0x8e\n[\u003cffffffff8209769c\u003e] ? vfs_read+0xaa/0x152\n[\u003cffffffff82097a7d\u003e] ? sys_read+0x45/0x6e\n[\u003cffffffff8200bd2b\u003e] ? system_call_after_swapgs+0x7b/0x80\n\n\nCode: 31 a9 25 00 e9 b5 00 00 00 ff 45 20 83 7d 0c 01 75 79 4c 8b 75 10\n48 8b 0e eb 1d 48 8b 51 20 0f b7 45 08 39 02 75 0e 48 8b 41 28 \u003c4c\u003e 39\n78 38 0f 84 93 00 00 00 48 8b 09 48 85 c9 75 de 8b 55 1c\nRIP [\u003cffffffff821ed01e\u003e] listening_get_next+0x50/0x1b3\nRSP \u003cffff81011e1fbe18\u003e\nCR2: 0000000000000038\n\nThis kernel panic appears with CONFIG_NET_NS\u003dy.\n\nHow to reproduce ?\n\n    On the buggy host (host A)\n       * ip addr add 1.2.3.4/24 dev eth0\n\n    On a remote host (host B)\n       * ip addr add 1.2.3.5/24 dev eth0\n       * iptables -A INPUT -p tcp -s 1.2.3.4 -j DROP\n       * ssh 1.2.3.4\n\n    On host A:\n       * netstat -ta or cat /proc/net/tcp\n\nThis bug happens when reading /proc/net/tcp[6] when there is a req_sock\nat the SYN_RECV state.\n\nWhen a SYN is received the minisock is created and the sk field is set to\nNULL. In the listening_get_next function, we try to look at the field \nreq-\u003esk-\u003esk_net.\n\nWhen looking at how to fix this bug, I noticed that is useless to do\nthe check for the minisock belonging to the namespace. A minisock belongs\nto a listen point and this one is per namespace, so when browsing the\nminisock they are always per namespace.\n\nSigned-off-by: Daniel Lezcano \u003cdlezcano@fr.ibm.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "4389dded7767d24290463f2a8302ba3253ebdd56",
      "tree": "ed34a2084c47c6c707e0ce6b4eab8d442f20c4c3",
      "parents": [
        "33ad798c924b4a1afad3593f2796d465040aadd5"
      ],
      "author": {
        "name": "Adam Langley",
        "email": "agl@imperialviolet.org",
        "time": "Sat Jul 19 00:07:02 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Jul 19 00:07:02 2008 -0700"
      },
      "message": "tcp: Remove redundant checks when setting eff_sacks\n\nRemove redundant checks when setting eff_sacks and make the number of SACKs a\ncompile time constant. Now that the options code knows how many SACK blocks can\nfit in the header, we don\u0027t need to have the SACK code guessing at it.\n\nSigned-off-by: Adam Langley \u003cagl@imperialviolet.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "33ad798c924b4a1afad3593f2796d465040aadd5",
      "tree": "2a0a868849d6e84591b9d4d917722aee2544b77b",
      "parents": [
        "49a72dfb8814c2d65bd9f8c9c6daf6395a1ec58d"
      ],
      "author": {
        "name": "Adam Langley",
        "email": "agl@imperialviolet.org",
        "time": "Sat Jul 19 00:04:31 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Jul 19 00:04:31 2008 -0700"
      },
      "message": "tcp: options clean up\n\nThis should fix the following bugs:\n  * Connections with MD5 signatures produce invalid packets whenever SACK\n    options are included\n  * MD5 signatures are counted twice in the MSS calculations\n\nBehaviour changes:\n  * A SYN with MD5 + SACK + TS elicits a SYNACK with MD5 + SACK\n\n    This is because we can\u0027t fit any SACK blocks in a packet with MD5 + TS\n    options. There was discussion about disabling SACK rather than TS in\n    order to fit in better with old, buggy kernels, but that was deemed to\n    be unnecessary.\n\n  * SYNs with MD5 don\u0027t include a TS option\n\n    See above.\n\nAdditionally, it removes a bunch of duplicated logic for calculating options,\nwhich should help avoid these sort of issues in the future.\n\nSigned-off-by: Adam Langley \u003cagl@imperialviolet.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "49a72dfb8814c2d65bd9f8c9c6daf6395a1ec58d",
      "tree": "38804d609f21503573bbdd8bb9af38df99275ff5",
      "parents": [
        "845525a642c1c9e1335c33a274d4273906ee58eb"
      ],
      "author": {
        "name": "Adam Langley",
        "email": "agl@imperialviolet.org",
        "time": "Sat Jul 19 00:01:42 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Jul 19 00:01:42 2008 -0700"
      },
      "message": "tcp: Fix MD5 signatures for non-linear skbs\n\nCurrently, the MD5 code assumes that the SKBs are linear and, in the case\nthat they aren\u0027t, happily goes off and hashes off the end of the SKB and\ninto random memory.\n\nReported by Stephen Hemminger in [1]. Advice thanks to Stephen and Evgeniy\nPolyakov. Also includes a couple of missed route_caps from Stephen\u0027s patch\nin [2].\n\n[1] http://marc.info/?l\u003dlinux-netdev\u0026m\u003d121445989106145\u0026w\u003d2\n[2] http://marc.info/?l\u003dlinux-netdev\u0026m\u003d121459157816964\u0026w\u003d2\n\nSigned-off-by: Adam Langley \u003cagl@imperialviolet.org\u003e\nAcked-by: Stephen Hemminger \u003cshemminger@vyatta.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "845525a642c1c9e1335c33a274d4273906ee58eb",
      "tree": "e7eb7903dc8a763249d15d1ef02ece027bed2bc1",
      "parents": [
        "336d3262df71fcd2661180bb35d5ea41b4cbca58"
      ],
      "author": {
        "name": "Vlad Yasevich",
        "email": "vladislav.yasevich@hp.com",
        "time": "Fri Jul 18 23:08:21 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jul 18 23:08:21 2008 -0700"
      },
      "message": "sctp: Update sctp global memory limit allocations.\n\nUpdate sctp global memory limit allocations to be the same as TCP.\n\nSigned-off-by: Vlad Yasevich \u003cvladislav.yasevich@hp.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "336d3262df71fcd2661180bb35d5ea41b4cbca58",
      "tree": "54078334c9c3706a003d4b54a8e9e9b23aa01cef",
      "parents": [
        "4e54064e0a13b7a7d4a481123c1783f770538e30"
      ],
      "author": {
        "name": "Harvey Harrison",
        "email": "harvey.harrison@gmail.com",
        "time": "Fri Jul 18 23:07:09 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jul 18 23:07:09 2008 -0700"
      },
      "message": "sctp: remove unnecessary byteshifting, calculate directly in big-endian\n\nSigned-off-by: Harvey Harrison \u003charvey.harrison@gmail.com\u003e\nSigned-off-by: Vlad Yasevich \u003cvladislav.yasevich@hp.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "4e54064e0a13b7a7d4a481123c1783f770538e30",
      "tree": "ccd64b852003e7f3869cd24e78381fbba7bae764",
      "parents": [
        "23b29ed80bd7184398317a111dc488605cb66c7f"
      ],
      "author": {
        "name": "Vlad Yasevich",
        "email": "vladislav.yasevich@hp.com",
        "time": "Fri Jul 18 23:06:32 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jul 18 23:06:32 2008 -0700"
      },
      "message": "sctp: Allow only 1 listening socket with SO_REUSEADDR\n\nWhen multiple socket bind to the same port with SO_REUSEADDR,\nonly 1 can be listining.\n\nSigned-off-by: Vlad Yasevich \u003cvladislav.yasevich@hp.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "23b29ed80bd7184398317a111dc488605cb66c7f",
      "tree": "be2d87726f00ebb21d10fc62c2b4ba557a7392eb",
      "parents": [
        "7dab83de50c7b2b7ceac695a0b56fa6c0f95b0bc"
      ],
      "author": {
        "name": "Vlad Yasevich",
        "email": "vladislav.yasevich@hp.com",
        "time": "Fri Jul 18 23:06:07 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jul 18 23:06:07 2008 -0700"
      },
      "message": "sctp: Do not leak memory on multiple listen() calls\n\nSCTP permits multiple listen call and on subsequent calls\nwe leak he memory allocated for the crypto transforms.\n\nSigned-off-by: Vlad Yasevich \u003cvladislav.yasevich@hp.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "7dab83de50c7b2b7ceac695a0b56fa6c0f95b0bc",
      "tree": "979c6905f2ef643acccfea9ab9ed926e764e72c8",
      "parents": [
        "6d0ccbac688207ca0616ab5094932af4db4747b3"
      ],
      "author": {
        "name": "Vlad Yasevich",
        "email": "vladislav.yasevich@hp.com",
        "time": "Fri Jul 18 23:05:40 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jul 18 23:05:40 2008 -0700"
      },
      "message": "sctp: Support ipv6only AF_INET6 sockets.\n\nSigned-off-by: Vlad Yasevich \u003cvladislav.yasevich@hp.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "6d0ccbac688207ca0616ab5094932af4db4747b3",
      "tree": "477f783f1bf54756fcc39da953b327b413ceb257",
      "parents": [
        "c4e85f82edcd6027cfe67331a2e00741b009756b"
      ],
      "author": {
        "name": "Florian Westphal",
        "email": "fw@strlen.de",
        "time": "Fri Jul 18 23:04:39 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jul 18 23:04:39 2008 -0700"
      },
      "message": "sctp: Prevent uninitialized memory access\n\nvalgrind reports uninizialized memory accesses when running\nsctp inside the network simulation cradle simulator:\n\n Conditional jump or move depends on uninitialised value(s)\n    at 0x570E34A: sctp_assoc_sync_pmtu (associola.c:1324)\n    by 0x57427DA: sctp_packet_transmit (output.c:403)\n    by 0x5710EFF: sctp_outq_flush (outqueue.c:824)\n    by 0x5710B88: sctp_outq_uncork (outqueue.c:701)\n    by 0x5745262: sctp_cmd_interpreter (sm_sideeffect.c:1548)\n    by 0x57444B7: sctp_side_effects (sm_sideeffect.c:976)\n    by 0x5744460: sctp_do_sm (sm_sideeffect.c:945)\n    by 0x572157D: sctp_primitive_ASSOCIATE (primitive.c:94)\n    by 0x5725C04: __sctp_connect (socket.c:1094)\n    by 0x57297DC: sctp_connect (socket.c:3297)\n\n Conditional jump or move depends on uninitialised value(s)\n    at 0x575D3A5: mod_timer (timer.c:630)\n    by 0x5752B78: sctp_cmd_hb_timers_start (sm_sideeffect.c:555)\n    by 0x5754133: sctp_cmd_interpreter (sm_sideeffect.c:1448)\n    by 0x5753607: sctp_side_effects (sm_sideeffect.c:976)\n    by 0x57535B0: sctp_do_sm (sm_sideeffect.c:945)\n    by 0x571E9AE: sctp_endpoint_bh_rcv (endpointola.c:474)\n    by 0x573347F: sctp_inq_push (inqueue.c:104)\n    by 0x572EF93: sctp_rcv (input.c:256)\n    by 0x5689623: ip_local_deliver_finish (ip_input.c:230)\n    by 0x5689759: ip_local_deliver (ip_input.c:268)\n    by 0x5689CAC: ip_rcv_finish (dst.h:246)\n\n#1 is due to \"if (t-\u003epmtu_pending)\".\n8a4794914f9cf2681235ec2311e189fe307c28c7 \"[SCTP] Flag a pmtu change request\"\nsuggests it should be initialized to 0.\n\n#2 is the heartbeat timer \u0027expires\u0027 value, which is uninizialised, but\ntest by mod_timer().\nT3_rtx_timer seems to be affected by the same problem, so initialize it, too.\n\nSigned-off-by: Florian Westphal \u003cfw@strlen.de\u003e\nSigned-off-by: Vlad Yasevich \u003cvladislav.yasevich@hp.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "c4e85f82edcd6027cfe67331a2e00741b009756b",
      "tree": "12ac8ea4bb89dbb5671022361dd0c0b78f10ec87",
      "parents": [
        "c1e20f7c8b9ccbafc9ea78f2b406738728ce6b81"
      ],
      "author": {
        "name": "Florian Westphal",
        "email": "fw@strlen.de",
        "time": "Fri Jul 18 23:03:44 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jul 18 23:03:44 2008 -0700"
      },
      "message": "sctp: Don\u0027t abort initialization when CONFIG_PROC_FS\u003dn\n\nThis puts CONFIG_PROC_FS defines around the proc init/exit functions\nand also avoids compiling proc.c if procfs is not supported.\nAlso make SCTP_DBG_OBJCNT depend on procfs.\n\nSigned-off-by: Florian Westphal \u003cfw@strlen.de\u003e\nSigned-off-by: Vlad Yasevich \u003cvladislav.yasevich@hp.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "c1e20f7c8b9ccbafc9ea78f2b406738728ce6b81",
      "tree": "807dacbfdc6ebfde27ba4d4f46dd1572c4a07cde",
      "parents": [
        "30ee42be00b7a50929a73cb617f70b1d3219eb69"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Fri Jul 18 23:02:15 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jul 18 23:02:15 2008 -0700"
      },
      "message": "tcp: RTT metrics scaling\n\nSome of the metrics (RTT, RTTVAR and RTAX_RTO_MIN) are stored in\nkernel units (jiffies) and this leaks out through the netlink API to\nuser space where the units for jiffies are unknown.\n\nThis patches changes the kernel to convert to/from milliseconds. This\nchanges the ABI, but milliseconds seemed like the most natural unit\nfor these parameters.  Values available via syscall in\n/proc/net/rt_cache and netlink will be in milliseconds.\n\nSigned-off-by: Stephen Hemminger \u003cshemminger@vyatta.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "30ee42be00b7a50929a73cb617f70b1d3219eb69",
      "tree": "d2da673ab69eb897dd558be4df90a938f15afba8",
      "parents": [
        "3072367300aa8c779e3a14ee8e89de079e90f3ad"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jul 18 23:00:11 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jul 18 23:00:11 2008 -0700"
      },
      "message": "pkt_sched: Fix noqueue_qdisc initialization.\n\nLike noop_qdisc, it needs a dummy backpointer and\nexplicit qdisc-\u003eq.lock initialization.\n\nBased upon a report by Stephen Hemminger.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "3072367300aa8c779e3a14ee8e89de079e90f3ad",
      "tree": "7f74c5b8fdb300532fbbc83ba00d6d1d17af020e",
      "parents": [
        "72b25a913ed9b1ab49c7022adaf3f271a65ea219"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jul 18 22:50:15 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jul 18 22:50:15 2008 -0700"
      },
      "message": "pkt_sched: Manage qdisc list inside of root qdisc.\n\nIdea is from Patrick McHardy.\n\nInstead of managing the list of qdiscs on the device level, manage it\nin the root qdisc of a netdev_queue.  This solves all kinds of\nvisibility issues during qdisc destruction.\n\nThe way to iterate over all qdiscs of a netdev_queue is to visit\nthe netdev_queue-\u003eqdisc, and then traverse it\u0027s list.\n\nThe only special case is to ignore builting qdiscs at the root when\ndumping or doing a qdisc_lookup().  That was not needed previously\nbecause builtin qdiscs were not added to the device\u0027s qdisc_list.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "72b25a913ed9b1ab49c7022adaf3f271a65ea219",
      "tree": "89931a19264c79090ea3043d92f04e7727e37f1c",
      "parents": [
        "8913336a7e8d56e984109a3137d6c0e3362596a4"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jul 18 20:54:17 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jul 18 20:54:17 2008 -0700"
      },
      "message": "pkt_sched: Get rid of u32_list.\n\nThe u32_list is just an indirect way of maintaining a reference\nto a U32 node on a per-qdisc basis.\n\nJust add an explicit node pointer for u32 to struct Qdisc an do\naway with this global list.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "8913336a7e8d56e984109a3137d6c0e3362596a4",
      "tree": "16e2ad819112b59a759daff79651955e9bfab1dd",
      "parents": [
        "3ca4095f246c21c285d9e4be2ea4d3ee7fbacebd"
      ],
      "author": {
        "name": "Patrick McHardy",
        "email": "kaber@trash.net",
        "time": "Fri Jul 18 18:05:19 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jul 18 18:05:19 2008 -0700"
      },
      "message": "packet: add PACKET_RESERVE sockopt\n\nAdd new sockopt to reserve some headroom in the mmaped ring frames in\nfront of the packet payload. This can be used f.i. when the VLAN header\nneeds to be (re)constructed to avoid moving the entire payload.\n\nSigned-off-by: Patrick McHardy \u003ckaber@trash.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "65c011845316d3c1381f478ca0d8265c43b3b039",
      "tree": "a7e29e92a1ad0440ef5fe16dc16d73e8bf7983d2",
      "parents": [
        "bb2c018b09b681d43f5e08124b83e362647ea82b"
      ],
      "author": {
        "name": "Mike Travis",
        "email": "travis@sgi.com",
        "time": "Tue Jul 15 14:14:30 2008 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jul 18 22:02:57 2008 +0200"
      },
      "message": "cpumask: Replace cpumask_of_cpu with cpumask_of_cpu_ptr\n\n  * This patch replaces the dangerous lvalue version of cpumask_of_cpu\n    with new cpumask_of_cpu_ptr macros.  These are patterned after the\n    node_to_cpumask_ptr macros.\n\n    In general terms, if there is a cpumask_of_cpu_map[] then a pointer to\n    the cpumask_of_cpu_map[cpu] entry is used.  The cpumask_of_cpu_map\n    is provided when there is a large NR_CPUS count, reducing\n    greatly the amount of code generated and stack space used for\n    cpumask_of_cpu().  The pointer to the cpumask_t value is needed for\n    calling set_cpus_allowed_ptr() to reduce the amount of stack space\n    needed to pass the cpumask_t value.\n\n    If there isn\u0027t a cpumask_of_cpu_map[], then a temporary variable is\n    declared and filled in with value from cpumask_of_cpu(cpu) as well as\n    a pointer variable pointing to this temporary variable.  Afterwards,\n    the pointer is used to reference the cpumask value.  The compiler\n    will optimize out the extra dereference through the pointer as well\n    as the stack space used for the pointer, resulting in identical code.\n\n    A good example of the orthogonal usages is in net/sunrpc/svc.c:\n\n\tcase SVC_POOL_PERCPU:\n\t{\n\t\tunsigned int cpu \u003d m-\u003epool_to[pidx];\n\t\tcpumask_of_cpu_ptr(cpumask, cpu);\n\n\t\t*oldmask \u003d current-\u003ecpus_allowed;\n\t\tset_cpus_allowed_ptr(current, cpumask);\n\t\treturn 1;\n\t}\n\tcase SVC_POOL_PERNODE:\n\t{\n\t\tunsigned int node \u003d m-\u003epool_to[pidx];\n\t\tnode_to_cpumask_ptr(nodecpumask, node);\n\n\t\t*oldmask \u003d current-\u003ecpus_allowed;\n\t\tset_cpus_allowed_ptr(current, nodecpumask);\n\t\treturn 1;\n\t}\n\nSigned-off-by: Mike Travis \u003ctravis@sgi.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "bb2c018b09b681d43f5e08124b83e362647ea82b",
      "tree": "d794902c78f9fdd04ed88a4b8d451ed6f9292ec0",
      "parents": [
        "82638844d9a8581bbf33201cc209a14876eca167",
        "5b664cb235e97afbf34db9c4d77f08ebd725335e"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jul 18 22:00:54 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jul 18 22:00:54 2008 +0200"
      },
      "message": "Merge branch \u0027linus\u0027 into cpus4096\n\nConflicts:\n\n\tdrivers/acpi/processor_throttling.c\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "b6fcbdb4f283f7ba67cec3cda6be23da8e959031",
      "tree": "45d72a4a5d0cce9ab2c98321f4d7d122bf982a55",
      "parents": [
        "de05c557b24c7dffc6d392e3db120cf11c9f6ae7"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Fri Jul 18 04:07:44 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jul 18 04:07:44 2008 -0700"
      },
      "message": "proc: consolidate per-net single-release callers\n\nThey are symmetrical to single_open ones :)\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "de05c557b24c7dffc6d392e3db120cf11c9f6ae7",
      "tree": "d1d6fe1323657afd7d416c6af8a62d6a9e1e1e66",
      "parents": [
        "60bdde95807e982a824be9cfdd35055cc721a88a"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Fri Jul 18 04:07:21 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jul 18 04:07:21 2008 -0700"
      },
      "message": "proc: consolidate per-net single_open callers\n\nThere are already 7 of them - time to kill some duplicate code.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "60bdde95807e982a824be9cfdd35055cc721a88a",
      "tree": "286bd367b687f9a1daddcc6b0fde2f2e8ef4c0ef",
      "parents": [
        "8e3461d01bdbc3dbf993448ed9ad4acaaeb6495d"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Fri Jul 18 04:06:50 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jul 18 04:06:50 2008 -0700"
      },
      "message": "proc: clean the ip_misc_proc_init and ip_proc_init_net error paths\n\nAfter all this stuff is moved outside, this function can look better.\n\nBesides, I tuned the error path in ip_proc_init_net to make it have\nonly 2 exit points, not 3.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "8e3461d01bdbc3dbf993448ed9ad4acaaeb6495d",
      "tree": "eac7757ba4bc96ce1ce1ba629b5ea6d4b81f6b20",
      "parents": [
        "229bf0cbaa054f1502ab4ee219f05985d2c838d1"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Fri Jul 18 04:06:26 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jul 18 04:06:26 2008 -0700"
      },
      "message": "proc: show per-net ip_devconf.forwarding in /proc/net/snmp\n\nThis one has become per-net long ago, but the appropriate file\nis per-net only now.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "229bf0cbaa054f1502ab4ee219f05985d2c838d1",
      "tree": "7f542b1f5f3c249a66b7decd2ae22ae5067e97df",
      "parents": [
        "7b7a9dfdf6ccda647f54ea5fa3bd0ac17a189eeb"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Fri Jul 18 04:06:04 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jul 18 04:06:04 2008 -0700"
      },
      "message": "proc: create /proc/net/snmp file in each net\n\nAll the statistics shown in this file have been made per-net already.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "7b7a9dfdf6ccda647f54ea5fa3bd0ac17a189eeb",
      "tree": "92ab52ffab8bfdc1f3697ff8d02c12a06a43d76c",
      "parents": [
        "d89cbbb1e69a3bfea38038fb058bd51013902ef3"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Fri Jul 18 04:05:17 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jul 18 04:05:17 2008 -0700"
      },
      "message": "proc: create /proc/net/netstat file in each net\n\nNow all the shown in it statistics is netnsizated, time to\nshow it in appropriate net.\n\nThe appropriate net init/exit ops already exist - they make\nthe sockstat file per net - so just extend them.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "d89cbbb1e69a3bfea38038fb058bd51013902ef3",
      "tree": "fc6d3c47a7cd8f22dc6f6fd48daebbd07482e29d",
      "parents": [
        "923c6586b0dc0a00df07a1608185437145a0c68b"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Fri Jul 18 04:04:51 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jul 18 04:04:51 2008 -0700"
      },
      "message": "ipv4: clean the init_ipv4_mibs error paths\n\nAfter moving all the stuff outside this function it looks\na bit ugly - make it look better.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "923c6586b0dc0a00df07a1608185437145a0c68b",
      "tree": "bbe3324b4ae8920a3a50e81e596c75db11cc9433",
      "parents": [
        "b60538a0d737609213e4b758881913498d3ff0b4"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Fri Jul 18 04:04:22 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jul 18 04:04:22 2008 -0700"
      },
      "message": "mib: put icmpmsg statistics on struct net\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "b60538a0d737609213e4b758881913498d3ff0b4",
      "tree": "380b75c744b9eb13b56fe386b58ddc2106686372",
      "parents": [
        "386019d3514b3ed9de8d0b05b67e638a7048375b"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Fri Jul 18 04:04:02 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jul 18 04:04:02 2008 -0700"
      },
      "message": "mib: put icmp statistics on struct net\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "386019d3514b3ed9de8d0b05b67e638a7048375b",
      "tree": "6447cb5bfe73788abab98f4835b95af258bfeeff",
      "parents": [
        "2f275f91a438abd8eec5321798d66a4ffe6869fa"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Fri Jul 18 04:03:45 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jul 18 04:03:45 2008 -0700"
      },
      "message": "mib: put udplite statistics on struct net\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "2f275f91a438abd8eec5321798d66a4ffe6869fa",
      "tree": "a14cc8f7112d2ba0dfe08e43577cab779b858ba6",
      "parents": [
        "61a7e26028b94805fd686a6dc9dbd9941f8f19b0"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Fri Jul 18 04:03:27 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jul 18 04:03:27 2008 -0700"
      },
      "message": "mib: put udp statistics on struct net\n\nSimilar to... ouch, I repeat myself.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "61a7e26028b94805fd686a6dc9dbd9941f8f19b0",
      "tree": "2253a6f827a68ea5a7041456c5bfcac0d8e24138",
      "parents": [
        "a20f5799ca7ceb24d63c74b6fdad4b0c0ee91f4f"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Fri Jul 18 04:03:08 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jul 18 04:03:08 2008 -0700"
      },
      "message": "mib: put net statistics on struct net\n\nSimilar to ip and tcp ones :)\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "a20f5799ca7ceb24d63c74b6fdad4b0c0ee91f4f",
      "tree": "0262e4a674c611044d78c9f62f378473df0ce0f1",
      "parents": [
        "57ef42d59d1c1d79be59fc3c6380ae14234e38c3"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Fri Jul 18 04:02:42 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jul 18 04:02:42 2008 -0700"
      },
      "message": "mib: put ip statistics on struct net\n\nSimilar to tcp one.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "57ef42d59d1c1d79be59fc3c6380ae14234e38c3",
      "tree": "4ccc2166f6967ac1fb582715f7d7d5bb5c9205fc",
      "parents": [
        "9b4661bd6e5437508e0920608f3213c23212cd1b"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Fri Jul 18 04:02:08 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jul 18 04:02:08 2008 -0700"
      },
      "message": "mib: put tcp statistics on struct net\n\nProc temporary uses stats from init_net.\n\nBTW, TCP_XXX_STATS are beautiful (w/o do { } while (0) facing) again :)\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "9b4661bd6e5437508e0920608f3213c23212cd1b",
      "tree": "d8d13cd58c7ce32d63dd4175c67c42e61456dcda",
      "parents": [
        "852566f53ccdc9d1c149ffa28daa9778e13fa3da"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Fri Jul 18 04:01:44 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jul 18 04:01:44 2008 -0700"
      },
      "message": "ipv4: add pernet mib operations\n\nThese ones are currently empty, but stuff from init_ipv4_mibs will\nsequentially migrate there.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    }
  ],
  "next": "49997d75152b3d23c53b0fa730599f2f74c92c65"
}
