)]}'
{
  "commit": "925d1c401fa6cfd0df5d2e37da8981494ccdec07",
  "tree": "4f3b7a09311cd99783b822350628125e44f9902d",
  "parents": [
    "e93b4ea20adb20f1f1f07f10ba5d7dd739d2843e"
  ],
  "author": {
    "name": "Matt Helsley",
    "email": "matthltc@us.ibm.com",
    "time": "Tue Apr 29 01:01:36 2008 -0700"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@linux-foundation.org",
    "time": "Tue Apr 29 08:06:17 2008 -0700"
  },
  "message": "procfs task exe symlink\n\nThe kernel implements readlink of /proc/pid/exe by getting the file from\nthe first executable VMA.  Then the path to the file is reconstructed and\nreported as the result.\n\nBecause of the VMA walk the code is slightly different on nommu systems.\nThis patch avoids separate /proc/pid/exe code on nommu systems.  Instead of\nwalking the VMAs to find the first executable file-backed VMA we store a\nreference to the exec\u0027d file in the mm_struct.\n\nThat reference would prevent the filesystem holding the executable file\nfrom being unmounted even after unmapping the VMAs.  So we track the number\nof VM_EXECUTABLE VMAs and drop the new reference when the last one is\nunmapped.  This avoids pinning the mounted filesystem.\n\n[akpm@linux-foundation.org: improve comments]\n[yamamoto@valinux.co.jp: fix dup_mmap]\nSigned-off-by: Matt Helsley \u003cmatthltc@us.ibm.com\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc:\"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: YAMAMOTO Takashi \u003cyamamoto@valinux.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "c12cc362fd3bc2a230716810c9edab2552335512",
      "old_mode": 33188,
      "old_path": "fs/binfmt_flat.c",
      "new_id": "3b40d45a3a16501ca0ea28563b8049c6e3718698",
      "new_mode": 33188,
      "new_path": "fs/binfmt_flat.c"
    },
    {
      "type": "modify",
      "old_id": "711bc45d789c54886d1836ab0845b10bd7884714",
      "old_mode": 33188,
      "old_path": "fs/exec.c",
      "new_id": "a13883903ee98587951681e143c36d9712460515",
      "new_mode": 33188,
      "new_path": "fs/exec.c"
    },
    {
      "type": "modify",
      "old_id": "c5e412a00b170e5294964505726b85f6cff93309",
      "old_mode": 33188,
      "old_path": "fs/proc/base.c",
      "new_id": "b48ddb1199459530560a35cfeda4271cda3698b2",
      "new_mode": 33188,
      "new_path": "fs/proc/base.c"
    },
    {
      "type": "modify",
      "old_id": "bc72f5c8c47d34704cb6a76ef450e1bd6dc84f0d",
      "old_mode": 33188,
      "old_path": "fs/proc/internal.h",
      "new_id": "45abb980398830959110404b6a9181e957c5953d",
      "new_mode": 33188,
      "new_path": "fs/proc/internal.h"
    },
    {
      "type": "modify",
      "old_id": "7415eeb7cc3a75dda762e78052e49a77f6a509ff",
      "old_mode": 33188,
      "old_path": "fs/proc/task_mmu.c",
      "new_id": "e2b8e769f510d676997698b8fd28ef4346478d2c",
      "new_mode": 33188,
      "new_path": "fs/proc/task_mmu.c"
    },
    {
      "type": "modify",
      "old_id": "8011528518bd7e73d022498466e79257bd2695ec",
      "old_mode": 33188,
      "old_path": "fs/proc/task_nommu.c",
      "new_id": "4b733f108455273ce52ce73c4f410d74a9ea2b2e",
      "new_mode": 33188,
      "new_path": "fs/proc/task_nommu.c"
    },
    {
      "type": "modify",
      "old_id": "fef602d82722f534aa560884479215df99457630",
      "old_mode": 33188,
      "old_path": "include/linux/mm.h",
      "new_id": "c31a9cd2a30e03a2672b8fa299c4d6a24a3fa186",
      "new_mode": 33188,
      "new_path": "include/linux/mm.h"
    },
    {
      "type": "modify",
      "old_id": "bc97bd54f6060f4ebc023c6ba371498c83a3559c",
      "old_mode": 33188,
      "old_path": "include/linux/mm_types.h",
      "new_id": "eb7c16cc95596fae106848e0a66b3b04f6f6b68a",
      "new_mode": 33188,
      "new_path": "include/linux/mm_types.h"
    },
    {
      "type": "modify",
      "old_id": "9b6c935f69cf6d1986677b968bb17c2ca000e4b0",
      "old_mode": 33188,
      "old_path": "include/linux/proc_fs.h",
      "new_id": "65f2299b772b7bf004a5ea3456955dd015aff714",
      "new_mode": 33188,
      "new_path": "include/linux/proc_fs.h"
    },
    {
      "type": "modify",
      "old_id": "de5c16c6b6ecd10b6898f2fc47062c987d851d36",
      "old_mode": 33188,
      "old_path": "kernel/fork.c",
      "new_id": "068ffe007529155dfc7b6d199c2afbd9219d8b74",
      "new_mode": 33188,
      "new_path": "kernel/fork.c"
    },
    {
      "type": "modify",
      "old_id": "677d184b0d42d0d9d10311569872589b7a1e2ef4",
      "old_mode": 33188,
      "old_path": "mm/mmap.c",
      "new_id": "fac66337da2a3bcd3a003ba9d33096938c17fb57",
      "new_mode": 33188,
      "new_path": "mm/mmap.c"
    },
    {
      "type": "modify",
      "old_id": "1d32fe89d57b18642283a419600828584354d469",
      "old_mode": 33188,
      "old_path": "mm/nommu.c",
      "new_id": "ef8c62cec697a06495b13f2658aff4e30000065c",
      "new_mode": 33188,
      "new_path": "mm/nommu.c"
    }
  ]
}
