)]}'
{
  "log": [
    {
      "commit": "c8991362a0d3cf317dfbfb6cb946607870654e6d",
      "tree": "21db1072591e2549fedd6d54586efe3ef7f45cb4",
      "parents": [
        "f515e6b77045b4b1f54617d9fbf4a22b95a58757"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@parallels.com",
        "time": "Tue Jan 10 22:36:35 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jan 11 12:56:06 2012 -0800"
      },
      "message": "inet_diag: Rename inet_diag_req into inet_diag_req_v2\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@parallels.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "eb93992207dadb946a3b5cf4544957dc924a6f58",
      "tree": "8d840ea0e0e5eb3cf6207a2608d434475a9076b4",
      "parents": [
        "3db1cd5c05f35fb43eb134df6f321de4e63141f2"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Dec 19 14:08:01 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Dec 19 22:27:29 2011 -0500"
      },
      "message": "module_param: make bool parameters really bool (net \u0026 drivers/net)\n\nmodule_param(bool) used to counter-intuitively take an int.  In\nfddd5201 (mid-2009) we allowed bool or int/unsigned int using a messy\ntrick.\n\nIt\u0027s time to remove the int/unsigned int option.  For this version\nit\u0027ll simply give a warning, but it\u0027ll break next kernel version.\n\n(Thanks to Joe Perches for suggesting coccinelle for 0/1 -\u003e true/false).\n\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: netdev@vger.kernel.org\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "3db1cd5c05f35fb43eb134df6f321de4e63141f2",
      "tree": "960039f3f4f0a524b37e94434624da154859bc64",
      "parents": [
        "a8e510f682fe6d7671c11887e07c55f86caaf3c1"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Dec 19 13:56:45 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Dec 19 22:27:29 2011 -0500"
      },
      "message": "net: fix assignment of 0/1 to bool variables.\n\nDaveM said:\n   Please, this kind of stuff rots forever and not using bool properly\n   drives me crazy.\n\nJoe Perches \u003cjoe@perches.com\u003e gave me the spatch script:\n\n\t@@\n\tbool b;\n\t@@\n\t-b \u003d 0\n\t+b \u003d false\n\t@@\n\tbool b;\n\t@@\n\t-b \u003d 1\n\t+b \u003d true\n\nI merely installed coccinelle, read the documentation and took credit.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "aec8dc62f66199aef153d86e1f90d9c1d14696e3",
      "tree": "bdf927f62708cfa5b7a0561725ab76da8ac2ceb2",
      "parents": [
        "e7c466e58eb1ff9bf49c2f3902622dc11a8c7022"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@parallels.com",
        "time": "Thu Dec 15 02:43:27 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Dec 16 13:48:27 2011 -0500"
      },
      "message": "sock_diag: Fix module netlink aliases\n\nI\u0027ve made a mistake when fixing the sock_/inet_diag aliases :(\n\n1. The sock_diag layer should request the family-based alias,\n   not just the IPPROTO_IP one;\n2. The inet_diag layer should request for AF_INET+protocol alias,\n   not just the protocol one.\n\nThus fix this.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@parallels.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "dfd56b8b38fff3586f36232db58e1e9f7885a605",
      "tree": "64c7142ebf4625939f68bd3603f1d37bacb20a73",
      "parents": [
        "1ded132d4c3442aa3a619c94c245d7b5e0eb9731"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Sat Dec 10 09:48:31 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Dec 11 18:25:16 2011 -0500"
      },
      "message": "net: use IS_ENABLED(CONFIG_IPV6)\n\nInstead of testing defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "1942c518ca017f376b267a7c5e78c15d37202442",
      "tree": "9ead5443adf15f2264240c928ff2514349fdcade",
      "parents": [
        "3c4d05c8056724aff3abc20650807dd828fded54"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@parallels.com",
        "time": "Fri Dec 09 06:23:18 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Dec 09 14:14:08 2011 -0500"
      },
      "message": "inet_diag: Generalize inet_diag dump and get_exact calls\n\nIntroduce two callbacks in inet_diag_handler -- one for dumping all\nsockets (with filters) and the other one for dumping a single sk.\n\nReplace direct calls to icsk handlers with indirect calls to callbacks\nprovided by handlers.\n\nMake existing TCP and DCCP handlers use provided helpers for icsk-s.\n\nThe UDP diag module will provide its own.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@parallels.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "7b35eadd7eee2e0b42421ce3efbc30f1c3c745e5",
      "tree": "068ff7b5ba08d957978a63fedad6c2d86af48ed2",
      "parents": [
        "a73ed26bbae7327370c5bd298f07de78df9e3466"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@parallels.com",
        "time": "Fri Dec 09 06:21:16 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Dec 09 14:14:07 2011 -0500"
      },
      "message": "inet_diag: Remove indirect sizeof from inet diag handlers\n\nThere\u0027s an info_size value stored on inet_diag_handler, but for existing\ncode this value is effectively constant, so just use sizeof(struct tcp_info)\nwhere required.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@parallels.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "f13c95f0e255e6d21762259875295cc212e6bc32",
      "tree": "ad60d56913b6be75b8735632af675a47f996c76d",
      "parents": [
        "37f352b5e3e89337f7a9a3a90250b5dde3c5f40d"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@parallels.com",
        "time": "Tue Dec 06 08:05:24 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Dec 06 13:58:01 2011 -0500"
      },
      "message": "inet_diag: Switch from _GETSOCK to IPPROTO_ numbers\n\nSorry, but the vger didn\u0027t let this message go to the list. Re-sending it with\nless spam-filter-prone subject.\n\nWhen dumping the AF_INET/AF_INET6 sockets user will also specify the protocol,\nso prepare the protocol diag handlers to work with IPPROTO_ constants.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@parallels.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "7f1fb60c4fc9fb29fbb406ac8c4cfb4e59e168d6",
      "tree": "c099fd6899f382c439e29aed54c912ee95453324",
      "parents": [
        "d5f43c1ea4260807a894150b680fa0a0dd386259"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@parallels.com",
        "time": "Tue Dec 06 07:56:43 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Dec 06 13:57:36 2011 -0500"
      },
      "message": "inet_diag: Partly rename inet_ to sock_\n\nThe ultimate goal is to get the sock_diag module, that works in\nfamily+protocol terms. Currently this is suitable to do on the\ninet_diag basis, so rename parts of the code. It will be moved\nto sock_diag.c later.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@parallels.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "d984e6197ecd2babc1537f42dc1e676133005cda",
      "tree": "59bebd70ee13d33a7ffbedef060fead93ee6576a",
      "parents": [
        "65698610f58153eb7621be3fb4f57ca318b19c60"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Dec 01 14:45:49 2011 -0500"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Dec 01 14:45:49 2011 -0500"
      },
      "message": "dccp: Fix compile warning in probe code.\n\nCommit 1386be55e32a3c5d8ef4a2b243c530a7b664c02c (\"dccp: fix\nauto-loading of dccp(_probe)\") fixed a bug but created a new\ncompiler warning:\n\nnet/dccp/probe.c: In function ‘dccpprobe_init’:\nnet/dccp/probe.c:166:2: warning: the omitted middle operand in ?: will always be ‘true’, suggest explicit middle operand [-Wparentheses]\n\ntry_then_request_module() is built for situations where the\n\"existence\" test is some lookup function that returns a non-NULL\nobject on success, and with a reference count of some kind held.\n\nHere we\u0027re looking for a success return of zero from the jprobe\nregistry.\n\nInstead of fighting the way try_then_request_module() works, simply\nopen code what we want to happen in a local helper function.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "898f73585bbe4bdbb471636ecdede071f7473e51",
      "tree": "73a587dbc21e397737984808bfa9c8594f06210d",
      "parents": [
        "fa17a019c87e2ed25b653844f668f111ee059e56"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Dec 01 13:28:34 2011 -0500"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Dec 01 13:28:34 2011 -0500"
      },
      "message": "dccp: Evaluate ip_hdr() only once in dccp_v4_route_skb().\n\nThis also works around a bogus gcc warning generated by an\nupcoming patch from Eric Dumazet that rearranges the layout\nof struct flowi4.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "6dec4ac4ee1ad894dc0e9647cd3e180f93fc353c",
      "tree": "cd71e597bbbe677820bb229c6aedbad412758959",
      "parents": [
        "d6f03f29f7cdf064289f941bf0b838348e996e65",
        "fc0b927d9a5024e138c4318fe19a590f23e3eeec"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Nov 26 14:47:03 2011 -0500"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Nov 26 14:47:03 2011 -0500"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net\n\nConflicts:\n\tnet/ipv4/inet_diag.c\n"
    },
    {
      "commit": "4e3fd7a06dc20b2d8ec6892233ad2012968fe7b6",
      "tree": "da3fbec7672ac6b967dfa31cec6c88f468a57fa2",
      "parents": [
        "40ba84993d66469d336099c5af74c3da5b73e28d"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon Nov 21 03:39:03 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Nov 22 16:43:32 2011 -0500"
      },
      "message": "net: remove ipv6_addr_copy()\n\nC assignment can handle struct in6_addr copying.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "525c6465d449cdec04b3c91733e46027a4d08422",
      "tree": "b91bab2701121e6f9a180c9365e57a91bf3271ea",
      "parents": [
        "fbe54e3b7a7ad7de92b65e8b10fae300eeec6ef3"
      ],
      "author": {
        "name": "RongQing.Li",
        "email": "roy.qing.li@gmail.com",
        "time": "Mon Nov 21 16:45:26 2011 -0500"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Nov 21 16:45:26 2011 -0500"
      },
      "message": "dccp: fix error propagation in dccp_v4_connect\n\nThe errcode is not updated when ip_route_newports() fails.\n\nSigned-off-by: RongQing.Li \u003croy.qing.li@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "e56c57d0d3fdbbdf583d3af96bfb803b8dfa713e",
      "tree": "f415160c8fd39efebfc49d41493cc5b964503482",
      "parents": [
        "9ecd04bc04af7df98b3a93c571e31b6ef6a90681"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Tue Nov 08 17:07:07 2011 -0500"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Nov 08 17:07:07 2011 -0500"
      },
      "message": "net: rename sk_clone to sk_clone_lock\n\nMake clear that sk_clone() and inet_csk_clone() return a locked socket.\n\nAdd _lock() prefix and kerneldoc.\n\nSuggested-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "32aaeffbd4a7457bf2f7448b33b5946ff2a960eb",
      "tree": "faf7ad871d87176423ff9ed1d1ba4d9c688fc23f",
      "parents": [
        "208bca0860406d16398145ddd950036a737c3c9d",
        "67b84999b1a8b1af5625b1eabe92146c5eb42932"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Nov 06 19:44:47 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Nov 06 19:44:47 2011 -0800"
      },
      "message": "Merge branch \u0027modsplit-Oct31_2011\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux\n\n* \u0027modsplit-Oct31_2011\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux: (230 commits)\n  Revert \"tracing: Include module.h in define_trace.h\"\n  irq: don\u0027t put module.h into irq.h for tracking irqgen modules.\n  bluetooth: macroize two small inlines to avoid module.h\n  ip_vs.h: fix implicit use of module_get/module_put from module.h\n  nf_conntrack.h: fix up fallout from implicit moduleparam.h presence\n  include: replace linux/module.h with \"struct module\" wherever possible\n  include: convert various register fcns to macros to avoid include chaining\n  crypto.h: remove unused crypto_tfm_alg_modname() inline\n  uwb.h: fix implicit use of asm/page.h for PAGE_SIZE\n  pm_runtime.h: explicitly requires notifier.h\n  linux/dmaengine.h: fix implicit use of bitmap.h and asm/page.h\n  miscdevice.h: fix up implicit use of lists and types\n  stop_machine.h: fix implicit use of smp.h for smp_processor_id\n  of: fix implicit use of errno.h in include/linux/of.h\n  of_platform.h: delete needless include \u003clinux/module.h\u003e\n  acpi: remove module.h include from platform/aclinux.h\n  miscdevice.h: delete unnecessary inclusion of module.h\n  device_cgroup.h: delete needless include \u003clinux/module.h\u003e\n  net: sch_generic remove redundant use of \u003clinux/module.h\u003e\n  net: inet_timewait_sock doesnt need \u003clinux/module.h\u003e\n  ...\n\nFix up trivial conflicts (other header files, and  removal of the ab3550 mfd driver) in\n - drivers/media/dvb/frontends/dibx000_common.c\n - drivers/media/video/{mt9m111.c,ov6650.c}\n - drivers/mfd/ab3550-core.c\n - include/linux/dmaengine.h\n"
    },
    {
      "commit": "918eb39962dfff9490a43cd08176b962cacc7978",
      "tree": "53275f3622cf13f57296481a556c47dd5d92f16f",
      "parents": [
        "e2e210c0238eb7073e07af503ae743fa53977120"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Wed Nov 02 12:42:56 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Nov 03 18:06:18 2011 -0400"
      },
      "message": "net: add missing bh_unlock_sock() calls\n\nSimon Kirby reported lockdep warnings and following messages :\n\n[104661.897577] huh, entered softirq 3 NET_RX ffffffff81613740\npreempt_count 00000101, exited with 00000102?\n\n[104661.923653] huh, entered softirq 3 NET_RX ffffffff81613740\npreempt_count 00000101, exited with 00000102?\n\nProblem comes from commit 0e734419\n(ipv4: Use inet_csk_route_child_sock() in DCCP and TCP.)\n\nIf inet_csk_route_child_sock() returns NULL, we should release socket\nlock before freeing it.\n\nAnother lock imbalance exists if __inet_inherit_port() returns an error\nsince commit 093d282321da ( tproxy: fix hash locking issue when using\nport redirection in __inet_inherit_port()) a backport is also needed for\n\u003e\u003d 2.6.37 kernels.\n\nReported-by: Simon Kirby \u003csim@hostway.ca\u003e\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nTested-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nCC: Balazs Scheidler \u003cbazsi@balabit.hu\u003e\nCC: KOVACS Krisztian \u003chidden@balabit.hu\u003e\nReviewed-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nTested-by: Simon Kirby \u003csim@hostway.ca\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "bc3b2d7fb9b014d75ebb79ba371a763dbab5e8cf",
      "tree": "b0fd4e724bdb1c0a1783616614ae5a9dec1cfa5c",
      "parents": [
        "d9b9384215e17c68d7b6bd05d6fa409e5d4140d7"
      ],
      "author": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Fri Jul 15 11:47:34 2011 -0400"
      },
      "committer": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Mon Oct 31 19:30:30 2011 -0400"
      },
      "message": "net: Add export.h for EXPORT_SYMBOL/THIS_MODULE to non-modules\n\nThese files are non modular, but need to export symbols using\nthe macros now living in export.h -- call out the include so\nthat things won\u0027t break when we remove the implicit presence\nof module.h from everywhere.\n\nSigned-off-by: Paul Gortmaker \u003cpaul.gortmaker@windriver.com\u003e\n"
    },
    {
      "commit": "d9b9384215e17c68d7b6bd05d6fa409e5d4140d7",
      "tree": "c6c05f056a623e7e7630bc76be7637e1b8454c86",
      "parents": [
        "3a9a231d977222eea36eae091df2c358e03ac839"
      ],
      "author": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Sun Sep 18 13:21:27 2011 -0400"
      },
      "committer": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Mon Oct 31 19:30:29 2011 -0400"
      },
      "message": "net: add moduleparam.h for users of module_param/MODULE_PARM_DESC\n\nThese files were getting access to these two via the implicit\npresence of module.h everywhere.  They aren\u0027t modules, so they\ndon\u0027t need the full module.h inclusion though.\n\nSigned-off-by: Paul Gortmaker \u003cpaul.gortmaker@windriver.com\u003e\n"
    },
    {
      "commit": "b903d324bee2627036d024dceed73b3c96558795",
      "tree": "976d7f5ff6d765faca2e1af86cbcddc9257470ab",
      "parents": [
        "138c4ae9cfda8fdcf9e137457853b09ef8cf8f77"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Thu Oct 27 00:44:35 2011 -0400"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Oct 27 00:44:35 2011 -0400"
      },
      "message": "ipv6: tcp: fix TCLASS value in ACK messages sent from TIME_WAIT\n\ncommit 66b13d99d96a (ipv4: tcp: fix TOS value in ACK messages sent from\nTIME_WAIT) fixed IPv4 only.\n\nThis part is for the IPv6 side, adding a tclass param to ip6_xmit()\n\nWe alias tw_tclass and tw_tos, if socket family is INET6.\n\n[ if sockets is ipv4-mapped, only IP_TOS socket option is used to fill\nTOS field, TCLASS is not taken into account ]\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "19fd61785a580c60cba900c5171bfadb57dd5056",
      "tree": "1e491fb014be0dc03f4b6755bb94e73afd38c455",
      "parents": [
        "57569d0e12eaf31717e295960cd2a26f626c8e5b",
        "8028837d71ba9904b17281b40f94b93e947fbe38"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Aug 07 23:20:26 2011 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Aug 07 23:20:26 2011 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net\n"
    },
    {
      "commit": "6e5714eaf77d79ae1c8b47e3e040ff5411b717ec",
      "tree": "30bd0d7a6a0a6ff0ace6da1835ae7b7167cce5e4",
      "parents": [
        "bc0b96b54a21246e377122d54569eef71cec535f"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Aug 03 20:50:44 2011 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Aug 06 18:33:19 2011 -0700"
      },
      "message": "net: Compute protocol sequence numbers and fragment IDs using MD5.\n\nComputers have become a lot faster since we compromised on the\npartial MD4 hash which we use currently for performance reasons.\n\nMD5 is a much safer choice, and is inline with both RFC1948 and\nother ISS generators (OpenBSD, Solaris, etc.)\n\nFurthermore, only having 24-bits of the sequence number be truly\nunpredictable is a very serious limitation.  So the periodic\nregeneration and 8-bit counter have been removed.  We compute and\nuse a full 32-bit sequence number.\n\nFor ipv6, DCCP was found to use a 32-bit truncated initial sequence\nnumber (it needs 43-bits) and that is fixed here as well.\n\nReported-by: Dan Kaminsky \u003cdan@doxpara.com\u003e\nTested-by: Willy Tarreau \u003cw@1wt.eu\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "d96a9e8dd04cf5ab2782ca6192e395c5ca373f7d",
      "tree": "2dbda401acc0150346b2ce46ff0fe83a2af17299",
      "parents": [
        "0ce95dc792549e0cf704e74aa8acb15a401f8cca"
      ],
      "author": {
        "name": "Samuel Jero",
        "email": "sj323707@ohio.edu",
        "time": "Sun Jul 24 20:57:49 2011 -0600"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Mon Aug 01 07:52:36 2011 -0600"
      },
      "message": "dccp ccid-2: check Ack Ratio when reducing cwnd\n\nThis patch causes CCID-2 to check the Ack Ratio after reducing the congestion\nwindow. If the Ack Ratio is greater than the congestion window, it is\nreduced. This prevents timeouts caused by an Ack Ratio larger than the\ncongestion window.\n\nIn this situation, we choose to set the Ack Ratio to half the congestion window\n(or one if that\u0027s zero) so that if we loose one ack we don\u0027t trigger a timeout.\n\nSigned-off-by: Samuel Jero \u003csj323707@ohio.edu\u003e \nAcked-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "0ce95dc792549e0cf704e74aa8acb15a401f8cca",
      "tree": "77a4b71b1de4e985e5ac8b711c8bca980195235f",
      "parents": [
        "d346d886a4c7f771c184e73833133f23a18de884"
      ],
      "author": {
        "name": "Samuel Jero",
        "email": "sj323707@ohio.edu",
        "time": "Sun Jul 24 21:05:16 2011 -0600"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Mon Aug 01 07:52:36 2011 -0600"
      },
      "message": "dccp ccid-2: increment cwnd correctly\n\nThis patch fixes an issue where CCID-2 will not increase the congestion\nwindow for numerous RTTs after an idle period, application-limited period,\nor a loss once the algorithm is in Congestion Avoidance.\n\nWhat happens is that, when CCID-2 is in Congestion Avoidance mode, it will\nincrease hc-\u003etx_packets_acked by one for every packet and will increment cwnd\nevery cwnd packets. However, if there is now an idle period in the connection,\ncwnd will be reduced, possibly below the slow start threshold. This will\ncause the connection to go into Slow Start. However, in Slow Start CCID-2\nperforms this test to increment cwnd every second ack:\n\n\t++hc-\u003etx_packets_acked \u003d\u003d 2\n\nUnfortunately, this will be incorrect, if cwnd previous to the idle period\nwas larger than 2 and if tx_packets_acked was close to cwnd. For example:\n\tcwnd\u003d50  and  tx_packets_acked\u003d45.\n\nIn this case, the current code, will increment tx_packets_acked until it\nequals two, which will only be once tx_packets_acked (an unsigned 32-bit\ninteger) overflows.\n\nMy fix is simply to change that test for tx_packets_acked greater than or\nequal to two in slow start.\n\nSigned-off-by: Samuel Jero \u003csj323707@ohio.edu\u003e\nAcked-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "d346d886a4c7f771c184e73833133f23a18de884",
      "tree": "b30d5ea65d37af5dd49f03712ae2f973bc71553b",
      "parents": [
        "31daf0393fbb17cf6efe613fb538a3ea4b5202e4"
      ],
      "author": {
        "name": "Samuel Jero",
        "email": "sj323707@ohio.edu",
        "time": "Sun Jul 24 20:49:19 2011 -0600"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Mon Aug 01 07:52:35 2011 -0600"
      },
      "message": "dccp ccid-2: prevent cwnd \u003e Sequence Window\n\nAdd a check to prevent CCID-2 from increasing the cwnd greater than the\nSequence Window.\n\nWhen the congestion window becomes bigger than the Sequence Window, CCID-2\nwill attempt to keep more data in the network than the DCCP Sequence Window\ncode considers possible. This results in the Sequence Window code issuing\na Sync, thereby inducing needless overhead. Further, if this occurs at the\nsender, CCID-2 will never detect the problem because the Acks it receives\nwill indicate no losses. I have seen this cause a drop of 1/3rd in throughput\nfor a connection.\n\nAlso add code to adjust the Sequence Window to be about 5 times the number of\npackets in the network (RFC 4340, 7.5.2) and to adjust the Ack Ratio so that\nthe remote Sequence Window will hold about 5 times the number of packets in\nthe network. This allows the congestion window to increase correctly without\nbeing limited by the Sequence Window.\n\nSigned-off-by: Samuel Jero \u003csj323707@ohio.edu\u003e\nAcked-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "31daf0393fbb17cf6efe613fb538a3ea4b5202e4",
      "tree": "1b6cca8e816283593ee6965198014f997fc91b11",
      "parents": [
        "a6444f4237af6c9981ddd45ab35a5c06d4e5a4d8"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Sun Jul 24 21:18:25 2011 -0600"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Mon Aug 01 07:52:35 2011 -0600"
      },
      "message": "dccp ccid-2: use feature-negotiation to report Ack Ratio changes\n\nThis uses the new feature-negotiation framework to signal Ack Ratio changes,\nas required by RFC 4341, sec. 6.1.2.\n\nThat raises some problems with CCID-2, which at the moment can not cope\ngracefully with Ack Ratios \u003e 1. Since these issues are not directly related\nto feature negotiation, they are marked by a FIXME.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nSigned-off-by: Samuel Jero \u003csj323707@ohio.edu\u003e\nAcked-by: Ian McDonald \u003cian.mcdonald@jandi.co.uk\u003e\n"
    },
    {
      "commit": "a6444f4237af6c9981ddd45ab35a5c06d4e5a4d8",
      "tree": "a9d6ceb601854d6a7cd23543ba4ef0fc7ab4c8a6",
      "parents": [
        "44e6fd9e67c1043aaeed381c10b74e73807b7f26"
      ],
      "author": {
        "name": "Samuel Jero",
        "email": "sj323707@ohio.edu",
        "time": "Sun Jul 24 21:06:37 2011 -0600"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Mon Aug 01 07:52:35 2011 -0600"
      },
      "message": "dccp: send Confirm options only once\n\nIf a connection is in the OPEN state, remove feature negotiation Confirm\noptions from the list of options after sending them once; as such options\nare NOT supposed to be retransmitted and are ONLY supposed to be sent in\nresponse to a Change option (RFC 4340 6.2).\n\nSigned-off-by: Samuel Jero \u003csj323707@ohio.edu\u003e\nAcked-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "44e6fd9e67c1043aaeed381c10b74e73807b7f26",
      "tree": "a49baef6849d68cb7775eee77a51f435fd20dc32",
      "parents": [
        "d6916f87ca5e566786f1a935a7cabba54774bbda"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Sun Jul 24 20:27:59 2011 -0600"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Mon Aug 01 07:52:34 2011 -0600"
      },
      "message": "dccp: support for exchanging of NN options in established state 2/2\n\nThis patch adds the receiver side and the (fast-path) activation part for\ndynamic changes of non-negotiable (NN) parameters in (PART)OPEN state.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nSigned-off-by: Samuel Jero \u003csj323707@ohio.edu\u003e\nAcked-by: Ian McDonald \u003cian.mcdonald@jandi.co.uk\u003e\n"
    },
    {
      "commit": "d6916f87ca5e566786f1a935a7cabba54774bbda",
      "tree": "5420a242fe5f7aacf08e941a96cff8b173eec9aa",
      "parents": [
        "3da3f872aa175f59e20766ed30aaea67fd4fa7d1"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Sun Jul 24 20:22:29 2011 -0600"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Mon Aug 01 07:52:34 2011 -0600"
      },
      "message": "dccp: support for the exchange of NN options in established state 1/2\n\nIn contrast to static feature negotiation at the begin of a connection, this\npatch introduces support for exchange of dynamically changing options.\n\nSuch an update/exchange is necessary in at least two cases:\n * CCID-2\u0027s Ack Ratio (RFC 4341, 6.1.2) which changes during the connection;\n * Sequence Window values that, as per RFC 4340, 7.5.2, should be sent \"as\n   the connection progresses\".\n\nBoth are non-negotiable (NN) features, which means that no new capabilities\nare negotiated, but rather that changes in known parameters are brought\nup-to-date at either end.\n\nThse characteristics are reflected by the implementation:\n * only NN options can be exchanged after connection setup;\n * an ack is scheduled directly after activation to speed up the update;\n * CCIDs may request changes to an NN feature even if a negotiation for that\n   feature is already underway: this is required by CCID-2, where changes in\n   cwnd necessitate Ack Ratio changes, such that the previous Ack Ratio (which\n   is still being negotiated) would cause irrecoverable RTO timeouts (thanks\n   to work by Samuel Jero).\t   \n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nSigned-off-by: Samuel Jero \u003csj323707@ohio.edu\u003e\nAcked-by: Ian McDonald \u003cian.mcdonald@jandi.co.uk\u003e\n"
    },
    {
      "commit": "113ced1f52e5ed2dfedc0771a1b11b536cde8168",
      "tree": "513df4ef1ad8b8530e12329f8f02c89140860b36",
      "parents": [
        "58fdea0f3170c13a3b875ef904d5b67cf73814be"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Sun Jul 03 09:55:03 2011 -0600"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Mon Jul 04 12:37:49 2011 -0600"
      },
      "message": "dccp ccid-2: Perform congestion-window validation\n\nCCID-2\u0027s cwnd increases like TCP during slow-start, which has implications for\n * the local Sequence Window value (should be \u003e cwnd),\n * the Ack Ratio value.\nHence an exponential growth, if it does not reflect the actual network\nconditions, can quickly lead to instability.\n\nThis patch adds congestion-window validation (RFC2861) to CCID-2:\n * cwnd is constrained if the sender is application limited;\n * cwnd is reduced after a long idle period, as suggested in the \u002790 paper\n   by Van Jacobson, in RFC 2581 (sec. 4.1);\n * cwnd is never reduced below the RFC 3390 initial window.\n\nAs marked in the comments, the code is actually almost a direct copy of the\nTCP congestion-window-validation algorithms. By continuing this work, it may\nin future be possible to use the TCP code (not possible at the moment).\n\nThe mechanism can be turned off using a module parameter. Sampling of the\ncurrently-used window (moving-maximum) is however done constantly; this is\nused to determine the expected window, which can be exploited to regulate\nDCCP\u0027s Sequence Window value.\n\nThis patch also sets slow-start-after-idle (RFC 4341, 5.1), i.e. it behaves like\nTCP when net.ipv4.tcp_slow_start_after_idle \u003d 1.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "58fdea0f3170c13a3b875ef904d5b67cf73814be",
      "tree": "9cdaa4c22734531b21479dc594dadf6ffbcd36d4",
      "parents": [
        "b4d5f4b2884625d13c7ef5b9fd085ec93bbf545c"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Sun Jul 03 09:53:12 2011 -0600"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Mon Jul 04 12:37:40 2011 -0600"
      },
      "message": "dccp ccid-2: Use existing function to test for data packets\n\nThis replaces a switch statement with a test, using the equivalent\nfunction dccp_data_packet(skb).  It also doubles the range of the field\n`rx_num_data_pkts\u0027 by changing the type from `int\u0027 to `u32\u0027, avoiding\nsigned/unsigned comparison with the u16 field `dccps_r_ack_ratio\u0027.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "b4d5f4b2884625d13c7ef5b9fd085ec93bbf545c",
      "tree": "6034da8babcad421dc2dc44d124a5730d3d8d329",
      "parents": [
        "1fd9d2081a9d8d77e5afccd5aafd28310cab3bfc"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Sun Jul 03 09:04:18 2011 -0600"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Mon Jul 04 12:37:30 2011 -0600"
      },
      "message": "dccp ccid-2: move rfc 3390 function into header file\n\nThis moves CCID-2\u0027s initial window function into the header file, since several\nparts throughout the CCID-2 code need to call it (CCID-2 still uses RFC 3390).\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nAcked-by: Leandro Melo de Sales \u003cleandro@ic.ufal.br\u003e\n"
    },
    {
      "commit": "1fd9d2081a9d8d77e5afccd5aafd28310cab3bfc",
      "tree": "756b816c0db44a0e6eb0e2f3183248c103044d56",
      "parents": [
        "8695e80193fed35f27c06f462bd5b76132fd5697"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Sun Jul 03 09:51:14 2011 -0600"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Mon Jul 04 12:37:13 2011 -0600"
      },
      "message": "dccp: cosmetics of info message\n\nChange the CCID (de)activation message to start with the\nprotocol name, as \u0027CCID\u0027 is already in there.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "8695e80193fed35f27c06f462bd5b76132fd5697",
      "tree": "07098d9f6996c188fb9e05e93a76627e06666796",
      "parents": [
        "c0c2015056d7bd69f3554208271407e7e2ee69e5"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Sun Jul 03 09:51:29 2011 -0600"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Mon Jul 04 12:36:47 2011 -0600"
      },
      "message": "dccp: combine the functionality of enqeueing and cloning\n\nRealising the following call pattern,\n * first dccp_entail() is called to enqueue a new skb and\n * then skb_clone() is called to transmit a clone of that skb,\nthis patch integrates both into the same function.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "c0c2015056d7bd69f3554208271407e7e2ee69e5",
      "tree": "8144a35fcb508fe6e9a24442ceb013ad9dda2bad",
      "parents": [
        "31fcb99d9958bdf04e84224e202f69e6cdac893b"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Sun Jul 03 09:49:16 2011 -0600"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Mon Jul 04 12:36:33 2011 -0600"
      },
      "message": "dccp: Clean up slow-path input processing\n\nThis patch rearranges the order of statements of the slow-path input processing\n(i.e. any other state than OPEN), to resolve the following issues.\n\n 1. Dependencies: the order of statements now better matches RFC 4340, 8.5, i.e.\n    step 7 is before step 9 (previously 9 was before 7), and parsing options in\n    step 8 (which may consume resources) now comes after step 7.\n 2. Sequence number checks are omitted if in state LISTEN/REQUEST, due to the\n    note underneath the table in RFC 4340, 7.5.3.\n    As a result, CCID processing is now indeed confined to OPEN/PARTOPEN states,\n    i.e. congestion control is performed only on the flow of data packets. This\n    avoids pathological cases of doing congestion control on those messages\n    which set up and terminate the connection.\n 3. Packets are now passed on to Ack Vector / CCID processing only after\n    - step 7  (receive unexpected packets),\n    - step 9  (receive Reset),\n    - step 13 (receive CloseReq),\n    - step 14 (receive Close)\n    and only if the state is PARTOPEN. This simplifies CCID processing:\n    - in LISTEN/CLOSED the CCIDs are non-existent;\n    - in RESPOND/REQUEST the CCIDs have not yet been negotiated;\n    - in CLOSEREQ and active-CLOSING the node has already closed this socket;\n    - in passive-CLOSING the client is waiting for its Reset.\n    In the last case, RFC 4340, 8.3 leaves it open to ignore further incoming\n    data, which is the approach taken here.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "6bd023f3dddfc7c5f660089598c10e1f4167083b",
      "tree": "925a7a31d3db434cfda8679cb46e466697ef8bdd",
      "parents": [
        "6882f933ccee5c3a86443ffc7621ce888b93ab6b"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed May 18 18:32:03 2011 -0400"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed May 18 18:32:03 2011 -0400"
      },
      "message": "ipv4: Make caller provide flowi4 key to inet_csk_route_req().\n\nThis way the caller can get at the fully resolved fl4-\u003e{daddr,saddr}\netc.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "3c709f8fb43e07a0403bba4a8ca7ba00ab874994",
      "tree": "9efc1e2bf6930851f0224f525b6cde0f5297fa61",
      "parents": [
        "0074820978004cc484b132d7a9ce0df414660d9d",
        "9bbc052d5e63512b0ce4e201ea97e12fba9fda82"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed May 11 14:26:15 2011 -0400"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed May 11 14:26:58 2011 -0400"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-3.6\n\nConflicts:\n\tdrivers/net/benet/be_main.c\n"
    },
    {
      "commit": "d9d8da805dcb503ef8ee49918a94d49085060f23",
      "tree": "ede7d2af74c2982eb24430079aea63c05a3420e9",
      "parents": [
        "0e734419923bd8e599858f8fc196c7804bb85564"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri May 06 22:23:20 2011 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun May 08 15:28:28 2011 -0700"
      },
      "message": "inet: Pass flowi to -\u003equeue_xmit().\n\nThis allows us to acquire the exact route keying information from the\nprotocol, however that might be managed.\n\nIt handles all of the possibilities, from the simplest case of storing\nthe key in inet-\u003ecork.fl to the more complex setup SCTP has where\nindividual transports determine the flow.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "0e734419923bd8e599858f8fc196c7804bb85564",
      "tree": "5e8dfaeb84c610a1c4086ed88c26b73e4ba87197",
      "parents": [
        "77357a95522ba645bbfd65253b34317c824103f9"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun May 08 15:28:03 2011 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun May 08 15:28:03 2011 -0700"
      },
      "message": "ipv4: Use inet_csk_route_child_sock() in DCCP and TCP.\n\nOperation order is now transposed, we first create the child\nsocket then we try to hook up the route.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "2c42758cf6683e9c1657d20dcf2a7edd323d98ca",
      "tree": "3428ab729bd16e11941fcb5eb5e4163077eb0e6a",
      "parents": [
        "1ab7b6ac2709d0eb05a7144cd0e14faa3a7ea162"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri May 06 16:10:41 2011 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun May 08 13:18:53 2011 -0700"
      },
      "message": "dccp: Use cork flow in dccp_v4_connect()\n\nSince this is invoked from inet_stream_connect() the socket is locked\nand therefore this usage is safe.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "a294865978b701e4d0d90135672749531b9a900d",
      "tree": "4edb7c20db20d81867562fc5cbc0d7c7b5a70df5",
      "parents": [
        "87e9af6cc67d842cd92b52b81f3f14e665e7ab05"
      ],
      "author": {
        "name": "Dan Rosenberg",
        "email": "drosenberg@vsecurity.com",
        "time": "Fri May 06 03:27:18 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri May 06 13:05:50 2011 -0700"
      },
      "message": "dccp: handle invalid feature options length\n\nA length of zero (after subtracting two for the type and len fields) for\nthe DCCPO_{CHANGE,CONFIRM}_{L,R} options will cause an underflow due to\nthe subtraction.  The subsequent code may read past the end of the\noptions value buffer when parsing.  I\u0027m unsure of what the consequences\nof this might be, but it\u0027s probably not good.\n\nSigned-off-by: Dan Rosenberg \u003cdrosenberg@vsecurity.com\u003e\nCc: stable@kernel.org\nAcked-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "f1390160ddcd64a3cfd48b3280d0a616a31b9520",
      "tree": "bc1973eae7b3bdab36f2e47c7f87543344b85a9a",
      "parents": [
        "475949d8e86bbde5ea3ffa4d95e022ca69233b14"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue May 03 20:06:41 2011 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue May 03 20:06:41 2011 -0700"
      },
      "message": "dccp: Use flowi4-\u003esaddr in dccp_v4_connect()\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "91ab0b60a12833b4715b838474f23496af8de30c",
      "tree": "ec72b681f5e6e078c4640ed0e5e6392be23b68f2",
      "parents": [
        "44901666a1a736b3f43eac7894b07183f127e9a9"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Apr 28 23:49:30 2011 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Apr 28 23:49:30 2011 -0700"
      },
      "message": "ipv4: Get route daddr from flow key in dccp_v4_connect().\n\nNow that output route lookups update the flow with\ndestination address selection, we can fetch it from\nfl4-\u003edaddr instead of rt-\u003ert_dst\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "f6d8bd051c391c1c0458a30b2a7abcd939329259",
      "tree": "1dc4daecdeb0b42c2c6b59d7d6b41e091c11db5f",
      "parents": [
        "0a14842f5a3c0e88a1e59fac5c3025db39721f74"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Thu Apr 21 09:45:37 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Apr 28 13:16:35 2011 -0700"
      },
      "message": "inet: add RCU protection to inet-\u003eopt\n\nWe lack proper synchronization to manipulate inet-\u003eopt ip_options\n\nProblem is ip_make_skb() calls ip_setup_cork() and\nip_setup_cork() possibly makes a copy of ipc-\u003eopt (struct ip_options),\nwithout any protection against another thread manipulating inet-\u003eopt.\n\nAnother thread can change inet-\u003eopt pointer and free old one under us.\n\nUse RCU to protect inet-\u003eopt (changed to inet-\u003einet_opt).\n\nInstead of handling atomic refcounts, just copy ip_options when\nnecessary, to avoid cache line dirtying.\n\nWe cant insert an rcu_head in struct ip_options since its included in\nskb-\u003ecb[], so this patch is large because I had to introduce a new\nip_options_rcu structure.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nCc: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "2d7192d6cbab20e153c47fa1559ffd41ceef0e79",
      "tree": "aac4c4132f5b4a173ad8f8d0bf24427e039bbc89",
      "parents": [
        "15ecd039b7182d725f4294e01f2fb12c3a88db17"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Apr 26 13:28:44 2011 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Apr 27 13:59:04 2011 -0700"
      },
      "message": "ipv4: Sanitize and simplify ip_route_{connect,newports}()\n\nThese functions are used together as a unit for route resolution\nduring connect().  They address the chicken-and-egg problem that\nexists when ports need to be allocated during connect() processing,\nyet such port allocations require addressing information from the\nrouting code.\n\nIt\u0027s currently more heavy handed than it needs to be, and in\nparticular we allocate and initialize a flow object twice.\n\nLet the callers provide the on-stack flow object.  That way we only\nneed to initialize it once in the ip_route_connect() call.\n\nLater, if ip_route_newports() needs to do anything, it re-uses that\nflow object as-is except for the ports which it updates before the\nroute re-lookup.\n\nAlso, describe why this set of facilities are needed and how it works\nin a big comment.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\nReviewed-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\n"
    },
    {
      "commit": "b71d1d426d263b0b6cb5760322efebbfc89d4463",
      "tree": "226ca7390bd6187ec9139d2ccedd26fd94d8e57a",
      "parents": [
        "5f8629c526b4f7e529a6d27bbd802c0dc7fcc357"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Fri Apr 22 04:53:02 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Apr 22 11:04:14 2011 -0700"
      },
      "message": "inet: constify ip headers and in6_addr\n\nAdd const qualifiers to structs iphdr, ipv6hdr and in6_addr pointers\nwhere possible, to make code intention more obvious.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "25985edcedea6396277003854657b5f3cb31a628",
      "tree": "f026e810210a2ee7290caeb737c23cb6472b7c38",
      "parents": [
        "6aba74f2791287ec407e0f92487a725a25908067"
      ],
      "author": {
        "name": "Lucas De Marchi",
        "email": "lucas.demarchi@profusion.mobi",
        "time": "Wed Mar 30 22:57:33 2011 -0300"
      },
      "committer": {
        "name": "Lucas De Marchi",
        "email": "lucas.demarchi@profusion.mobi",
        "time": "Thu Mar 31 11:26:23 2011 -0300"
      },
      "message": "Fix common misspellings\n\nFixes generated by \u0027codespell\u0027 and manually reviewed.\n\nSigned-off-by: Lucas De Marchi \u003clucas.demarchi@profusion.mobi\u003e\n"
    },
    {
      "commit": "1958b856c1a59c0f1e892b92debb8c9fe4f364dc",
      "tree": "679e060ad7c1e36ee2e5aec0c686921c66c9bc2c",
      "parents": [
        "4c9483b2fb5d2548c3cc1fe03cdd4484ceeb5d1c"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Mar 12 16:36:19 2011 -0500"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Mar 12 15:08:55 2011 -0800"
      },
      "message": "net: Put fl6_* macros to struct flowi6 and use them again.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "4c9483b2fb5d2548c3cc1fe03cdd4484ceeb5d1c",
      "tree": "c29c8070012cffb38fe249cf528589a675f622b1",
      "parents": [
        "9cce96df5b76691712dba22e83ff5efe900361e1"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Mar 12 16:22:43 2011 -0500"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Mar 12 15:08:54 2011 -0800"
      },
      "message": "ipv6: Convert to use flowi6 where applicable.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "9cce96df5b76691712dba22e83ff5efe900361e1",
      "tree": "eecf99e64c6866af944e1e1644d87737392b2da2",
      "parents": [
        "f42454d632753d71ea1a2df09be7bbda32b6372d"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Mar 12 03:00:33 2011 -0500"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Mar 12 15:08:54 2011 -0800"
      },
      "message": "net: Put fl4_* macros to struct flowi4 and use them again.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "9d6ec938019c6b16cb9ec96598ebe8f20de435fe",
      "tree": "9b850eb7fd48a6e5ffc15f47afd2e3edc93f5290",
      "parents": [
        "68a5e3dd0a0056d8b349f9eea3756adda53ec17a"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Mar 12 01:12:47 2011 -0500"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Mar 12 15:08:48 2011 -0800"
      },
      "message": "ipv4: Use flowi4 in public route lookup interfaces.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "6281dcc94a96bd73017b2baa8fa83925405109ef",
      "tree": "8deee4d66d256d10ea25f66520eb96b1fade1545",
      "parents": [
        "08704bcbf022786532b5f188935ab6619906049f"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Mar 12 00:43:55 2011 -0500"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Mar 12 15:08:46 2011 -0800"
      },
      "message": "net: Make flowi ports AF dependent.\n\nCreate two sets of port member accessors, one set prefixed by fl4_*\nand the other prefixed by fl6_*\n\nThis will let us to create AF optimal flow instances.\n\nIt will work because every context in which we access the ports,\nwe have to be fully aware of which AF the flowi is anyways.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "1d28f42c1bd4bb2363d88df74d0128b4da135b4a",
      "tree": "cb2e652fe79a2bc307e871bc2d3fa51cc8051e45",
      "parents": [
        "ca116922afa8cc5ad46b00c0a637b1cde5ca478a"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Mar 12 00:29:39 2011 -0500"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Mar 12 15:08:44 2011 -0800"
      },
      "message": "net: Put flowi_* prefix on AF independent members of struct flowi\n\nI intend to turn struct flowi into a union of AF specific flowi\nstructs.  There will be a common structure that each variant includes\nfirst, much like struct sock_common.\n\nThis is the first step to move in that direction.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "0a0e9ae1bd788bc19adc4d4ae08c98b233697402",
      "tree": "13825eeb5bbeae27d66e95f12168eff4b60701ab",
      "parents": [
        "01a16b21d6adf992aa863186c3c4e561a57c1714",
        "b65a0e0c84cf489bfa00d6aa6c48abc5a237100f"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Mar 03 21:27:42 2011 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Mar 03 21:27:42 2011 -0800"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6\n\nConflicts:\n\tdrivers/net/bnx2x/bnx2x.h\n"
    },
    {
      "commit": "b23dd4fe42b455af5c6e20966b7d6959fa8352ea",
      "tree": "bf97323eae9a8d084170e573ff2c0c40bc72c3cd",
      "parents": [
        "452edd598f60522c11f7f88fdbab27eb36509d1a"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Mar 02 14:31:35 2011 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Mar 02 14:31:35 2011 -0800"
      },
      "message": "ipv4: Make output route lookup return rtable directly.\n\nInstead of on the stack.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "720dc34bbbe9493c7bd48b2243058b4e447a929d",
      "tree": "1c99c2d5018e2cfc7f4eb6721f57d5ae144abb56",
      "parents": [
        "6ea25a6c2b95cf916e844fe2bacdd1c15b72e4c5"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Tue Mar 01 23:02:07 2011 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Mar 01 23:02:07 2011 -0800"
      },
      "message": "dccp: fix oops on Reset after close\n\nThis fixes a bug in the order of dccp_rcv_state_process() that still permitted\nreception even after closing the socket. A Reset after close thus causes a NULL\npointer dereference by not preventing operations on an already torn-down socket.\n\n dccp_v4_do_rcv() \n\t|\n\t| state other than OPEN\n\tv\n dccp_rcv_state_process()\n\t|\n\t| DCCP_PKT_RESET\n\tv\n dccp_rcv_reset()\n\t|\n\tv\n dccp_time_wait()\n\n WARNING: at net/ipv4/inet_timewait_sock.c:141 __inet_twsk_hashdance+0x48/0x128()\n Modules linked in: arc4 ecb carl9170 rt2870sta(C) mac80211 r8712u(C) crc_ccitt ah\n [\u003cc0038850\u003e] (unwind_backtrace+0x0/0xec) from [\u003cc0055364\u003e] (warn_slowpath_common)\n [\u003cc0055364\u003e] (warn_slowpath_common+0x4c/0x64) from [\u003cc0055398\u003e] (warn_slowpath_n)\n [\u003cc0055398\u003e] (warn_slowpath_null+0x1c/0x24) from [\u003cc02b72d0\u003e] (__inet_twsk_hashd)\n [\u003cc02b72d0\u003e] (__inet_twsk_hashdance+0x48/0x128) from [\u003cc031caa0\u003e] (dccp_time_wai)\n [\u003cc031caa0\u003e] (dccp_time_wait+0x40/0xc8) from [\u003cc031c15c\u003e] (dccp_rcv_state_proces)\n [\u003cc031c15c\u003e] (dccp_rcv_state_process+0x120/0x538) from [\u003cc032609c\u003e] (dccp_v4_do_)\n [\u003cc032609c\u003e] (dccp_v4_do_rcv+0x11c/0x14c) from [\u003cc0286594\u003e] (release_sock+0xac/0)\n [\u003cc0286594\u003e] (release_sock+0xac/0x110) from [\u003cc031fd34\u003e] (dccp_close+0x28c/0x380)\n [\u003cc031fd34\u003e] (dccp_close+0x28c/0x380) from [\u003cc02d9a78\u003e] (inet_release+0x64/0x70)\n\nThe fix is by testing the socket state first. Receiving a packet in Closed state\nnow also produces the required \"No connection\" Reset reply of RFC 4340, 8.3.1.\n\nReported-and-tested-by: Johan Hovold \u003cjhovold@gmail.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "273447b352e69c327efdecfd6e1d6fe3edbdcd14",
      "tree": "dae1e0778ca973c25b74fd3dc9728616d6e65b73",
      "parents": [
        "5df65e5567a497a28067019b8ff08f98fb026629"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Mar 01 14:27:04 2011 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Mar 01 14:27:04 2011 -0800"
      },
      "message": "ipv4: Kill can_sleep arg to ip_route_output_flow()\n\nThis boolean state is now available in the flow flags.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "420d44daa7aa1cc847e9e527f0a27a9ce61768ca",
      "tree": "a5aab8c6b925ba3da1079b7262f7d6c504406eb8",
      "parents": [
        "abdf7e7239da270e68262728f125ea94b9b7d42d"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Mar 01 14:19:23 2011 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Mar 01 14:19:23 2011 -0800"
      },
      "message": "ipv4: Make final arg to ip_route_output_flow to be boolean \"can_sleep\"\n\nSince that is what the current vague \"flags\" argument means.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "abdf7e7239da270e68262728f125ea94b9b7d42d",
      "tree": "30c1246fac76ad7a4d2b1f8dcf3698b4d302b4de",
      "parents": [
        "68d0c6d34d586a893292d4fb633a3bf8c547b222"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Mar 01 14:15:24 2011 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Mar 01 14:15:24 2011 -0800"
      },
      "message": "ipv4: Can final ip_route_connect() arg to boolean \"can_sleep\".\n\nSince that\u0027s what the current vague \"flags\" thing means.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "68d0c6d34d586a893292d4fb633a3bf8c547b222",
      "tree": "b6d812307621873cf16000171563c1f68b5bc255",
      "parents": [
        "903ab86d195cca295379699299c5fc10beba31c7"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Mar 01 13:19:07 2011 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Mar 01 13:19:07 2011 -0800"
      },
      "message": "ipv6: Consolidate route lookup sequences.\n\nRoute lookups follow a general pattern in the ipv6 code wherein\nwe first find the non-IPSEC route, potentially override the\nflow destination address due to ipv6 options settings, and then\nfinally make an IPSEC search using either xfrm_lookup() or\n__xfrm_lookup().\n\n__xfrm_lookup() is used when we want to generate a blackhole route\nif the key manager needs to resolve the IPSEC rules (in this case\n-EREMOTE is returned and the original \u0027dst\u0027 is left unchanged).\n\nOtherwise plain xfrm_lookup() is used and when asynchronous IPSEC\nresolution is necessary, we simply fail the lookup completely.\n\nAll of these cases are encapsulated into two routines,\nip6_dst_lookup_flow and ip6_sk_dst_lookup_flow.  The latter of which\nhandles unconnected UDP datagram sockets.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "3b193ade594e4f2d501d4c3a9f43d49176f03230",
      "tree": "1c3b0b333aa52f7a9e164914bdd51ae415195a60",
      "parents": [
        "004971353a403d75e7d50f8b3b304272ef056248"
      ],
      "author": {
        "name": "Hagen Paul Pfeifer",
        "email": "hagen@jauu.net",
        "time": "Fri Feb 25 05:45:16 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Feb 25 14:00:21 2011 -0800"
      },
      "message": "dccp: newdp is declared/assigned but never be used\n\nDeclaration and assignment of newdp is removed. Usage of dccp_sk()\nexhibit no side effects.\n\nSigned-off-by: Hagen Paul Pfeifer \u003chagen@jauu.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "dca8b089c95d94afa1d715df257de0286350e99d",
      "tree": "f686fef8ef3d80f81bd9f91072ce8c5f347e3e7c",
      "parents": [
        "33765d06033cc4ba4d9ae6d3d606ef3f28773c1b"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Feb 24 13:38:12 2011 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Feb 24 13:38:12 2011 -0800"
      },
      "message": "ipv4: Rearrange how ip_route_newports() gets port keys.\n\nip_route_newports() is the only place in the entire kernel that\ncares about the port members in the routing cache entry\u0027s lookup\nflow key.\n\nTherefore the only reason we store an entire flow inside of the\nstruct rtentry is for this one special case.\n\nRewrite ip_route_newports() such that:\n\n1) The caller passes in the original port values, so we don\u0027t need\n   to use the rth-\u003efl.fl_ip_{s,d}port values to remember them.\n\n2) The lookup flow is constructed by hand instead of being copied\n   from the routing cache entry\u0027s flow.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "442b9635c569fef038d5367a7acd906db4677ae1",
      "tree": "c20d06ca161c70c0db61ed298eaf51102b67a38e",
      "parents": [
        "5ea74318c68fcb38f02fc2fc920abd37d9a9bc33"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Feb 02 17:05:11 2011 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Feb 02 20:48:47 2011 -0800"
      },
      "message": "tcp: Increase the initial congestion window to 10.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\nAcked-by: Nandita Dukkipati \u003cnanditad@google.com\u003e\n"
    },
    {
      "commit": "008d23e4852d78bb2618f2035f8b2110b6a6b968",
      "tree": "81c88f744f6f3fc84132527c1ddc0b4da410c5e2",
      "parents": [
        "8f685fbda43deccd130d192c9fcef1444649eaca",
        "bfc672dcf323877228682aff79dff8ecd9f30ff8"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 10:05:56 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 10:05:56 2011 -0800"
      },
      "message": "Merge branch \u0027for-next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial\n\n* \u0027for-next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (43 commits)\n  Documentation/trace/events.txt: Remove obsolete sched_signal_send.\n  writeback: fix global_dirty_limits comment runtime -\u003e real-time\n  ppc: fix comment typo singal -\u003e signal\n  drivers: fix comment typo diable -\u003e disable.\n  m68k: fix comment typo diable -\u003e disable.\n  wireless: comment typo fix diable -\u003e disable.\n  media: comment typo fix diable -\u003e disable.\n  remove doc for obsolete dynamic-printk kernel-parameter\n  remove extraneous \u0027is\u0027 from Documentation/iostats.txt\n  Fix spelling milisec -\u003e ms in snd_ps3 module parameter description\n  Fix spelling mistakes in comments\n  Revert conflicting V4L changes\n  i7core_edac: fix typos in comments\n  mm/rmap.c: fix comment\n  sound, ca0106: Fix assignment to \u0027channel\u0027.\n  hrtimer: fix a typo in comment\n  init/Kconfig: fix typo\n  anon_inodes: fix wrong function name in comment\n  fix comment typos concerning \"consistent\"\n  poll: fix a typo in comment\n  ...\n\nFix up trivial conflicts in:\n - drivers/net/wireless/iwlwifi/iwl-core.c (moved to iwl-legacy.c)\n - fs/ext4/ext4.h\n\nAlso fix missed \u0027diabled\u0027 typo in drivers/net/bnx2x/bnx2x.h while at it.\n"
    },
    {
      "commit": "bfbb23466adcbc77facea3046b44f75530079472",
      "tree": "31e28ac15e808861cd261e9600c4e7642d8aa73f",
      "parents": [
        "763dadd47c884853a22f2f19ea27e58431303ff3"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Sun Jan 02 18:15:58 2011 +0100"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Fri Jan 07 12:22:44 2011 +0100"
      },
      "message": "dccp: make upper bound for seq_window consistent on 32/64 bit\n\nThe \u0027seq_window\u0027 sysctl sets the initial value for the DCCP Sequence Window,\nwhich may range from 32..2^46-1 (RFC 4340, 7.5.2). The patch sets the upper\nbound consistently to 2^32-1 on both 32 and 64 bit systems, which should be\nsufficient - with a RTT of 1sec and 1-byte packets, a seq_window of 2^32-1\ncorresponds to a link speed of 34 Gbps.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "763dadd47c884853a22f2f19ea27e58431303ff3",
      "tree": "9ee3daff6fe649578d3fabdc0a1fcf8252b7b660",
      "parents": [
        "2cf5be93d1b704f342ad423a49f0e78d73939e66"
      ],
      "author": {
        "name": "Samuel Jero",
        "email": "sj323707@ohio.edu",
        "time": "Thu Dec 30 12:15:41 2010 +0100"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Fri Jan 07 12:22:43 2011 +0100"
      },
      "message": "dccp: fix bug in updating the GSR\n\nCurrently dccp_check_seqno allows any valid packet to update the Greatest\nSequence Number Received, even if that packet\u0027s sequence number is less than\nthe current GSR. This patch adds a check to make sure that the new packet\u0027s\nsequence number is greater than GSR.\n\nSigned-off-by: Samuel Jero \u003csj323707@ohio.edu\u003e\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "2cf5be93d1b704f342ad423a49f0e78d73939e66",
      "tree": "5d0e0435c71e775134d0e2374c97db78a46d3198",
      "parents": [
        "4e3dbdb1392a83bd21a6ff8f6bc785495058d37c"
      ],
      "author": {
        "name": "Samuel Jero",
        "email": "sj323707@ohio.edu",
        "time": "Thu Dec 30 12:15:16 2010 +0100"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Fri Jan 07 12:22:43 2011 +0100"
      },
      "message": "dccp: fix return value for sequence-invalid packets\n\nCurrently dccp_check_seqno returns 0 (indicating a valid packet) if the\nacknowledgment number is out of bounds and the sync that RFC 4340 mandates at\nthis point is currently being rate-limited. This function should return -1,\nindicating an invalid packet.\n\nSigned-off-by: Samuel Jero \u003csj323707@ohio.edu\u003e\nAcked-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "4b7bd364700d9ac8372eff48832062b936d0793b",
      "tree": "0dbf78c95456a0b02d07fcd473281f04a87e266d",
      "parents": [
        "c0d8768af260e2cbb4bf659ae6094a262c86b085",
        "90a8a73c06cc32b609a880d48449d7083327e11a"
      ],
      "author": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Wed Dec 22 18:57:02 2010 +0100"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Wed Dec 22 18:57:02 2010 +0100"
      },
      "message": "Merge branch \u0027master\u0027 into for-next\n\nConflicts:\n\tMAINTAINERS\n\tarch/arm/mach-omap2/pm24xx.c\n\tdrivers/scsi/bfa/bfa_fcpim.c\n\nNeeded to update to apply fixes for which the old branch was too\noutdated.\n"
    },
    {
      "commit": "b7ec19af63b467e30189984fb24e6157603608e3",
      "tree": "670f4a450bd1a49072c0958a66e32fc8a349d9dc",
      "parents": [
        "84b3cdc38cd2882d7ac3c2ae4b6faf5c199874e3"
      ],
      "author": {
        "name": "Shan Wei",
        "email": "shanwei@cn.fujitsu.com",
        "time": "Fri Dec 10 12:49:23 2010 +0100"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Fri Dec 10 12:49:23 2010 +0100"
      },
      "message": "dccp: remove unused macros\n\nRemove macros which have been unused since the initial implementation\n(commit 7c657876b63cb1d8a2ec06f8fc6c37bb8412e66c, [DCCP]: Initial\n implementation from Tue Aug 9 20:14:34 2005 -0700).\n\nSigned-off-by: Shan Wei \u003cshanwei@cn.fujitsu.com\u003e\nAcked-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "fe6c791570efe717946ea7b7dd50aec96b70d551",
      "tree": "1becb5e8aea7a9c9a7d78f987bd73b0a5d8ee434",
      "parents": [
        "f8bf5681cf15f77692c8ad8cb95d059ff7c622c9",
        "f19872575ff7819a3723154657a497d9bca66b33"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Dec 08 13:15:38 2010 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Dec 08 13:47:38 2010 -0800"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6\n\nConflicts:\n\tdrivers/net/wireless/ath/ath9k/ar9003_eeprom.c\n\tnet/llc/af_llc.c\n"
    },
    {
      "commit": "04910265078f08a73208beab70ed2a3cce4a919f",
      "tree": "cc7e1c927ceda1ddf5f86d50f8ee22a1a4e32fe6",
      "parents": [
        "871a2c16c21b988688b4ab1a78eadd969765c0a3"
      ],
      "author": {
        "name": "Tomasz Grobelny",
        "email": "tomasz@grobelny.oswiecenia.net",
        "time": "Sat Dec 04 13:39:13 2010 +0100"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Tue Dec 07 13:47:12 2010 +0100"
      },
      "message": "dccp qpolicy: Parameter checking of cmsg qpolicy parameters\n\nEnsure that cmsg-\u003ecmsg_type value is valid for qpolicy\nthat is currently in use.\n\nSigned-off-by: Tomasz Grobelny \u003ctomasz@grobelny.oswiecenia.net\u003e\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "871a2c16c21b988688b4ab1a78eadd969765c0a3",
      "tree": "34ffb3be1402747ef3b7fdb754fb99778bd45728",
      "parents": [
        "cfa969e385a23e4c85f50e0ed5de25a2e18bf9d4"
      ],
      "author": {
        "name": "Tomasz Grobelny",
        "email": "tomasz@grobelny.oswiecenia.net",
        "time": "Sat Dec 04 13:38:01 2010 +0100"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Tue Dec 07 13:47:12 2010 +0100"
      },
      "message": "dccp: Policy-based packet dequeueing infrastructure\n\nThis patch adds a generic infrastructure for policy-based dequeueing of\nTX packets and provides two policies:\n * a simple FIFO policy (which is the default) and\n * a priority based policy (set via socket options).\nBoth policies honour the tx_qlen sysctl for the maximum size of the write\nqueue (can be overridden via socket options).\n\nThe priority policy uses skb-\u003epriority internally to assign an u32 priority\nidentifier, using the same ranking as SO_PRIORITY. The skb-\u003epriority field\nis set to 0 when the packet leaves DCCP. The priority is supplied as ancillary\ndata using cmsg(3), the patch also provides the requisite parsing routines.\n\nSigned-off-by: Tomasz Grobelny \u003ctomasz@grobelny.oswiecenia.net\u003e\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "0ac78870220b6e0ac74dd9292bcfa7b18718babd",
      "tree": "19b0359b9a805857acf9ab713afd4e485e4da692",
      "parents": [
        "a301e1703edc088592f8c5c16f9bdd34a0792776"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Tue Nov 23 02:36:56 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Nov 28 11:29:27 2010 -0800"
      },
      "message": "dccp: fix error in updating the GAR\n\nThis fixes a bug in updating the Greatest Acknowledgment number Received (GAR):\nthe current implementation does not track the greatest received value -\nlower values in the range AWL..AWH (RFC 4340, 7.5.1) erase higher ones.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "f72f2f4cdeb67bc262d80a6d474292f00182a4dc",
      "tree": "9e027a91937f3adf75205839168042f4472c7f40",
      "parents": [
        "866f3b25a2eb60d7529c227a0ecd80c3aba443fd"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Thu Nov 18 09:37:07 2010 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Nov 18 09:37:07 2010 -0800"
      },
      "message": "dccp ccid-2: whitespace fix-up\n\nThis fixes whitespace noise introduced in commit \"dccp ccid-2: Algorithm to\nupdate buffer state\", 5753fdfe8bd8e9a2ff9e5af19b0ffc78bfcd502a, 14 Nov 2010.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "5811662b15db018c740c57d037523683fd3e6123",
      "tree": "f820610a6024799a26699f22dc9a4ef5dee07978",
      "parents": [
        "dd68ad2235b4625e0dc928b2b4c614d265f976d3"
      ],
      "author": {
        "name": "Changli Gao",
        "email": "xiaosuo@gmail.com",
        "time": "Fri Nov 12 18:43:55 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Nov 17 12:27:45 2010 -0800"
      },
      "message": "net: use the macros defined for the members of flowi\n\nUse the macros defined for the members of flowi to clean the code up.\n\nSigned-off-by: Changli Gao \u003cxiaosuo@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "c996d8b9a8f37bd1b4dd7823abc42780b20998f8",
      "tree": "6f800886bdedd27876fdd3d97f2529558e66a1a9",
      "parents": [
        "e987fa357a4c585e4f43fc3e0ab15ba9e908e233"
      ],
      "author": {
        "name": "Michael Witten",
        "email": "mfwitten@gmail.com",
        "time": "Mon Nov 15 19:55:34 2010 +0000"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Mon Nov 15 23:50:13 2010 +0100"
      },
      "message": "Docs/Kconfig: Update: osdl.org -\u003e linuxfoundation.org\n\nSome of the documentation refers to web pages under\nthe domain `osdl.org\u0027. However, `osdl.org\u0027 now\nredirects to `linuxfoundation.org\u0027.\n\nRather than rely on redirections, this patch updates\nthe addresses appropriately; for the most part, only\ndocumentation that is meant to be current has been\nupdated.\n\nThe patch should be pretty quick to scan and check;\neach new web-page url was gotten by trying out the\noriginal URL in a browser and then simply copying the\nthe redirected URL (formatting as necessary).\n\nThere is some conflict as to which one of these domain\nnames is preferred:\n\n  linuxfoundation.org\n  linux-foundation.org\n\nSo, I wrote:\n\n  info@linuxfoundation.org\n\nand got this reply:\n\n  Message-ID: \u003c4CE17EE6.9040807@linuxfoundation.org\u003e\n  Date: Mon, 15 Nov 2010 10:41:42 -0800\n  From: David Ames \u003cdavid@linuxfoundation.org\u003e\n\n  ...\n\n  linuxfoundation.org is preferred. The canonical name for our web site is\n  www.linuxfoundation.org. Our list site is actually\n  lists.linux-foundation.org.\n\n  Regarding email linuxfoundation.org is preferred there are a few people\n  who choose to use linux-foundation.org for their own reasons.\n\nConsequently, I used `linuxfoundation.org\u0027 for web pages and\n`lists.linux-foundation.org\u0027 for mailing-list web pages and email addresses;\nthe only personal email address I updated from `@osdl.org\u0027 was that of\nAndrew Morton, who prefers `linux-foundation.org\u0027 according `git log\u0027.\n\nSigned-off-by: Michael Witten \u003cmfwitten@gmail.com\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "7e87fe84303cc54ecf3c7b688cb08ca24322a41d",
      "tree": "df764cbfefe19e628e92a8353d331d91c33212b6",
      "parents": [
        "52394eecec4e6fa677a61af26f0bd35de665344e"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Sun Nov 14 17:26:13 2010 +0100"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Mon Nov 15 07:12:01 2010 +0100"
      },
      "message": "dccp ccid-2: Separate option parsing from CCID processing\n\nThis patch replaces an almost identical replication of code: large parts\nof dccp_parse_options() re-appeared as ccid2_ackvector() in ccid2.c.\n\nApart from the duplication, this caused two more problems:\n 1. CCIDs should not need to be concerned with parsing header options;\n 2. one can not assume that Ack Vectors appear as a contiguous area within an\n    skb, it is legal to insert other options and/or padding in between. The\n    current code would throw an error and stop reading in such a case.\n\nSince Ack Vectors provide CCID-specific information, they are now processed\nby the CCID directly, separating this functionality from the main DCCP code.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "52394eecec4e6fa677a61af26f0bd35de665344e",
      "tree": "283c99722c63a05a748916caaec876732309ceaf",
      "parents": [
        "d83447f0944e73d690218d79c07762ffa4ceb9e4"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Sun Nov 14 17:26:02 2010 +0100"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Mon Nov 15 07:12:00 2010 +0100"
      },
      "message": "dccp ccid-2: Remove old infrastructure\n\nThis removes\n * functions for which updates have been provided in the preceding patches and\n * the @av_vec_len field - it is no longer necessary since the buffer length is\n   now always computed dynamically.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "d83447f0944e73d690218d79c07762ffa4ceb9e4",
      "tree": "2a9adf943eee50d8c495ac9302692a277d862d92",
      "parents": [
        "18219463c884bfdb7954d298b9edb5194b14d621"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Sun Nov 14 17:25:46 2010 +0100"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Mon Nov 15 07:12:00 2010 +0100"
      },
      "message": "dccp ccid-2: Schedule Sync as out-of-band mechanism\n\nThe problem with Ack Vectors is that\n  i) their length is variable and can in principle grow quite large,\n ii) it is hard to predict exactly how large they will be.\n\nDue to the second point it seems not a good idea to reduce the MPS; in\nparticular when on average there is enough room for the Ack Vector and an\nincrease in length is momentarily due to some burst loss, after which the\nAck Vector returns to its normal/average length.\n\nThe solution taken by this patch is to subtract a minimum-expected Ack Vector\nlength from the MPS, and to defer any larger Ack Vectors onto a separate\nSync - but only if indeed there is no space left on the skb.\n\nThis patch provides the infrastructure to schedule Sync-packets for transporting\n(urgent) out-of-band data. Its signalling is quicker than scheduling an Ack, since\nit does not need to wait for new application data.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "18219463c884bfdb7954d298b9edb5194b14d621",
      "tree": "d153af455b44eaf2fbf474515a2a7bb33b1b4b07",
      "parents": [
        "3802408644515e29fb723d51a5317301b212cf3a"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Sun Nov 14 17:25:36 2010 +0100"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Mon Nov 15 07:11:59 2010 +0100"
      },
      "message": "dccp ccid-2: Consolidate Ack-Vector processing within main DCCP module\n\nThis aggregates Ack Vector processing (handling input and clearing old state)\ninto one function, for the following reasons and benefits:\n * all Ack Vector-specific processing is now in one place;\n * duplicated code is removed;\n * ensuring sanity: from an Ack Vector point of view, it is better to clear the\n                    old state first before entering new state;\n * Ack Event handling happens mostly within the CCIDs, not the main DCCP module.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "3802408644515e29fb723d51a5317301b212cf3a",
      "tree": "834533b0cf43366747ea237b43f06e4462aed94e",
      "parents": [
        "5753fdfe8bd8e9a2ff9e5af19b0ffc78bfcd502a"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Sun Nov 14 17:25:23 2010 +0100"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Mon Nov 15 07:11:59 2010 +0100"
      },
      "message": "dccp ccid-2: Update code for the Ack Vector input/registration routine\n\nThis patch updates the code which registers new packets as received, using the\nnew circular buffer interface. It contributes a new algorithm which\n * supports both tail/head pointers and buffer wrap-around and\n * deals with overflow (head/tail move in lock-step).\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "5753fdfe8bd8e9a2ff9e5af19b0ffc78bfcd502a",
      "tree": "2a694538aef985ffffd140a861df7efdc73aeddf",
      "parents": [
        "c25ecd0a21d5e08160cb5cc984f9e2b8ee347443"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Sun Nov 14 17:25:11 2010 +0100"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Mon Nov 15 07:11:59 2010 +0100"
      },
      "message": "dccp ccid-2: Algorithm to update buffer state\n\nThis provides a routine to consistently update the buffer state when the\npeer acknowledges receipt of Ack Vectors; updating state in the list of Ack\nVectors as well as in the circular buffer.\n\nWhile based on RFC 4340, several additional (and necessary) precautions were\nadded to protect the consistency of the buffer state. These additions are\nessential, since analysis and experience showed that the basic algorithm was\ninsufficient for this task (which lead to problems that were hard to debug).\n\nThe algorithm now\n * deals with HC-sender acknowledging to HC-receiver and vice versa,\n * keeps track of the last unacknowledged but received seqno in tail_ackno,\n * has special cases to reset the overflow condition when appropriate,\n * is protected against receiving older information (would mess up buffer state).\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "b3d14bff12a38ad13a174eb0cc83d2ac7169eee4",
      "tree": "2248e4d994ce857113c34ce5f754c554e17d8d9e",
      "parents": [
        "7d870936602533836bba821bd5c679c62c52a95f"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Wed Nov 10 21:21:35 2010 +0100"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Wed Nov 10 21:21:35 2010 +0100"
      },
      "message": "dccp ccid-2: Implementation of circular Ack Vector buffer with overflow handling\n\nThis completes the implementation of a circular buffer for Ack Vectors, by\nextending the current (linear array-based) implementation.  The changes are:\n\n (a) An `overflow\u0027 flag to deal with the case of overflow. As before, dynamic\n     growth of the buffer will not be supported; but code will be added to deal\n     robustly with overflowing Ack Vector buffers.\n\n (b) A `tail_seqno\u0027 field. When naively implementing the algorithm of Appendix A\n     in RFC 4340, problems arise whenever subsequent Ack Vector records overlap,\n     which can bring the entire run length calculation completely out of synch.\n     (This is documented on http://www.erg.abdn.ac.uk/users/gerrit/dccp/notes/\\\n                                             ack_vectors/tracking_tail_ackno/ .)\n (c) The buffer length is now computed dynamically (i.e. current fill level),\n     as the span between head to tail.\n\nAs a result, dccp_ackvec_pending() is now simpler - the #ifdef is no longer\nnecessary since buf_empty is always true when IP_DCCP_ACKVEC is not configured.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "7d870936602533836bba821bd5c679c62c52a95f",
      "tree": "35ffc317699b1700b27dfd8c5da4512d87848e65",
      "parents": [
        "f17a37c9b8c4b32c01e501a84fa6f30e344c6110"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Wed Nov 10 21:21:02 2010 +0100"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Wed Nov 10 21:21:02 2010 +0100"
      },
      "message": "dccp ccid-2: Separate internals of Ack Vectors from option-parsing code\n\nThis patch\n * separates Ack Vector housekeeping code from option-insertion code;\n * shifts option-specific code from ackvec.c into options.c;\n * introduces a dedicated routine to take care of the Ack Vector records;\n * simplifies the dccp_ackvec_insert_avr() routine: the BUG_ON was redundant,\n   since the list is automatically arranged in descending order of ack_seqno.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "f17a37c9b8c4b32c01e501a84fa6f30e344c6110",
      "tree": "7ff8e9a232aaddcd33c302c5c6a577af26634212",
      "parents": [
        "973a34aa8593dbfe84386343c694f5beecb51d8a"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Wed Nov 10 21:20:07 2010 +0100"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Wed Nov 10 21:20:07 2010 +0100"
      },
      "message": "dccp ccid-2: Ack Vector interface clean-up\n\nThis patch brings the Ack Vector interface up to date. Its main purpose is\nto lay the basis for the subsequent patches of this set, which will use the\nnew data structure fields and routines.\n\nThere are no real algorithmic changes, rather an adaptation:\n\n (1) Replaced the static Ack Vector size (2) with a #define so that it can\n     be adapted (with low loss / Ack Ratio, a value of 1 works, so 2 seems\n     to be sufficient for the moment) and added a solution so that computing\n     the ECN nonce will continue to work - even with larger Ack Vectors.\n\n (2) Replaced the #defines for Ack Vector states with a complete enum.\n\n (3) Replaced #defines to compute Ack Vector length and state with general\n     purpose routines (inlines), and updated code to use these.\n\n (4) Added a `tail\u0027 field (conversion to circular buffer in subsequent patch).\n\n (5) Updated the (outdated) documentation for Ack Vector struct.\n\n (6) All sequence number containers now trimmed to 48 bits.\n\n (7) Removal of unused bits:\n     * removed dccpav_ack_nonce from struct dccp_ackvec, since this is already\n       redundantly stored in the `dccpavr_ack_nonce\u0027 (of Ack Vector record);\n     * removed Elapsed Time for Ack Vectors (it was nowhere used);\n     * replaced semantics of dccpavr_sent_len with dccpavr_ack_runlen, since\n       the code needs to be able to remember the old run length;\n     * reduced the de-/allocation routines (redundant / duplicate tests).\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "1c0e0a0569e925220c2948ea9b92fc013895917f",
      "tree": "533f97f037679a7ba92867baf816dda21a3c9f84",
      "parents": [
        "b1fcf55eea541af9efa5d39f5a0d1aec8ceca55d"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Wed Oct 27 19:16:28 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Oct 28 10:27:01 2010 -0700"
      },
      "message": "dccp ccid-2: Stop polling\n\nThis updates CCID-2 to use the CCID dequeuing mechanism, converting from\nprevious continuous-polling to a now event-driven mechanism.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "b1fcf55eea541af9efa5d39f5a0d1aec8ceca55d",
      "tree": "a021b6abde9c784d67ee0de3bb7fb31f7d5b2e9f",
      "parents": [
        "dc841e30eaea9f9f83c9ab1ee0b3ef9e5c95ce8a"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Wed Oct 27 19:16:27 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Oct 28 10:27:01 2010 -0700"
      },
      "message": "dccp: Refine the wait-for-ccid mechanism\n\nThis extends the existing wait-for-ccid routine so that it may be used with\ndifferent types of CCID, addressing the following problems:\n\n 1) The queue-drain mechanism only works with rate-based CCIDs. If CCID-2 for\n    example has a full TX queue and becomes network-limited just as the\n    application wants to close, then waiting for CCID-2 to become unblocked\n    could lead to an indefinite  delay (i.e., application \"hangs\").\n 2) Since each TX CCID in turn uses a feedback mechanism, there may be changes\n    in its sending policy while the queue is being drained. This can lead to\n    further delays during which the application will not be able to terminate.\n 3) The minimum wait time for CCID-3/4 can be expected to be the queue length\n    times the current inter-packet delay. For example if tx_qlen\u003d100 and a delay\n    of 15 ms is used for each packet, then the application would have to wait\n    for a minimum of 1.5 seconds before being allowed to exit.\n 4) There is no way for the user/application to control this behaviour. It would\n    be good to use the timeout argument of dccp_close() as an upper bound. Then\n    the maximum time that an application is willing to wait for its CCIDs to can\n    be set via the SO_LINGER option.\n\nThese problems are addressed by giving the CCID a grace period of up to the\n`timeout\u0027 value.\n\nThe wait-for-ccid function is, as before, used when the application\n (a) has read all the data in its receive buffer and\n (b) if SO_LINGER was set with a non-zero linger time, or\n (c) the socket is either in the OPEN (active close) or in the PASSIVE_CLOSEREQ\n     state (client application closes after receiving CloseReq).\n\nIn addition, there is a catch-all case of __skb_queue_purge() after waiting for\nthe CCID. This is necessary since the write queue may still have data when\n (a) the host has been passively-closed,\n (b) abnormal termination (unread data, zero linger time),\n (c) wait-for-ccid could not finish within the given time limit.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "dc841e30eaea9f9f83c9ab1ee0b3ef9e5c95ce8a",
      "tree": "921458d0ea02f1478dbac9305c1925dbea8c0dd9",
      "parents": [
        "fe84f4140f0d24deca8591e38926b95cfd097e62"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Wed Oct 27 19:16:26 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Oct 28 10:27:00 2010 -0700"
      },
      "message": "dccp: Extend CCID packet dequeueing interface\n\nThis extends the packet dequeuing interface of dccp_write_xmit() to allow\n 1. CCIDs to take care of timing when the next packet may be sent;\n 2. delayed sending (as before, with an inter-packet gap up to 65.535 seconds).\n\nThe main purpose is to take CCID-2 out of its polling mode (when it is network-\nlimited, it tries every millisecond to send, without interruption).\n\nThe mode of operation for (2) is as follows:\n * new packet is enqueued via dccp_sendmsg() \u003d\u003e dccp_write_xmit(),\n * ccid_hc_tx_send_packet() detects that it may not send (e.g. window full),\n * it signals this condition via `CCID_PACKET_WILL_DEQUEUE_LATER\u0027,\n * dccp_write_xmit() returns without further action;\n * after some time the wait-condition for CCID becomes true,\n * that CCID schedules the tasklet,\n * tasklet function calls ccid_hc_tx_send_packet() via dccp_write_xmit(),\n * since the wait-condition is now true, ccid_hc_tx_packet() returns \"send now\",\n * packet is sent, and possibly more (since dccp_write_xmit() loops).\n\nCode reuse: the taskled function calls dccp_write_xmit(), the timer function\n            reduces to a wrapper around the same code.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "fe84f4140f0d24deca8591e38926b95cfd097e62",
      "tree": "5b4c809f131105fddb533776632ff1d546b604a7",
      "parents": [
        "de7fe7874dc55e8226245c50f07dec3c7b285044"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Wed Oct 27 19:16:25 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Oct 28 10:27:00 2010 -0700"
      },
      "message": "dccp: Return-value convention of hc_tx_send_packet()\n\nThis patch reorganises the return value convention of the CCID TX sending\nfunction, to permit more flexible schemes, as required by subsequent patches.\n\nCurrently the convention is\n * values \u003c 0     mean error,\n * a value \u003d\u003d 0   means \"send now\", and\n * a value x \u003e 0  means \"send in x milliseconds\".\n\nThe patch provides symbolic constants and a function to interpret return values.\n\nIn addition, it caps the maximum positive return value to 0xFFFF milliseconds,\ncorresponding to 65.535 seconds.  This is possible since in CCID-3/4 the\nmaximum possible inter-packet gap is fixed at t_mbi \u003d 64 sec.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "5f05647dd81c11a6a165ccc8f0c1370b16f3bcb0",
      "tree": "7851ef1c93aa1aba7ef327ca4b75fd35e6d10f29",
      "parents": [
        "02f36038c568111ad4fc433f6fa760ff5e38fab4",
        "ec37a48d1d16c30b655ac5280209edf52a6775d4"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Oct 23 11:47:02 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Oct 23 11:47:02 2010 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6: (1699 commits)\n  bnx2/bnx2x: Unsupported Ethtool operations should return -EINVAL.\n  vlan: Calling vlan_hwaccel_do_receive() is always valid.\n  tproxy: use the interface primary IP address as a default value for --on-ip\n  tproxy: added IPv6 support to the socket match\n  cxgb3: function namespace cleanup\n  tproxy: added IPv6 support to the TPROXY target\n  tproxy: added IPv6 socket lookup function to nf_tproxy_core\n  be2net: Changes to use only priority codes allowed by f/w\n  tproxy: allow non-local binds of IPv6 sockets if IP_TRANSPARENT is enabled\n  tproxy: added tproxy sockopt interface in the IPV6 layer\n  tproxy: added udp6_lib_lookup function\n  tproxy: added const specifiers to udp lookup functions\n  tproxy: split off ipv6 defragmentation to a separate module\n  l2tp: small cleanup\n  nf_nat: restrict ICMP translation for embedded header\n  can: mcp251x: fix generation of error frames\n  can: mcp251x: fix endless loop in interrupt handler if CANINTF_MERRF is set\n  can-raw: add msg_flags to distinguish local traffic\n  9p: client code cleanup\n  rds: make local functions/variables static\n  ...\n\nFix up conflicts in net/core/dev.c, drivers/net/pcmcia/smc91c92_cs.c and\ndrivers/net/wireless/ath/ath9k/debug.c as per David\n"
    },
    {
      "commit": "9941fb62762253774cc6177d0b9172ece5133fe1",
      "tree": "641fc2b376e2f84c7023aa0cd8b9d76f954cc3a1",
      "parents": [
        "a5190b4eea1f1c53ee26b3d1176441cafa8e7f79",
        "3b1a1ce6f418cb7ab35eb55c8a6575987a524e30"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Oct 21 08:21:34 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Oct 21 08:21:34 2010 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/kaber/nf-next-2.6\n"
    },
    {
      "commit": "093d282321daeb19c107e5f1f16d7f68484f3ade",
      "tree": "36e9eed23573068819bf67a91caac6ebf60d0d7c",
      "parents": [
        "6006db84a91838813cdad8a6622a4e39efe9ea47"
      ],
      "author": {
        "name": "Balazs Scheidler",
        "email": "bazsi@balabit.hu",
        "time": "Thu Oct 21 13:06:43 2010 +0200"
      },
      "committer": {
        "name": "Patrick McHardy",
        "email": "kaber@trash.net",
        "time": "Thu Oct 21 13:06:43 2010 +0200"
      },
      "message": "tproxy: fix hash locking issue when using port redirection in __inet_inherit_port()\n\nWhen __inet_inherit_port() is called on a tproxy connection the wrong locks are\nheld for the inet_bind_bucket it is added to. __inet_inherit_port() made an\nimplicit assumption that the listener\u0027s port number (and thus its bind bucket).\nUnfortunately, if you\u0027re using the TPROXY target to redirect skbs to a\ntransparent proxy that assumption is not true anymore and things break.\n\nThis patch adds code to __inet_inherit_port() so that it can handle this case\nby looking up or creating a new bind bucket for the child socket and updates\ncallers of __inet_inherit_port() to gracefully handle __inet_inherit_port()\nfailing.\n\nReported by and original patch from Stephen Buck \u003cstephen.buck@exinda.com\u003e.\nSee http://marc.info/?t\u003d128169268200001\u0026r\u003d1\u0026w\u003d2 for the original discussion.\n\nSigned-off-by: KOVACS Krisztian \u003chidden@balabit.hu\u003e\nSigned-off-by: Patrick McHardy \u003ckaber@trash.net\u003e\n"
    },
    {
      "commit": "6038f373a3dc1f1c26496e60b6c40b164716f07e",
      "tree": "a0d3bbd026eea41b9fc36b8c722cbaf56cd9f825",
      "parents": [
        "1ec5584e3edf9c4bf2c88c846534d19cf986ba11"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Sun Aug 15 18:52:59 2010 +0200"
      },
      "committer": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Fri Oct 15 15:53:27 2010 +0200"
      },
      "message": "llseek: automatically add .llseek fop\n\nAll file_operations should get a .llseek operation so we can make\nnonseekable_open the default for future file operations without a\n.llseek pointer.\n\nThe three cases that we can automatically detect are no_llseek, seq_lseek\nand default_llseek. For cases where we can we can automatically prove that\nthe file offset is always ignored, we use noop_llseek, which maintains\nthe current behavior of not returning an error from a seek.\n\nNew drivers should normally not use noop_llseek but instead use no_llseek\nand call nonseekable_open at open time.  Existing drivers can be converted\nto do the same when the maintainer knows for certain that no user code\nrelies on calling seek on the device file.\n\nThe generated code is often incorrectly indented and right now contains\ncomments that clarify for each added line why a specific variant was\nchosen. In the version that gets submitted upstream, the comments will\nbe gone and I will manually fix the indentation, because there does not\nseem to be a way to do that using coccinelle.\n\nSome amount of new code is currently sitting in linux-next that should get\nthe same modifications, which I will do at the end of the merge window.\n\nMany thanks to Julia Lawall for helping me learn to write a semantic\npatch that does all this.\n\n\u003d\u003d\u003d\u003d\u003d begin semantic patch \u003d\u003d\u003d\u003d\u003d\n// This adds an llseek\u003d method to all file operations,\n// as a preparation for making no_llseek the default.\n//\n// The rules are\n// - use no_llseek explicitly if we do nonseekable_open\n// - use seq_lseek for sequential files\n// - use default_llseek if we know we access f_pos\n// - use noop_llseek if we know we don\u0027t access f_pos,\n//   but we still want to allow users to call lseek\n//\n@ open1 exists @\nidentifier nested_open;\n@@\nnested_open(...)\n{\n\u003c+...\nnonseekable_open(...)\n...+\u003e\n}\n\n@ open exists@\nidentifier open_f;\nidentifier i, f;\nidentifier open1.nested_open;\n@@\nint open_f(struct inode *i, struct file *f)\n{\n\u003c+...\n(\nnonseekable_open(...)\n|\nnested_open(...)\n)\n...+\u003e\n}\n\n@ read disable optional_qualifier exists @\nidentifier read_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\nexpression E;\nidentifier func;\n@@\nssize_t read_f(struct file *f, char *p, size_t s, loff_t *off)\n{\n\u003c+...\n(\n   *off \u003d E\n|\n   *off +\u003d E\n|\n   func(..., off, ...)\n|\n   E \u003d *off\n)\n...+\u003e\n}\n\n@ read_no_fpos disable optional_qualifier exists @\nidentifier read_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\n@@\nssize_t read_f(struct file *f, char *p, size_t s, loff_t *off)\n{\n... when !\u003d off\n}\n\n@ write @\nidentifier write_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\nexpression E;\nidentifier func;\n@@\nssize_t write_f(struct file *f, const char *p, size_t s, loff_t *off)\n{\n\u003c+...\n(\n  *off \u003d E\n|\n  *off +\u003d E\n|\n  func(..., off, ...)\n|\n  E \u003d *off\n)\n...+\u003e\n}\n\n@ write_no_fpos @\nidentifier write_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\n@@\nssize_t write_f(struct file *f, const char *p, size_t s, loff_t *off)\n{\n... when !\u003d off\n}\n\n@ fops0 @\nidentifier fops;\n@@\nstruct file_operations fops \u003d {\n ...\n};\n\n@ has_llseek depends on fops0 @\nidentifier fops0.fops;\nidentifier llseek_f;\n@@\nstruct file_operations fops \u003d {\n...\n .llseek \u003d llseek_f,\n...\n};\n\n@ has_read depends on fops0 @\nidentifier fops0.fops;\nidentifier read_f;\n@@\nstruct file_operations fops \u003d {\n...\n .read \u003d read_f,\n...\n};\n\n@ has_write depends on fops0 @\nidentifier fops0.fops;\nidentifier write_f;\n@@\nstruct file_operations fops \u003d {\n...\n .write \u003d write_f,\n...\n};\n\n@ has_open depends on fops0 @\nidentifier fops0.fops;\nidentifier open_f;\n@@\nstruct file_operations fops \u003d {\n...\n .open \u003d open_f,\n...\n};\n\n// use no_llseek if we call nonseekable_open\n////////////////////////////////////////////\n@ nonseekable1 depends on !has_llseek \u0026\u0026 has_open @\nidentifier fops0.fops;\nidentifier nso ~\u003d \"nonseekable_open\";\n@@\nstruct file_operations fops \u003d {\n...  .open \u003d nso, ...\n+.llseek \u003d no_llseek, /* nonseekable */\n};\n\n@ nonseekable2 depends on !has_llseek @\nidentifier fops0.fops;\nidentifier open.open_f;\n@@\nstruct file_operations fops \u003d {\n...  .open \u003d open_f, ...\n+.llseek \u003d no_llseek, /* open uses nonseekable */\n};\n\n// use seq_lseek for sequential files\n/////////////////////////////////////\n@ seq depends on !has_llseek @\nidentifier fops0.fops;\nidentifier sr ~\u003d \"seq_read\";\n@@\nstruct file_operations fops \u003d {\n...  .read \u003d sr, ...\n+.llseek \u003d seq_lseek, /* we have seq_read */\n};\n\n// use default_llseek if there is a readdir\n///////////////////////////////////////////\n@ fops1 depends on !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier readdir_e;\n@@\n// any other fop is used that changes pos\nstruct file_operations fops \u003d {\n... .readdir \u003d readdir_e, ...\n+.llseek \u003d default_llseek, /* readdir is present */\n};\n\n// use default_llseek if at least one of read/write touches f_pos\n/////////////////////////////////////////////////////////////////\n@ fops2 depends on !fops1 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier read.read_f;\n@@\n// read fops use offset\nstruct file_operations fops \u003d {\n... .read \u003d read_f, ...\n+.llseek \u003d default_llseek, /* read accesses f_pos */\n};\n\n@ fops3 depends on !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier write.write_f;\n@@\n// write fops use offset\nstruct file_operations fops \u003d {\n... .write \u003d write_f, ...\n+\t.llseek \u003d default_llseek, /* write accesses f_pos */\n};\n\n// Use noop_llseek if neither read nor write accesses f_pos\n///////////////////////////////////////////////////////////\n\n@ fops4 depends on !fops1 \u0026\u0026 !fops2 \u0026\u0026 !fops3 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier read_no_fpos.read_f;\nidentifier write_no_fpos.write_f;\n@@\n// write fops use offset\nstruct file_operations fops \u003d {\n...\n .write \u003d write_f,\n .read \u003d read_f,\n...\n+.llseek \u003d noop_llseek, /* read and write both use no f_pos */\n};\n\n@ depends on has_write \u0026\u0026 !has_read \u0026\u0026 !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier write_no_fpos.write_f;\n@@\nstruct file_operations fops \u003d {\n... .write \u003d write_f, ...\n+.llseek \u003d noop_llseek, /* write uses no f_pos */\n};\n\n@ depends on has_read \u0026\u0026 !has_write \u0026\u0026 !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier read_no_fpos.read_f;\n@@\nstruct file_operations fops \u003d {\n... .read \u003d read_f, ...\n+.llseek \u003d noop_llseek, /* read uses no f_pos */\n};\n\n@ depends on !has_read \u0026\u0026 !has_write \u0026\u0026 !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\n@@\nstruct file_operations fops \u003d {\n...\n+.llseek \u003d noop_llseek, /* no read or write fn */\n};\n\u003d\u003d\u003d\u003d\u003d End semantic patch \u003d\u003d\u003d\u003d\u003d\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nCc: Julia Lawall \u003cjulia@diku.dk\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\n"
    },
    {
      "commit": "2f34b32977ade4249601f35f7eb0cdd56b4e0f89",
      "tree": "cacdef9003d861cc0b3d5feaf3080ea5cad11ed7",
      "parents": [
        "ecdfbdabbe4e0cf0443cbbea2df1bf51bf67f3f3"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Mon Oct 11 20:44:42 2010 +0200"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Tue Oct 12 06:57:43 2010 +0200"
      },
      "message": "dccp: cosmetics - warning format\n\nThis  omits the redundant \"DCCP:\" in warning messages, since DCCP_WARN() already\nechoes the function name, avoiding messages like\n\n   kernel: [10988.766503] dccp_close: DCCP: ABORT -- 209 bytes unread\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "ecdfbdabbe4e0cf0443cbbea2df1bf51bf67f3f3",
      "tree": "1c71220ce0627db499da079eb3d0577c2dd8d064",
      "parents": [
        "d196c9a5d4e150cdff675662214c80c69b906958"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Mon Oct 11 20:41:13 2010 +0200"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Tue Oct 12 06:57:43 2010 +0200"
      },
      "message": "dccp: schedule an Ack when receiving timestamps\n\nThis schedules an Ack when receiving a timestamp, exploiting the\nexisting inet_csk_schedule_ack() function, saving one case in the\n`dccp_ack_pending()\u0027 function.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "d196c9a5d4e150cdff675662214c80c69b906958",
      "tree": "0819ea92cdfe9c2ae9716a3eef920849a98c01b9",
      "parents": [
        "baf9e782e1dc4991edecfa3b8700cf8739c40259"
      ],
      "author": {
        "name": "Ivo Calado",
        "email": "ivocalado@embedded.ufcg.edu.br",
        "time": "Mon Oct 11 20:40:04 2010 +0200"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Tue Oct 12 06:57:42 2010 +0200"
      },
      "message": "dccp: generalise data-loss condition\n\nThis patch generalises the task of determining data loss from RFC 4340, 7.7.1.\n\nLet S_A, S_B be sequence numbers such that S_B is \"after\" S_A, and let\nN_B be the NDP count of packet S_B. Then, using modulo-2^48 arithmetic,\n D \u003d S_B - S_A - 1  is an upper bound of the number of lost data packets,\n D - N_B            is an approximation of the number of lost data packets\n                    (there are cases where this is not exact).\n\nThe patch implements this as\n dccp_loss_count(S_A, S_B, N_B) :\u003d max(S_B - S_A - 1 - N_B, 0)\n\nSigned-off-by: Ivo Calado \u003civocalado@embedded.ufcg.edu.br\u003e\nSigned-off-by: Erivaldo Xavier \u003cdesadoc@gmail.com\u003e\nSigned-off-by: Leandro Sales \u003cleandroal@gmail.com\u003e\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "baf9e782e1dc4991edecfa3b8700cf8739c40259",
      "tree": "1715d02df95b82af9eb79633d9a498084fd678c3",
      "parents": [
        "93344af44c0f649582bf1e3b5ecc45b3d19e98c2"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Mon Oct 11 20:37:38 2010 +0200"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Tue Oct 12 06:57:41 2010 +0200"
      },
      "message": "dccp: remove unused argument in CCID tx function\n\nThis removes the argument `more\u0027 from ccid_hc_tx_packet_sent, since it was\nnowhere used in the entire code.\n\n(Btw, this argument was not even used in the original KAME code where the\n function initially came from; compare the variable moreToSend in the\n freebsd61-dccp-kame-28.08.2006.patch kept by Emmanuel Lochin.)\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "93344af44c0f649582bf1e3b5ecc45b3d19e98c2",
      "tree": "582193ad30a6b0f2523b667bd0a39ca70d9dcba0",
      "parents": [
        "0b53d4604ac2b4f2faa9a62a04ea9b383ad2efe0"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Mon Oct 11 20:36:33 2010 +0200"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Tue Oct 12 06:57:40 2010 +0200"
      },
      "message": "dccp: merge now-reduced connect_init() function\n\nAfter moving the assignment of GAR/ISS from dccp_connect_init() to\ndccp_transmit_skb(), the former function becomes very small, so that\na merger with dccp_connect() suggests itself.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "0b53d4604ac2b4f2faa9a62a04ea9b383ad2efe0",
      "tree": "70ed0d136ef719f33655f78b31650d1c88cd3e00",
      "parents": [
        "0ed8ddf4045fcfcac36bad753dc4046118c603ec"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Mon Oct 11 20:35:40 2010 +0200"
      },
      "committer": {
        "name": "Gerrit Renker",
        "email": "gerrit@erg.abdn.ac.uk",
        "time": "Tue Oct 12 06:57:40 2010 +0200"
      },
      "message": "dccp: fix the adjustments to AWL and SWL\n\nThis fixes a problem and a potential loophole with regard to seqno/ackno\nvalidity: currently the initial adjustments to AWL/SWL are only performed\nonce at the begin of the connection, during the handshake.\n\nSince the Sequence Window feature is always greater than Wmin\u003d32 (7.5.2),\nit is however necessary to perform these adjustments at least for the first\nW/W\u0027 (variables as per 7.5.1) packets in the lifetime of a connection.\n\nThis requirement is complicated by the fact that W/W\u0027 can change at any time\nduring the lifetime of a connection.\n\nTherefore it is better to perform that safety check each time SWL/AWL are\nupdated, as implemented by the patch.\n\nA second problem solved by this patch is that the remote/local Sequence Window\nfeature values (which set the bounds for AWL/SWL/SWH) are undefined until the\nfeature negotiation has completed.\n\nDuring the initial handshake we have more stringent sequence number protection;\nthe changes added by this patch effect that {A,S}W{L,H} are within the correct\nbounds at the instant that feature negotiation completes (since the SeqWin\nfeature activation handlers call dccp_update_gsr/gss()).\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n"
    },
    {
      "commit": "1f4f0f645cc1d7f1187fcdb0ac22c2e69bd68050",
      "tree": "6db6ea3a0bb27188d06db6bbf093842d7007f836",
      "parents": [
        "10e7e9c44d442275951d1cfc892c1c6606c85c94"
      ],
      "author": {
        "name": "stephen hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Tue Oct 05 04:24:09 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Oct 06 23:12:07 2010 -0700"
      },
      "message": "dccp: Kill dead code and add static markers.\n\nRemove dead code and make some functions static.\nCompile tested only.\n\nSigned-off-by: Stephen Hemminger \u003cshemminger@vyatta.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    }
  ],
  "next": "a02cec2155fbea457eca8881870fd2de1a4c4c76"
}
