)]}'
{
  "commit": "dfef6dcd35cb4a251f6322ca9b2c06f0bb1aa1f4",
  "tree": "65e8a25d4ed913658db35c4b97ab0a021c2124eb",
  "parents": [
    "1858efd471624ecb37e6b5462cab8076f47d1cee"
  ],
  "author": {
    "name": "Al Viro",
    "email": "viro@zeniv.linux.org.uk",
    "time": "Tue Mar 08 01:25:28 2011 -0500"
  },
  "committer": {
    "name": "Al Viro",
    "email": "viro@zeniv.linux.org.uk",
    "time": "Tue Mar 08 02:22:27 2011 -0500"
  },
  "message": "unfuck proc_sysctl -\u003ed_compare()\n\na) struct inode is not going to be freed under -\u003ed_compare();\nhowever, the thing PROC_I(inode)-\u003esysctl points to just might.\nFortunately, it\u0027s enough to make freeing that sucker delayed,\nprovided that we don\u0027t step on its -\u003eunregistering, clear\nthe pointer to it in PROC_I(inode) before dropping the reference\nand check if it\u0027s NULL in -\u003ed_compare().\n\nb) I\u0027m not sure that we *can* walk into NULL inode here (we recheck\ndentry-\u003eseq between verifying that it\u0027s still hashed / fetching\ndentry-\u003ed_inode and passing it to -\u003ed_compare() and there\u0027s no\nnegative hashed dentries in /proc/sys/*), but if we can walk into\nthat, we really should not have -\u003ed_compare() return 0 on it!\nSaid that, I really suspect that this check can be simply killed.\nNick?\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "176ce4cda68a113d10e3107830730848dc0cd7f5",
      "old_mode": 33188,
      "old_path": "fs/proc/inode.c",
      "new_id": "d6a7ca1fdac53dfdf47fb7109207c0ec7597a3e7",
      "new_mode": 33188,
      "new_path": "fs/proc/inode.c"
    },
    {
      "type": "modify",
      "old_id": "09a1f92a34ef2fce52b07cf394d040708e86a22b",
      "old_mode": 33188,
      "old_path": "fs/proc/proc_sysctl.c",
      "new_id": "8eb2522111c5d8033a404a0d366832ea66e2d3fc",
      "new_mode": 33188,
      "new_path": "fs/proc/proc_sysctl.c"
    },
    {
      "type": "modify",
      "old_id": "7bb5cb64f3b84798db8023be585755d94af785a0",
      "old_mode": 33188,
      "old_path": "include/linux/sysctl.h",
      "new_id": "bb7c2b086fa458845ca675b93f2a51bf35f8e81e",
      "new_mode": 33188,
      "new_path": "include/linux/sysctl.h"
    },
    {
      "type": "modify",
      "old_id": "0f1bd83db98523333b9fabde37d200512b20b77e",
      "old_mode": 33188,
      "old_path": "kernel/sysctl.c",
      "new_id": "4eed0af5d1442c6ec4cfbd2f6c82e48debdca677",
      "new_mode": 33188,
      "new_path": "kernel/sysctl.c"
    }
  ]
}
