)]}'
{
  "log": [
    {
      "commit": "1c87733d0682547050ccccb400cdac425fa43b39",
      "tree": "8ec9de7722a2be0e97d9ad6a04d12fb0d298b201",
      "parents": [
        "6e3f7faf3e8a3e226b1a6b955aac12abf2f2e1b6"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Mon Oct 25 03:20:11 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Oct 25 14:18:27 2010 -0700"
      },
      "message": "net_ns: add __rcu annotations\n\nadd __rcu annotation to (struct net)-\u003egen, and use\nrcu_dereference_protected() in net_assign_generic()\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "8e602ce2980fd6941dc0d3dda12e5095e8206f34",
      "tree": "1a0ea79a6db1b01660cc034c822d02c95e356388",
      "parents": [
        "c60ce4e265404ca42ba860401f4b0f1e97332a67"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Thu Oct 14 05:56:18 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Oct 17 13:49:14 2010 -0700"
      },
      "message": "netns: reorder fields in struct net\n\nIn a network bench, I noticed an unfortunate false sharing between\n\u0027loopback_dev\u0027 and \u0027count\u0027 fields in \"struct net\".\n\n\u0027count\u0027 is written each time a socket is created or destroyed, while\nloopback_dev might be often read in routing code.\n\nMove loopback_dev in a read mostly section of \"struct net\"\n\nNote: struct netns_xfrm is cache line aligned on SMP.\n(It contains a \"struct dst_ops\")\nMove it at the end to avoid holes, and reduce sizeof(struct net) by 128\nbytes on ia32.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "8467005da3ef6104b89a4cc5e9c9d9445b75565f",
      "tree": "e21eb9f439a9e17e66d90c691f400db3a5b0c54d",
      "parents": [
        "13aa9a6b0f2371d2ce0de57c2ede62ab7a787157"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Wed Mar 10 15:23:10 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 12 15:52:40 2010 -0800"
      },
      "message": "nsproxy: remove INIT_NSPROXY()\n\nRemove INIT_NSPROXY(), use C99 initializer.\nRemove INIT_IPC_NS(), INIT_NET_NS() while I\u0027m at it.\n\nNote: headers trim will be done later, now it\u0027s quite pointless because\nresults will be invalidated by merge window.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nAcked-by: Serge Hallyn \u003cserue@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "cd8c20b650f49354722b8cc1f03320b004815a0a",
      "tree": "56c21f6211f0acea000452d5f6063453276ca215",
      "parents": [
        "7f635d0d1bf84ad7a0032cbce9d902b9384c48b7"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Wed Jan 13 16:02:14 2010 +0100"
      },
      "committer": {
        "name": "Patrick McHardy",
        "email": "kaber@trash.net",
        "time": "Wed Jan 13 16:02:14 2010 +0100"
      },
      "message": "netfilter: nfnetlink: netns support\n\nMake nfnl socket per-petns.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Patrick McHardy \u003ckaber@trash.net\u003e\n"
    },
    {
      "commit": "72ad937abd0a43b7cf2c557ba1f2ec75e608c516",
      "tree": "ac81af750df170a46ed001fb5647b83dc20f8422",
      "parents": [
        "8153a10c08f1312af563bb92532002e46d3f504a"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Thu Dec 03 02:29:03 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Dec 03 12:22:01 2009 -0800"
      },
      "message": "net: Add support for batching network namespace cleanups\n\n- Add exit_list to struct net to support building lists of network\n  namespaces to cleanup.\n\n- Add exit_batch to pernet_operations to allow running operations only\n  once during a network namespace exit.  Instead of once per network\n  namespace.\n\n- Factor opt ops_exit_list and ops_exit_free so the logic with cleanup\n  up a network namespace does not need to be duplicated.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "65c0cfafce9575319fb6f70080fbe226e5617e3b",
      "tree": "e1e0a276860f74ee0fe6747c8455a8ec0e7c2d03",
      "parents": [
        "671011720baa222b6de667cd688aed4dc8908924"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Sun Nov 29 15:46:17 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Dec 01 16:16:00 2009 -0800"
      },
      "message": "net: remove [un]register_pernet_gen_... and update the docs.\n\nNo that all of the callers have been updated to set fields in\nstruct pernet_operations, and simplified to let the network\nnamespace core handle the allocation and freeing of the storage\nfor them, remove the surpurpflous methods and update the docs\nto the new style.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "f875bae065334907796da12523f9df85c89f5712",
      "tree": "6f14819d128e3fa7b4cc8c274c6eff5326622fc8",
      "parents": [
        "2b035b39970740722598f7a9d548835f9bdd730f"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Sun Nov 29 22:25:28 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Dec 01 16:15:51 2009 -0800"
      },
      "message": "net: Automatically allocate per namespace data.\n\nTo get the full benefit of batched network namespace cleanup netowrk\ndevice deletion needs to be performed by the generic code.  When\nusing register_pernet_gen_device and freeing the data in exit_net\nit is impossible to delay allocation until after exit_net has called\nas the device uninit methods are no longer safe.\n\nTo correct this, and to simplify working with per network namespace data\nI have moved allocation and deletion of per network namespace data into\nthe network namespace core.  The core now frees the data only after\nall of the network namespace exit routines have run.\n\nNow it is only required to set the new fields .id and .size\nin the pernet_operations structure if you want network namespace\ndata to be managed for you automatically.\n\nThis makes the current register_pernet_gen_device and\nregister_pernet_gen_subsys routines unnecessary.  For the moment\nI have left them as compatibility wrappers in net_namespace.h\nThey will be removed once all of the users have been updated.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "2b035b39970740722598f7a9d548835f9bdd730f",
      "tree": "a240b595c380b50f783fe8b3d3d4e9cb612cbb30",
      "parents": [
        "dcbccbd4f1f6ad0f0e169d4b2e816e42bde06f82"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "eric@conroxe.ebiederm.org",
        "time": "Sun Nov 29 22:25:27 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Dec 01 16:15:51 2009 -0800"
      },
      "message": "net: Batch network namespace destruction.\n\nIt is fairly common to kill several network namespaces at once.  Either\nbecause they are nested one inside the other or because they are cooperating\nin multiple machine networking experiments.  As the network stack control logic\ndoes not parallelize easily batch up multiple network namespaces existing\ntogether.\n\nTo get the full benefit of batching the virtual network devices to be\nremoved must be all removed in one batch.  For that purpose I have added\na loop after the last network device operations have run that batches\nup all remaining network devices and deletes them.\n\nAn extra benefit is that the reorganization slightly shrinks the size\nof the per network namespace data structures replaceing a work_struct\nwith a list_head.\n\nIn a trivial test with 4K namespaces this change reduced the cost of\na destroying 4K namespaces from 7+ minutes (at 12% cpu) to 44 seconds\n(at 60% cpu).  The bulk of that 44s was spent in inet_twsk_purge.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "7c28bd0b8ec4d128bd7660671d1b626b0abc471f",
      "tree": "dbde8ba53e2059dbd6cb19aca18133b33112ddf5",
      "parents": [
        "8d5b2c084d2e71587e30a6ef528a8a8051e59dcd"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Sat Oct 24 06:13:17 2009 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Oct 24 06:13:17 2009 -0700"
      },
      "message": "rtnetlink: speedup rtnl_dump_ifinfo()\n\nWhen handling large number of netdevice, rtnl_dump_ifinfo()\nis very slow because it has O(N^2) complexity.\n\nInstead of scanning one single list, we can use the 256 sub lists\nof the dev_index hash table.\n\nThis considerably speedups \"ip link\" operations\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "3d23e349d807177eaf519d444677cee86b1a04cf",
      "tree": "e800dee247598e59185ddd2dd47d2ac6fe090b9c",
      "parents": [
        "bc974f4a230756faf4f69114f271de2e678b363b"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes@sipsolutions.net",
        "time": "Tue Sep 29 23:27:28 2009 +0200"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Wed Oct 07 16:39:43 2009 -0400"
      },
      "message": "wext: refactor\n\nRefactor wext to\n * split out iwpriv handling\n * split out iwspy handling\n * split out procfs support\n * allow cfg80211 to have wireless extensions compat code\n   w/o CONFIG_WIRELESS_EXT\n\nAfter this, drivers need to\n - select WIRELESS_EXT\t- for wext support\n - select WEXT_PRIV\t- for iwpriv support\n - select WEXT_SPY\t- for iwspy support\n\nexcept cfg80211 -- which gets new hooks in wext-core.c\nand can then get wext handlers without CONFIG_WIRELESS_EXT.\n\nWireless extensions procfs support is auto-selected\nbased on PROC_FS and anything that requires the wext core\n(i.e. WIRELESS_EXT or CFG80211_WEXT).\n\nSigned-off-by: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nSigned-off-by: John W. Linville \u003clinville@tuxdriver.com\u003e\n"
    },
    {
      "commit": "4edf547b4d0f886acf5aa5a0c8f8edbaff280830",
      "tree": "5dd08879421a2be32a3c89c9bd76506a5cb8e9e3",
      "parents": [
        "27e0955184a70c4bd4542ee2da18c749b4f43345"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes@sipsolutions.net",
        "time": "Wed Jul 15 06:16:34 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jul 20 08:03:00 2009 -0700"
      },
      "message": "net: explain netns notifiers a little better\n\nEric explained this to me -- and afterwards the comment\nmade sense, but not before. Add the the critical point\nabout interfaces having to be gone from the netns before\nsubsys notifiers are called.\n\nSigned-off-by: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "b333b3d22822cf9b295990866798e9239c9dee72",
      "tree": "307298699e475eb93a3326384fff6f28b1e28b0f",
      "parents": [
        "97fd5bc7f2e442482a7a6cc4bc2a286cbb5f4754"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes@sipsolutions.net",
        "time": "Wed Jun 24 01:34:48 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jul 15 08:53:32 2009 -0700"
      },
      "message": "wireless extensions: make netns aware\n\nThis makes wireless extensions netns aware. The\ntasklet sending the events is converted to a work\nstruct so that we can rtnl_lock() in it.\n\nSigned-off-by: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "30ffee8480c13fbcf8ab6c28e31f79dfff683117",
      "tree": "ca86e974221761b813811047286142804f906ee2",
      "parents": [
        "134e63756d5f3d0f7604dfcca847b09d1b14fd66"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes@sipsolutions.net",
        "time": "Fri Jul 10 09:51:35 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Jul 12 14:03:28 2009 -0700"
      },
      "message": "net: move and export get_net_ns_by_pid\n\nThe function get_net_ns_by_pid(), to get a network\nnamespace from a pid_t, will be required in cfg80211\nas well. Therefore, let\u0027s move it to net_namespace.c\nand export it. We can\u0027t make it a static inline in\nthe !NETNS case because it needs to verify that the\ngiven pid even exists (and return -ESRCH).\n\nSigned-off-by: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "134e63756d5f3d0f7604dfcca847b09d1b14fd66",
      "tree": "d2b5eab085d90cde0a4c0136a118800ca72b76ad",
      "parents": [
        "11a28d373ed2539a110d56419457e2e7db221ac7"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes@sipsolutions.net",
        "time": "Fri Jul 10 09:51:34 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Jul 12 14:03:27 2009 -0700"
      },
      "message": "genetlink: make netns aware\n\nThis makes generic netlink network namespace aware. No\ngeneric netlink families except for the controller family\nare made namespace aware, they need to be checked one by\none and then set the family-\u003enetnsok member to true.\n\nA new function genlmsg_multicast_netns() is introduced to\nallow sending a multicast message in a given namespace,\nfor example when it applies to an object that lives in\nthat namespace, a new function genlmsg_multicast_allns()\nto send a message to all network namespaces (for objects\nthat do not have an associated netns).\n\nThe function genlmsg_multicast() is changed to multicast\nthe message in just init_net, which is currently correct\nfor all generic netlink families since they only work in\ninit_net right now. Some will later want to work in all\nnet namespaces because they do not care about the netns\nat all -- those will have to be converted to use one of\nthe new functions genlmsg_multicast_allns() or\ngenlmsg_multicast_netns() whenever they are made netns\naware in some way.\n\nAfter this patch families can easily decide whether or\nnot they should be available in all net namespaces. Many\ngenl families us it for objects not related to networking\nand should therefore be available in all namespaces, but\nthat will have to be done on a per family basis.\n\nNote that this doesn\u0027t touch on the checkpoint/restart\nproblem where network namespaces could be used, genl\nfamilies and multicast groups are numbered globally and\nI see no easy way of changing that, especially since it\nmust be possible to multicast to all network namespaces\nfor those families that do not care about netns.\n\nSigned-off-by: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "11a28d373ed2539a110d56419457e2e7db221ac7",
      "tree": "d1460cb057299c89ff34b20821e30c8bfc7e589a",
      "parents": [
        "6c04bb18ddd633b7feac2c8fe2ae0bf61d20ca7a"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes@sipsolutions.net",
        "time": "Fri Jul 10 09:51:33 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Jul 12 14:03:25 2009 -0700"
      },
      "message": "net: make namespace iteration possible under RCU\n\nAll we need to take care of is using proper RCU list\nadd/del primitives and inserting a synchronize_rcu()\nat one place to make sure the exit notifiers are run\nafter everybody has stopped iterating the list.\n\nSigned-off-by: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "17edde520927070a6bf14a6a75027c0b843443e5",
      "tree": "dcd940213c93bc943c670f48aa52ec8571351912",
      "parents": [
        "2f20d2e667ab1ca44cde5fb361386dff5bb6081d"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@aristanetworks.com",
        "time": "Sun Feb 22 00:11:09 2009 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Mar 03 01:14:27 2009 -0800"
      },
      "message": "netns: Remove net_alive\n\nIt turns out that net_alive is unnecessary, and the original problem\nthat led to it being added was simply that the icmp code thought\nit was a network device and wound up being unable to handle packets\nwhile there were still packets in the network namespace.\n\nNow that icmp and tcp have been fixed to properly register themselves\nthis problem is no longer present and we have a stronger guarantee\nthat packets will not arrive in a network namespace then that provided\nby net_alive in netif_receive_skb.  So remove net_alive allowing\npacket reception run a little faster.\n\nAdditionally document the strong reason why network namespace cleanup\nis safe so that if something happens again someone else will have\na chance of figuring it out.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@aristanetworks.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "d62ddc21b674b5ac1466091ff3fbf7baa53bc92c",
      "tree": "13e57abe023b5258b168e7f9108015a78493e481",
      "parents": [
        "c95839693d2a6612af7f75ad877012eba2f69757"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Tue Nov 25 17:14:31 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Nov 25 17:14:31 2008 -0800"
      },
      "message": "netns xfrm: add netns boilerplate\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "8f424b5f32d78b4f353b3cddca9804808ef063eb",
      "tree": "4e481fd6ed7ab82c5d70c30a66842fa432065f64",
      "parents": [
        "9eca0a47dee201a73967026985b5f0a79a46bd36"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Wed Nov 12 00:53:30 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Nov 12 00:53:30 2008 -0800"
      },
      "message": "net: Introduce read_pnet() and write_pnet() helpers\n\nThis patch introduces two helpers that deal with reading and writing\nstruct net pointers in various network structures.\n\nTheir implementation depends on CONFIG_NET_NS\n\nFor symmetry, both functions work with \"struct net **pnet\".\n\nTheir usage should reduce the number of #ifdef CONFIG_NET_NS,\nwithout adding many helpers for each network structure\nthat hold a \"struct net *pointer\"\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "485ac57bc1238719b1508f91b0f9eeda4a3c84bb",
      "tree": "daa4c6fde9255c7d3a2a1add5c8c78b418d5e81e",
      "parents": [
        "ad1d967c88e349c7e822ad75dd3247a2a50d2ea3"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Thu Oct 30 23:55:16 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Oct 30 23:55:16 2008 -0700"
      },
      "message": "netns: add register_pernet_gen_subsys/unregister_pernet_gen_subsys\n\nnetns ops which are registered with register_pernet_gen_device() are\nshutdown strictly before those which are registered with\nregister_pernet_subsys(). Sometimes this leads to opposite (read: buggy)\nshutdown ordering between two modules.\n\nAdd register_pernet_gen_subsys()/unregister_pernet_gen_subsys() for modules\nwhich aren\u0027t elite enough for entry in struct net, and which can\u0027t use\nregister_pernet_gen_device(). PPTP conntracking module is such one.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Patrick McHardy \u003ckaber@trash.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "dfdb8d791877052bbb527d9688d94a064721d8f7",
      "tree": "1aba6921536f1d3244c8967033edefd2bbcf4812",
      "parents": [
        "e10aad9998e463df8e25ec749538faf3324dd31b"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Wed Oct 08 11:35:02 2008 +0200"
      },
      "committer": {
        "name": "Patrick McHardy",
        "email": "kaber@trash.net",
        "time": "Wed Oct 08 11:35:02 2008 +0200"
      },
      "message": "netfilter: netns nf_conntrack: add netns boilerplate\n\nOne comment: #ifdefs around #include is necessary to overcome amazing compile\nbreakages in NOTRACK-in-netns patch (see below).\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Patrick McHardy \u003ckaber@trash.net\u003e\n"
    },
    {
      "commit": "734550921e9b7ab924a43aa3d0bd4239dac4fbf1",
      "tree": "7be4b0808ba9860f1d953b45120262a277866021",
      "parents": [
        "7ac6cd653d7c31ad6b7bb5b88c549c4ebf628c34"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jul 14 21:22:20 2008 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 26 20:53:08 2008 -0400"
      },
      "message": "[PATCH] beginning of sysctl cleanup - ctl_table_set\n\nNew object: set of sysctls [currently - root and per-net-ns].\nContains: pointer to parent set, list of tables and \"should I see this set?\"\nmethod (-\u003eis_seen(set)).\nCurrent lists of tables are subsumed by that; net-ns contains such a beast.\n-\u003elookup() for ctl_table_root returns pointer to ctl_table_set instead of\nthat to -\u003elist of that ctl_table_set.\n\n[folded compile fixes by rdd for configs without sysctl]\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "852566f53ccdc9d1c149ffa28daa9778e13fa3da",
      "tree": "247d134429afd277775fdd9a4d491a702ccf4e90",
      "parents": [
        "a60f28fa934ccadbf526f4dab8d73079480002a4"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Fri Jul 18 04:01:24 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jul 18 04:01:24 2008 -0700"
      },
      "message": "mib: add netns/mib.h file\n\nThe only structure declared within is the netns_mib, which will\ncarry all our mibs within. I didn\u0027t put the mibs in the existing\nnetns_xxx structures to make it possible to mark this one as\nproperly aligned and get in a separate \"read-mostly\" cache-line.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "1b63ba8a86c85524a8d7e5953b314ce71ebcb9c9",
      "tree": "fe3dc41cbb47ae12b7c3faf6a88b097349e50d5a",
      "parents": [
        "e35c3269edba151e1c703d87068a28ce2cd65bb0",
        "d420895efb259a78dda50f95289571faa6e10e41"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Jun 28 01:19:40 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Jun 28 01:19:40 2008 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6\n\nConflicts:\n\n\tdrivers/net/wireless/iwlwifi/iwl4965-base.c\n"
    },
    {
      "commit": "b9f75f45a6b46a0ab4eb0857d437a0845871f314",
      "tree": "5c893f3b63d52e5b52fbb7644a833cffdb2c5af2",
      "parents": [
        "735ce972fbc8a65fb17788debd7bbe7b4383cc62"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Fri Jun 20 22:16:51 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jun 20 22:16:51 2008 -0700"
      },
      "message": "netns: Don\u0027t receive new packets in a dead network namespace.\n\nAlexey Dobriyan \u003cadobriyan@gmail.com\u003e writes:\n\u003e Subject: ICMP sockets destruction vs ICMP packets oops\n\n\u003e After icmp_sk_exit() nuked ICMP sockets, we get an interrupt.\n\u003e icmp_reply() wants ICMP socket.\n\u003e\n\u003e Steps to reproduce:\n\u003e\n\u003e \tlaunch shell in new netns\n\u003e \tmove real NIC to netns\n\u003e \tsetup routing\n\u003e \tping -i 0\n\u003e \texit from shell\n\u003e\n\u003e BUG: unable to handle kernel NULL pointer dereference at 0000000000000000\n\u003e IP: [\u003cffffffff803fce17\u003e] icmp_sk+0x17/0x30\n\u003e PGD 17f3cd067 PUD 17f3ce067 PMD 0 \n\u003e Oops: 0000 [1] PREEMPT SMP DEBUG_PAGEALLOC\n\u003e CPU 0 \n\u003e Modules linked in: usblp usbcore\n\u003e Pid: 0, comm: swapper Not tainted 2.6.26-rc6-netns-ct #4\n\u003e RIP: 0010:[\u003cffffffff803fce17\u003e]  [\u003cffffffff803fce17\u003e] icmp_sk+0x17/0x30\n\u003e RSP: 0018:ffffffff8057fc30  EFLAGS: 00010286\n\u003e RAX: 0000000000000000 RBX: 0000000000000000 RCX: ffff81017c7db900\n\u003e RDX: 0000000000000034 RSI: ffff81017c7db900 RDI: ffff81017dc41800\n\u003e RBP: ffffffff8057fc40 R08: 0000000000000001 R09: 000000000000a815\n\u003e R10: 0000000000000000 R11: 0000000000000001 R12: ffffffff8057fd28\n\u003e R13: ffffffff8057fd00 R14: ffff81017c7db938 R15: ffff81017dc41800\n\u003e FS:  0000000000000000(0000) GS:ffffffff80525000(0000) knlGS:0000000000000000\n\u003e CS:  0010 DS: 0018 ES: 0018 CR0: 000000008005003b\n\u003e CR2: 0000000000000000 CR3: 000000017fcda000 CR4: 00000000000006e0\n\u003e DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000\n\u003e DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400\n\u003e Process swapper (pid: 0, threadinfo ffffffff8053a000, task ffffffff804fa4a0)\n\u003e Stack:  0000000000000000 ffff81017c7db900 ffffffff8057fcf0 ffffffff803fcfe4\n\u003e  ffffffff804faa38 0000000000000246 0000000000005a40 0000000000000246\n\u003e  000000000001ffff ffff81017dd68dc0 0000000000005a40 0000000055342436\n\u003e Call Trace:\n\u003e  \u003cIRQ\u003e  [\u003cffffffff803fcfe4\u003e] icmp_reply+0x44/0x1e0\n\u003e  [\u003cffffffff803d3a0a\u003e] ? ip_route_input+0x23a/0x1360\n\u003e  [\u003cffffffff803fd645\u003e] icmp_echo+0x65/0x70\n\u003e  [\u003cffffffff803fd300\u003e] icmp_rcv+0x180/0x1b0\n\u003e  [\u003cffffffff803d6d84\u003e] ip_local_deliver+0xf4/0x1f0\n\u003e  [\u003cffffffff803d71bb\u003e] ip_rcv+0x33b/0x650\n\u003e  [\u003cffffffff803bb16a\u003e] netif_receive_skb+0x27a/0x340\n\u003e  [\u003cffffffff803be57d\u003e] process_backlog+0x9d/0x100\n\u003e  [\u003cffffffff803bdd4d\u003e] net_rx_action+0x18d/0x250\n\u003e  [\u003cffffffff80237be5\u003e] __do_softirq+0x75/0x100\n\u003e  [\u003cffffffff8020c97c\u003e] call_softirq+0x1c/0x30\n\u003e  [\u003cffffffff8020f085\u003e] do_softirq+0x65/0xa0\n\u003e  [\u003cffffffff80237af7\u003e] irq_exit+0x97/0xa0\n\u003e  [\u003cffffffff8020f198\u003e] do_IRQ+0xa8/0x130\n\u003e  [\u003cffffffff80212ee0\u003e] ? mwait_idle+0x0/0x60\n\u003e  [\u003cffffffff8020bc46\u003e] ret_from_intr+0x0/0xf\n\u003e  \u003cEOI\u003e  [\u003cffffffff80212f2c\u003e] ? mwait_idle+0x4c/0x60\n\u003e  [\u003cffffffff80212f23\u003e] ? mwait_idle+0x43/0x60\n\u003e  [\u003cffffffff8020a217\u003e] ? cpu_idle+0x57/0xa0\n\u003e  [\u003cffffffff8040f380\u003e] ? rest_init+0x70/0x80\n\u003e Code: 10 5b 41 5c 41 5d 41 5e c9 c3 66 2e 0f 1f 84 00 00 00 00 00 55 48 89 e5 53\n\u003e 48 83 ec 08 48 8b 9f 78 01 00 00 e8 2b c7 f1 ff 89 c0 \u003c48\u003e 8b 04 c3 48 83 c4 08\n\u003e 5b c9 c3 66 66 66 66 66 2e 0f 1f 84 00\n\u003e RIP  [\u003cffffffff803fce17\u003e] icmp_sk+0x17/0x30\n\u003e  RSP \u003cffffffff8057fc30\u003e\n\u003e CR2: 0000000000000000\n\u003e ---[ end trace ea161157b76b33e8 ]---\n\u003e Kernel panic - not syncing: Aiee, killing interrupt handler!\n\nReceiving packets while we are cleaning up a network namespace is a\nracy proposition. It is possible when the packet arrives that we have\nremoved some but not all of the state we need to fully process it.  We\nhave the choice of either playing wack-a-mole with the cleanup routines\nor simply dropping packets when we don\u0027t have a network namespace to\nhandle them.\n\nSince the check looks inexpensive in netif_receive_skb let\u0027s just\ndrop the incoming packets.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "d62c612ef8a66be534a3ada598cfa28d40cd0b3c",
      "tree": "d076e1ceaaff2aca70883a915bfb771c56034487",
      "parents": [
        "5b06c85c3b96fa8db632f1ee94f99a2bd0215f3a"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Mon May 19 13:45:33 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon May 19 13:45:33 2008 -0700"
      },
      "message": "netns: Introduce sysctl root for read-only net sysctls.\n\nThis one stores all ctl-heads in one list and restricts the\npermissions not give write access to non-init net namespaces.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "5d1e4468a7705db7c1415a65fd16f07113afc1b2",
      "tree": "41d34aa3f0e3b8cc0453973d8ce9e03303264080",
      "parents": [
        "554eb27782d4bb79e0a286a08ecafb81f758058c"
      ],
      "author": {
        "name": "Denis V. Lunev",
        "email": "den@openvz.org",
        "time": "Wed Apr 16 01:58:04 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Apr 16 01:58:04 2008 -0700"
      },
      "message": "[NETNS]: Make netns refconting debug like a socket one.\n\nMake release_net/hold_net noop for performance-hungry people. This is a debug\nstaff and should be used in the debug mode only.\n\nAdd check for net !\u003d NULL in hold/release calls. This will be required\nlater on.\n\n[ Added minor simplifications suggested by Brian Haley. -DaveM ]\n\nSigned-off-by: Denis V. Lunev \u003cden@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "dec827d174d7f76c457238800183ca864a639365",
      "tree": "ca7c04e35eda9956afef94678a2a863c3e75e2ed",
      "parents": [
        "c93cf61fd1d5378134f9b06703f7078067542e00"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Tue Apr 15 00:36:08 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Apr 15 00:36:08 2008 -0700"
      },
      "message": "[NETNS]: The generic per-net pointers.\n\nAdd the elastic array of void * pointer to the struct net.\nThe access rules are simple:\n\n 1. register the ops with register_pernet_gen_device to get\n    the id of your private pointer\n 2. call net_assign_generic() to put the private data on the\n    struct net (most preferably this should be done in the\n    -\u003einit callback of the ops registered)\n 3. do not store any private reference on the net_generic array;\n 4. do not change this pointer while the net is alive;\n 5. use the net_generic() to get the pointer.\n\nWhen adding a new pointer, I copy the old array, replace it\nwith a new one and schedule the old for kfree after an RCU\ngrace period.\n\nSince the net_generic explores the net-\u003egen array inside rcu\nread section and once set the net-\u003egen-\u003eptr[x] pointer never \nchanges, this grants us a safe access to generic pointers.\n\nQuoting Paul: \"... RCU is protecting -only- the net_generic \nstructure that net_generic() is traversing, and the [pointer]\nreturned by net_generic() is protected by a reference counter \nin the upper-level struct net.\"\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nAcked-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "c93cf61fd1d5378134f9b06703f7078067542e00",
      "tree": "5ea9e584aa2c10b9c395730ee5bb944902d3e760",
      "parents": [
        "31efdf0530b6351b0658d35a602a0f2d6bc2ed6f"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Tue Apr 15 00:35:23 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Apr 15 00:35:23 2008 -0700"
      },
      "message": "[NETNS]: The net-subsys IDs generator.\n\nTo make some per-net generic pointers, we need some way to address\nthem, i.e. - IDs. This is simple IDA-based IDs generator for pernet\nsubsystems.\n\nAddressing questions about potential checkpoint/restart problems: \nthese IDs are \"lite-offsets\" within the net structure and are by no \nmeans supposed to be exported to the userspace.\n\nSince it will be used in the nearest future by devices only (tun,\nvlan, tunnels, bridge, etc), I make it resemble the functionality\nof register_pernet_device().\n\nThe new ids is stored in the *id pointer _before_ calling the init\ncallback to make this id available in this callback.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "67019cc9ee3f4868c8e5e493b2873c4722306019",
      "tree": "03daaf97bdcd834dca004f84673bf1f23b6cc52d",
      "parents": [
        "5f4472c5a640c9671ca5becaebdfd6e651482176"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Sun Apr 13 22:28:42 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Apr 13 22:28:42 2008 -0700"
      },
      "message": "[NETNS]: Add an empty netns_dccp structure on struct net.\n\nAccording to the overall struct net design, it will be\nfilled with DCCP-related members.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nAcked-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "a4aa834a9165150252c5cd953faab4de29d51b87",
      "tree": "e96e20355057dfabd279b7b7c94fedeffed4e020",
      "parents": [
        "e1ec1b8ccdf0df6000faa8c2d985ca5f94157e5a"
      ],
      "author": {
        "name": "Denis V. Lunev",
        "email": "den@openvz.org",
        "time": "Thu Apr 03 13:04:33 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Apr 03 13:04:33 2008 -0700"
      },
      "message": "[NETNS]: Declare init_net even without CONFIG_NET defined.\n\nThis does not look good, but there is no other choice. The compilation\nwithout CONFIG_NET is broken and can not be fixed with ease.\n\nAfter that there is no need for the following commits:\n1567ca7eec7664b8be3b07755ac59dc1b1ec76cb\n3edf8fa5ccf10688a9280b5cbca8ed3947c42866\n2d38f9a4f8d2ebdc799f03eecf82345825495711\n\nRevert them.\n\nSigned-off-by: Denis V. Lunev \u003cden@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "c0f39322c335412339dec16ebfd2a05ceba5ebcf",
      "tree": "0a2f1aea451ec3aa563d0069a3d464b647142df1",
      "parents": [
        "856f6ff7a3132c8e412b23a7b9157b68ac9a2baf"
      ],
      "author": {
        "name": "Denis V. Lunev",
        "email": "den@openvz.org",
        "time": "Wed Apr 02 00:10:28 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Apr 02 00:10:28 2008 -0700"
      },
      "message": "[NETNS]: Do not include net/net_namespace.h from seq_file.h\n\nSigned-off-by: Denis V. Lunev \u003cden@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "225c0a0107735597100dc4133cd88c5ed10d9e63",
      "tree": "c82526bf42ccc2e29761cce80f3f60a1ce491855",
      "parents": [
        "f0bdb7ba5af5a7028479e9067ee74e9d66eea6df"
      ],
      "author": {
        "name": "Denis V. Lunev",
        "email": "den@openvz.org",
        "time": "Wed Apr 02 00:09:29 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Apr 02 00:09:29 2008 -0700"
      },
      "message": "[NETNS]: Merge ifdef CONFIG_NET in include/net/net_namespace.h.\n\nSigned-off-by: Denis V. Lunev \u003cden@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "8efa6e93cb2666dceafc4844057fdcb9aa324fb7",
      "tree": "3fbf8da25edf1b942411d89896400effd5a83419",
      "parents": [
        "3edf8fa5ccf10688a9280b5cbca8ed3947c42866"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Mon Mar 31 19:41:14 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Mar 31 19:41:14 2008 -0700"
      },
      "message": "[NETNS]: Introduce a netns_core structure.\n\nThere\u0027s already some stuff on the struct net, that should better\nbe folded into netns_core structure. I\u0027m making the per-proto inuse \ncounter be per-net also, which is also a candidate for this, so \nintroduce this structure and populate it a bit.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "878628fbf2589eb24357e42027d5f54b1dafd3c8",
      "tree": "30c109d8f337b3910e3b5364877c3c521dd700b5",
      "parents": [
        "57da52c1e62c6c13875e97de6c69d3156f8416da"
      ],
      "author": {
        "name": "YOSHIFUJI Hideaki",
        "email": "yoshfuji@linux-ipv6.org",
        "time": "Wed Mar 26 03:57:35 2008 +0900"
      },
      "committer": {
        "name": "YOSHIFUJI Hideaki",
        "email": "yoshfuji@linux-ipv6.org",
        "time": "Wed Mar 26 04:40:00 2008 +0900"
      },
      "message": "[NET] NETNS: Omit namespace comparision without CONFIG_NET_NS.\n\nIntroduce an inline net_eq() to compare two namespaces.\nWithout CONFIG_NET_NS, since no namespace other than \u0026init_net\nexists, it is always 1.\n\nWe do not need to convert 1) inline vs inline and\n2) inline vs \u0026init_net comparisons.\n\nSigned-off-by: YOSHIFUJI Hideaki \u003cyoshfuji@linux-ipv6.org\u003e\n"
    },
    {
      "commit": "e9720acd728a46cb40daa52c99a979f7c4ff195c",
      "tree": "01380f601384cf93f30dedb64afe80359fecb807",
      "parents": [
        "1ff82fe0024e8070c38346b8abc1ff09612dea4c"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Fri Mar 07 11:08:40 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Mar 07 11:08:40 2008 -0800"
      },
      "message": "[NET]: Make /proc/net a symlink on /proc/self/net (v3)\n\nCurrent /proc/net is done with so called \"shadows\", but current\nimplementation is broken and has little chances to get fixed.\n\nThe problem is that dentries subtree of /proc/net directory has\nfancy revalidation rules to make processes living in different\nnet namespaces see different entries in /proc/net subtree, but\ncurrently, tasks see in the /proc/net subdir the contents of any\nother namespace, depending on who opened the file first.\n\nThe proposed fix is to turn /proc/net into a symlink, which points\nto /proc/self/net, which in turn shows what previously was in\n/proc/net - the network-related info, from the net namespace the\nappropriate task lives in.\n\n# ls -l /proc/net\nlrwxrwxrwx  1 root root 8 Mar  5 15:17 /proc/net -\u003e self/net\n\nIn other words - this behaves like /proc/mounts, but unlike\n\"mounts\", \"net\" is not a file, but a directory.\n\nChanges from v2:\n* Fixed discrepancy of /proc/net nlink count and selinux labeling\n  screwup pointed out by Stephen.\n\n  To get the correct nlink count the -\u003egetattr callback for /proc/net\n  is overridden to read one from the net-\u003eproc_net entry.\n\n  To make selinux still work the net-\u003eproc_net entry is initialized\n  properly, i.e. with the \"net\" name and the proc_net parent.\n\nSelinux fixes are\nAcked-by:  Stephen Smalley \u003csds@tycho.nsa.gov\u003e\n\nChanges from v1:\n* Fixed a task_struct leak in get_proc_task_net, pointed out by Paul.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nAcked-by: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "8d870052079d255917ec4f8431f5ec102707b7af",
      "tree": "77ab4f07ef4980d179c4e47d3a6e034c055f9bdf",
      "parents": [
        "a98da11d88dbec1d5cebe2c6dbe9939ed8d13f69"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@sw.ru",
        "time": "Thu Jan 31 04:02:13 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Jan 31 19:27:35 2008 -0800"
      },
      "message": "[NETFILTER]: x_tables: per-netns xt_tables\n\nIn fact all we want is per-netns set of rules, however doing that will\nunnecessary complicate routines such as ipt_hook()/ipt_do_table, so\nmake full xt_table array per-netns.\n\nEvery user stubbed with init_net for a while.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@sw.ru\u003e\nSigned-off-by: Patrick McHardy \u003ckaber@trash.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "5fd30ee7c48bf7f9cd16ab44c8a09fa4a57cc21d",
      "tree": "eb5fc97bcf41f7f1e9dd9d7c312e13c85c1610d0",
      "parents": [
        "868d13ac811746e28e4c806f2b1bd8575796f9af"
      ],
      "author": {
        "name": "Denis V. Lunev",
        "email": "den@openvz.org",
        "time": "Thu Jan 10 03:20:28 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 28 15:01:23 2008 -0800"
      },
      "message": "[NETNS]: Namespacing in the generic fib rules code.\n\nMove static rules_ops \u0026 rules_mod_lock to the struct net, register the\npernet subsys to init them and enjoy the fact that the core rules\ninfrastructure works in the namespace.\n\nReal IPv4 fib rules virtualization requires fib tables support in the\nnamespace and will be done seriously later in the patchset.\n\nAcked-by: Benjamin Thery \u003cbenjamin.thery@bull.net\u003e\nAcked-by: Daniel Lezcano \u003cdlezcano@fr.ibm.com\u003e\nSigned-off-by: Denis V. Lunev \u003cden@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "b0f159db7c95babf1e321334eb33d42db94f2854",
      "tree": "fdcb470922fb89a2d97c6e115bc8b156c1c66cd1",
      "parents": [
        "81c1c17804ac52036e07b0ba95cb637bdd4784d6"
      ],
      "author": {
        "name": "Daniel Lezcano",
        "email": "dlezcano@fr.ibm.com",
        "time": "Thu Jan 10 02:49:06 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 28 15:01:15 2008 -0800"
      },
      "message": "[NETNS][IPV6]: Add ipv6 structure for netns.\n\nLike the ipv4 part, this patch adds an ipv6 structure in the net\nstructure to aggregate the different resources to make ipv6 per\nnamespace.\n\nSigned-off-by: Daniel Lezcano \u003cdlezcano@fr.ibm.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "8afd351c772d1815347d5c46716b099fde00a579",
      "tree": "9cde2e737e98f679ad3c9a4f374c6862de3314c2",
      "parents": [
        "4bda4f250d21c3e4f2a2da5f4cef829a434a4046"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Sun Dec 16 13:29:36 2007 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 28 14:58:08 2008 -0800"
      },
      "message": "[NETNS]: Add the netns_ipv4 struct\n\nThe ipv4 will store its parameters inside this structure.\nThis one is empty now, but it will be eventually filled.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "2aaef4e47fef8a6c0bc7fc5d9d3eea4af290e04c",
      "tree": "c78dfe5a76f1c19cf1167b94d623feed3f4cc9d5",
      "parents": [
        "a0a53c8ba95451feef6c1975016f0a1eb3044ad4"
      ],
      "author": {
        "name": "Denis V. Lunev",
        "email": "den@openvz.org",
        "time": "Tue Dec 11 04:19:54 2007 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 28 14:57:15 2008 -0800"
      },
      "message": "[NETNS]: separate af_packet netns data\n\nSigned-off-by: Denis V. Lunev \u003cden@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "a0a53c8ba95451feef6c1975016f0a1eb3044ad4",
      "tree": "0b64ce018878cbaa0bf5cdfa308d4a7e71218914",
      "parents": [
        "27147c9e6e8316af91dea487aa2c14b18dcff4cf"
      ],
      "author": {
        "name": "Denis V. Lunev",
        "email": "den@openvz.org",
        "time": "Tue Dec 11 04:19:17 2007 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 28 14:57:14 2008 -0800"
      },
      "message": "[NETNS]: struct net content re-work (v3)\n\nRecently David Miller and Herbert Xu pointed out that struct net becomes\noverbloated and un-maintainable. There are two solutions:\n- provide a pointer to a network subsystem definition from struct net.\n  This costs an additional dereferrence\n- place sub-system definition into the structure itself. This will speedup\n  run-time access at the cost of recompilation time\n\nThe second approach looks better for us. Other sub-systems will follow.\n\nSigned-off-by: Denis V. Lunev \u003cden@openvz.org\u003e\nAcked-by: Daniel Lezcano \u003cdlezcano@fr.ibm.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "b8e1f9b5c37e77cc8f978a58859b35fe5edd5542",
      "tree": "3c39da61f10eeb8b8e200ec68770128f1b57f25d",
      "parents": [
        "790a35328991b01181ff5624bdb084053b6fac54"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Sat Dec 08 00:12:33 2007 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 28 14:56:57 2008 -0800"
      },
      "message": "[NET] sysctl: make sysctl_somaxconn per-namespace\n\nJust move the variable on the struct net and adjust\nits usage.\n\nOthers sysctls from sys.net.core table are more\ndifficult to virtualize (i.e. make them per-namespace),\nbut I\u0027ll look at them as well a bit later.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@oenvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "024626e36d75fc8c6e32d50d4c68bfc3b8df5fdf",
      "tree": "ada6c8c215a5c4fa57e9e34f3b139609b95b2c5f",
      "parents": [
        "cbbb90e68cd073b8d63b491166066e347902b7e9"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Sat Dec 08 00:09:24 2007 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 28 14:56:56 2008 -0800"
      },
      "message": "[NET] sysctl: make the sys.net.core sysctls per-namespace\n\nMaking them per-namespace is required for the following\ntwo reasons:\n\n First, some ctl values have a per-namespace meaning.\n Second, making them writable from the sub-namespace\n is an isolation hole.\n\nSo I introduce the pernet operations to create these\ntables. For init_net I use the existing statically\ndeclared tables, for sub-namespace they are duplicated\nand the write bits are removed from the mode.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "1597fbc0faf88c42edb3fe42e92e53b83c3f120e",
      "tree": "17a56a96af0e00a1af452f0530997585803b6c7b",
      "parents": [
        "1d430b913c2e6293a80a4a422406bc9489a476ad"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Sat Dec 01 23:51:01 2007 +1100"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 28 14:55:23 2008 -0800"
      },
      "message": "[UNIX]: Make the unix sysctl tables per-namespace\n\nThis is the core.\n\n * add the ctl_table_header on the struct net;\n * make the unix_sysctl_register and _unregister clone the table;\n * moves calls to them into per-net init and exit callbacks;\n * move the .data pointer in the proper place.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nAcked-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "d392e49756a99ba51577d265d6db83e3f01c6ac8",
      "tree": "644610d6fc7ab79a9e8a7f76357062759ec8d690",
      "parents": [
        "97577e38284f48ca773392e2d401af2f6c95dc08"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Sat Dec 01 23:44:15 2007 +1100"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 28 14:55:22 2008 -0800"
      },
      "message": "[UNIX]: Move the sysctl_unix_max_dgram_qlen\n\nThis will make all the sub-namespaces always use the\ndefault value (10) and leave the tuning via sysctl\nto the init namespace only.\n\nPer-namespace tuning is coming.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nAcked-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "95bdfccb2bf4ea21c0065772c6a2c75cbaf6ad0d",
      "tree": "779993b29b8e348e14497496f3c9d318fb0b0d0e",
      "parents": [
        "e51b6ba077791f2f8c876022b37419be7a2ceec3"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Fri Nov 30 23:55:42 2007 +1100"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 28 14:55:18 2008 -0800"
      },
      "message": "[NET]: Implement the per network namespace sysctl infrastructure\n\nThe user interface is: register_net_sysctl_table and\nunregister_net_sysctl_table.  Very much like the current\ninterface except there is a network namespace parameter.\n\nWith this any sysctl registered with register_net_sysctl_table\nwill only show up to tasks in the same network namespace.\n\nAll other sysctls continue to be globally visible.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nCc: Serge Hallyn \u003cserue@us.ibm.com\u003e\nCc: Daniel Lezcano \u003cdlezcano@fr.ibm.com\u003e\nCc: Cedric Le Goater \u003cclg@fr.ibm.com\u003e\nCc: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "d12d01d6b4d197115c4d7736172b5b1ec8b1eb71",
      "tree": "480fc48e6ae404b59d2f62a7e3afc6ea88a5413c",
      "parents": [
        "4b3da706bbe4613d2fe4df8df4d965954ea98964"
      ],
      "author": {
        "name": "Denis V. Lunev",
        "email": "den@openvz.org",
        "time": "Mon Nov 19 22:28:35 2007 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 28 14:54:26 2008 -0800"
      },
      "message": "[NET]: Make AF_PACKET handle multiple network namespaces\n\nThis is done by making packet_sklist_lock and packet_sklist per\nnetwork namespace and adding an additional filter condition on\nreceived packets to ensure they came from the proper network\nnamespace.\n\nChanges from v1:\n- prohibit to call inet_dgram_ops.ioctl in other than init_net\n\nSigned-off-by: Denis V. Lunev \u003cden@openvz.org\u003e\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "97c53cacf00d1f5aa04adabfebcc806ca8b22b10",
      "tree": "6b7223df312aa27a5017c4d7c4d1e500a33ed8d8",
      "parents": [
        "b854272b3c732316676e9128f7b9e6f1e1ff88b0"
      ],
      "author": {
        "name": "Denis V. Lunev",
        "email": "den@openvz.org",
        "time": "Mon Nov 19 22:26:51 2007 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 28 14:54:25 2008 -0800"
      },
      "message": "[NET]: Make rtnetlink infrastructure network namespace aware (v3)\n\nAfter this patch none of the netlink callback support anything\nexcept the initial network namespace but the rtnetlink infrastructure\nnow handles multiple network namespaces.\n\nChanges from v2:\n- IPv6 addrlabel processing\n\nChanges from v1:\n- no need for special rtnl_unlock handling\n- fixed IPv6 ndisc\n\nSigned-off-by: Denis V. Lunev \u003cden@openvz.org\u003e\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "022cbae611a37eda80d498f8f379794c8ac3be47",
      "tree": "c6fe8fe45748127c916d32ec97601c435065d5cb",
      "parents": [
        "ed160e839d2e1118529e58b04d52dba703ca629c"
      ],
      "author": {
        "name": "Denis V. Lunev",
        "email": "den@openvz.org",
        "time": "Tue Nov 13 03:23:50 2007 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Nov 13 03:23:50 2007 -0800"
      },
      "message": "[NET]: Move unneeded data to initdata section.\n\nThis patch reverts Eric\u0027s commit 2b008b0a8e96b726c603c5e1a5a7a509b5f61e35\n\nIt diets .text \u0026 .data section of the kernel if CONFIG_NET_NS is not set.\nThis is safe after list operations cleanup.\n\nSigned-of-by: Denis V. Lunev \u003cden@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "d46557955f2a35e58772518775464cdf354b3245",
      "tree": "1b61906c5ce3ccabdbeb4cec1815c4e0cc5faa0c",
      "parents": [
        "1dba323b3f92cf4a475236763b0373cb7d49395d"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Thu Nov 01 00:43:49 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Nov 01 00:43:49 2007 -0700"
      },
      "message": "[NET]: Relax the reference counting of init_net_ns\n\nWhen the CONFIG_NET_NS is n there\u0027s no need in refcounting\nthe initial net namespace. So relax this code by making a\nstupid stubs for the \"n\" case.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "2b008b0a8e96b726c603c5e1a5a7a509b5f61e35",
      "tree": "80d71a763d3e8365805203cf22093783e64e1bbc",
      "parents": [
        "72998d8c84247817c4b8b05b0256f29453e435f5"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Fri Oct 26 22:54:53 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Oct 26 22:54:53 2007 -0700"
      },
      "message": "[NET]: Marking struct pernet_operations __net_initdata was inappropriate\n\nIt is not safe to to place struct pernet_operations in a special section.\nWe need struct pernet_operations to last until we call unregister_pernet_subsys.\nWhich doesn\u0027t happen until module unload.\n\nSo marking struct pernet_operations is a disaster for modules in two ways.\n- We discard it before we call the exit method it points to.\n- Because I keep struct pernet_operations on a linked list discarding\n  it for compiled in code removes elements in the middle of a linked\n  list and does horrible things for linked insert.\n\nSo this looks safe assuming __exit_refok is not discarded\nfor modules.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "4665079cbb2a3e17de82f2ab2940b9f97f37d65e",
      "tree": "8e51e9b9e6155eaeccf28783620a07b20a067d8d",
      "parents": [
        "d62a38d1ab350f787e4941e42a3d3e97971e38f5"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Mon Oct 08 20:38:39 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Oct 10 16:54:58 2007 -0700"
      },
      "message": "[NETNS]: Move some code into __init section when CONFIG_NET_NS\u003dn\n\nWith the net namespaces many code leaved the __init section,\nthus making the kernel occupy more memory than it did before.\nSince we have a config option that prohibits the namespace\ncreation, the functions that initialize/finalize some netns\nstuff are simply not needed and can be freed after the boot.\n\nCurrently, this is almost not noticeable, since few calls\nare no longer in __init, but when the namespaces will be\nmerged it will be possible to free more code. I propose to\nuse the __net_init, __net_exit and __net_initdata \"attributes\"\nfor functions/variables that are not used if the CONFIG_NET_NS\nis not set to save more space in memory.\n\nThe exiting functions cannot just reside in the __exit section,\nas noticed by David, since the init section will have\nreferences on it and the compilation will fail due to modpost\nchecks. These references can exist, since the init namespace\nnever dies and the exit callbacks are never called. So I\nintroduce the __exit_refok attribute just like it is already\ndone with the __init_refok.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "f4618d39a34dab316090263b42cd8799f31ce277",
      "tree": "75db202b492da1797145fde455b0c4c89cf41767",
      "parents": [
        "32db927686f6d475fc05b6229f82ed576c0c8096"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Wed Sep 26 22:40:08 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Oct 10 16:52:55 2007 -0700"
      },
      "message": "[NETNS]: Simplify the network namespace list locking rules.\n\nDenis V. Lunev \u003cden@sw.ru\u003e noticed that the locking rules\nfor the network namespace list are over complicated and broken.\n\nIn particular the current register_netdev_notifier currently\ndoes not take any lock making the for_each_net iteration racy\nwith network namespace creation and destruction. Oops.\n\nThe fact that we need to use for_each_net in rtnl_unlock() when\nthe rtnetlink support becomes per network namespace makes designing\nthe proper locking tricky.  In addition we need to be able to call\nrtnl_lock() and rtnl_unlock() when we have the net_mutex held.\n\nAfter thinking about it and looking at the alternatives carefully\nit looks like the simplest and most maintainable solution is\nto remove net_list_mutex altogether, and to use the rtnl_mutex instead.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "2774c7aba6c97a2535be3309a2209770953780b3",
      "tree": "9327c795707f6d723c6395c31e1c060e70b5e0db",
      "parents": [
        "0cc217e16cb8ca8ef2544363571fce94259900e0"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Wed Sep 26 22:10:56 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Oct 10 16:52:49 2007 -0700"
      },
      "message": "[NET]: Make the loopback device per network namespace.\n\nThis patch makes loopback_dev per network namespace.  Adding\ncode to create a different loopback device for each network\nnamespace and adding the code to free a loopback device\nwhen a network namespace exits.\n\nThis patch modifies all users the loopback_dev so they\naccess it as init_net.loopback_dev, keeping all of the\ncode compiling and working.  A later pass will be needed to\nupdate the users to use something other than the initial network\nnamespace.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "9dd776b6d7b0b85966b6ddd03e2b2aae59012ab1",
      "tree": "ed92aee1f242bb31a0965a4156063eac916ae15e",
      "parents": [
        "8b41d1887db718be9a2cd9e18c58ce25a4c7fd93"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Wed Sep 26 22:04:26 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Oct 10 16:52:46 2007 -0700"
      },
      "message": "[NET]: Add network namespace clone \u0026 unshare support.\n\nThis patch allows you to create a new network namespace\nusing sys_clone, or sys_unshare.\n\nAs the network namespace is still experimental and under development\nclone and unshare support is only made available when CONFIG_NET_NS is\nselected at compile time.\n\nAs this patch introduces network namespace support into code paths\nthat exist when the CONFIG_NET is not selected there are a few\nadditions made to net_namespace.h to allow a few more functions\nto be used when the networking stack is not compiled in.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "077130c0cf7d5ba1992f5b51b96136d7b1c8aad5",
      "tree": "c8fd2622e7d633cc504c7543b55e25bd6d99a2fa",
      "parents": [
        "4fabcd7118162e36eea5c53e8895ecc13762bef3"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Thu Sep 13 09:18:57 2007 +0200"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Oct 10 16:49:22 2007 -0700"
      },
      "message": "[NET]: Fix race when opening a proc file while a network namespace is exiting.\n\nThe problem:  proc_net files remember which network namespace the are\nagainst but do not remember hold a reference count (as that would pin\nthe network namespace).   So we currently have a small window where\nthe reference count on a network namespace may be incremented when opening\na /proc file when it has already gone to zero.\n\nTo fix this introduce maybe_get_net and get_proc_net.\n\nmaybe_get_net increments the network namespace reference count only if it is\ngreater then zero, ensuring we don\u0027t increment a reference count after it\nhas gone to zero.\n\nget_proc_net handles all of the magic to go from a proc inode to the network\nnamespace instance and call maybe_get_net on it.\n\nPROC_NET the old accessor is removed so that we don\u0027t get confused and use\nthe wrong helper function.\n\nThen I fix up the callers to use get_proc_net and handle the case case\nwhere get_proc_net returns NULL.  In that case I return -ENXIO because\neffectively the network namespace has already gone away so the files\nwe are trying to access don\u0027t exist anymore.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nAcked-by: Paul E. McKenney \u003cpaulmck@us.ibm.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "4fabcd7118162e36eea5c53e8895ecc13762bef3",
      "tree": "29a1b009e9bbd52bcce413f9b06c892b09783ccd",
      "parents": [
        "e08b09983fe9cf379faf1aefdf9164268d4610e7"
      ],
      "author": {
        "name": "Daniel Lezcano",
        "email": "dlezcano@fr.ibm.com",
        "time": "Thu Sep 13 09:16:29 2007 +0200"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Oct 10 16:49:21 2007 -0700"
      },
      "message": "[NETNS]: Fix allnoconfig compilation error.\n\nWhen CONFIG_NET\u003dno, init_net is unresolved because net_namespace.c\nis not compiled and the include pull init_net definition.\n\nThis problem was very similar with the ipc namespace where the kernel\ncan be compiled with SYSV ipc out.\n\nThis patch fix that defining a macro which simply remove init_net\ninitialization from nsproxy namespace aggregator.\n\nCompiled and booted on qemu-i386 with CONFIG_NET\u003dno and CONFIG_NET\u003dyes.\n\nSigned-off-by: Daniel Lezcano \u003cdlezcano@fr.ibm.com\u003e\nAcked-by: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "881d966b48b035ab3f3aeaae0f3d3f9b584f45b2",
      "tree": "c579d59a4107cbbe9e2b85939bc0d496b815c887",
      "parents": [
        "b4b510290b056b86611757ce1175a230f1080f53"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Mon Sep 17 11:56:21 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Oct 10 16:49:10 2007 -0700"
      },
      "message": "[NET]: Make the device list and device lookups per namespace.\n\nThis patch makes most of the generic device layer network\nnamespace safe.  This patch makes dev_base_head a\nnetwork namespace variable, and then it picks up\na few associated variables.  The functions:\ndev_getbyhwaddr\ndev_getfirsthwbytype\ndev_get_by_flags\ndev_get_by_name\n__dev_get_by_name\ndev_get_by_index\n__dev_get_by_index\ndev_ioctl\ndev_ethtool\ndev_load\nwireless_process_ioctl\n\nwere modified to take a network namespace argument, and\ndeal with it.\n\nvlan_ioctl_set and brioctl_set were modified so their\nhooks will receive a network namespace argument.\n\nSo basically anthing in the core of the network stack that was\naffected to by the change of dev_base was modified to handle\nmultiple network namespaces.  The rest of the network stack was\nsimply modified to explicitly use \u0026init_net the initial network\nnamespace.  This can be fixed when those components of the network\nstack are modified to handle multiple network namespaces.\n\nFor now the ifindex generator is left global.\n\nFundametally ifindex numbers are per namespace, or else\nwe will have corner case problems with migration when\nwe get that far.\n\nAt the same time there are assumptions in the network stack\nthat the ifindex of a network device won\u0027t change.  Making\nthe ifindex number global seems a good compromise until\nthe network stack can cope with ifindex changes when\nyou change namespaces, and the like.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "457c4cbc5a3dde259d2a1f15d5f9785290397267",
      "tree": "a2ceee88780cbce27433b9a4434b3e9251efd81a",
      "parents": [
        "07feaebfcc10cd35e745c7073667935246494bee"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Wed Sep 12 12:01:34 2007 +0200"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Oct 10 16:49:06 2007 -0700"
      },
      "message": "[NET]: Make /proc/net per network namespace\n\nThis patch makes /proc/net per network namespace.  It modifies the global\nvariables proc_net and proc_net_stat to be per network namespace.\nThe proc_net file helpers are modified to take a network namespace argument,\nand all of their callers are fixed to pass \u0026init_net for that argument.\nThis ensures that all of the /proc/net files are only visible and\nusable in the initial network namespace until the code behind them\nhas been updated to be handle multiple network namespaces.\n\nMaking /proc/net per namespace is necessary as at least some files\nin /proc/net depend upon the set of network devices which is per\nnetwork namespace, and even more files in /proc/net have contents\nthat are relevant to a single network namespace.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "5f256becd868bf63b70da8f2769033d6734670e9",
      "tree": "0a3550303488e7740f349e7b5f7b296dfeb276ef",
      "parents": [
        "32da477a5bfe96b6dfc8960e0d22d89ca09fd10a"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Wed Sep 12 11:50:50 2007 +0200"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Oct 10 16:49:03 2007 -0700"
      },
      "message": "[NET]: Basic network namespace infrastructure.\n\nThis is the basic infrastructure needed to support network\nnamespaces.  This infrastructure is:\n- Registration functions to support initializing per network\n  namespace data when a network namespaces is created or destroyed.\n\n- struct net.  The network namespace data structure.\n  This structure will grow as variables are made per network\n  namespace but this is the minimal starting point.\n\n- Functions to grab a reference to the network namespace.\n  I provide both get/put functions that keep a network namespace\n  from being freed.  And hold/release functions serve as weak references\n  and will warn if their count is not zero when the data structure\n  is freed.  Useful for dealing with more complicated data structures\n  like the ipv4 route cache.\n\n- A list of all of the network namespaces so we can iterate over them.\n\n- A slab for the network namespace data structure allowing leaks\n  to be spotted.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    }
  ]
}
