)]}'
{
  "commit": "2b1e300a9dfc3196ccddf6f1d74b91b7af55e416",
  "tree": "3181bf4f2c27d185c78b26642f35ed00cb280943",
  "parents": [
    "e03ba84adb62fbc6049325a5bc00ef6932fa5e39"
  ],
  "author": {
    "name": "Eric W. Biederman",
    "email": "ebiederm@xmission.com",
    "time": "Sun Dec 02 00:33:17 2007 +1100"
  },
  "committer": {
    "name": "Herbert Xu",
    "email": "herbert@gondor.apana.org.au",
    "time": "Sun Dec 02 00:33:17 2007 +1100"
  },
  "message": "[NETNS]: Fix /proc/net breakage\n\nWell I clearly goofed when I added the initial network namespace support\nfor /proc/net.  Currently things work but there are odd details visible to\nuser space, even when we have a single network namespace.\n\nSince we do not cache proc_dir_entry dentries at the moment we can just\nmodify -\u003elookup to return a different directory inode depending on the\nnetwork namespace of the process looking at /proc/net, replacing the\ncurrent technique of using a magic and fragile follow_link method.\n\nTo accomplish that this patch:\n- introduces a shadow_proc method to allow different dentries to\n  be returned from proc_lookup.\n- Removes the old /proc/net follow_link magic\n- Fixes a weakness in our not caching of proc generic dentries.\n\nAs shadow_proc uses a task struct to decided which dentry to return we can\ngo back later and fix the proc generic caching without modifying any code\nthat uses the shadow_proc method.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nCc: \"Rafael J. Wysocki\" \u003crjw@sisk.pl\u003e\nCc: Pavel Machek \u003cpavel@ucw.cz\u003e\nCc: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "a9806bc21ec3d5480b8b6695c6d3f6fb82a203ad",
      "old_mode": 33188,
      "old_path": "fs/proc/generic.c",
      "new_id": "c2b752341f89eeea1f71900fb73d4ffaee81e1a4",
      "new_mode": 33188,
      "new_path": "fs/proc/generic.c"
    },
    {
      "type": "modify",
      "old_id": "131f9c68be5f1d3b2fa036189f7864ca371c63ae",
      "old_mode": 33188,
      "old_path": "fs/proc/proc_net.c",
      "new_id": "0afe21ee0607e6b5fe883ad5a3c93a8742d8b585",
      "new_mode": 33188,
      "new_path": "fs/proc/proc_net.c"
    },
    {
      "type": "modify",
      "old_id": "1273c6ec535c96c1f5151ca47bcc0e9d1ad8db66",
      "old_mode": 33188,
      "old_path": "include/linux/proc_fs.h",
      "new_id": "523528d237b045715192f0696529b557c9055cc6",
      "new_mode": 33188,
      "new_path": "include/linux/proc_fs.h"
    }
  ]
}
