)]}'
{
  "commit": "508034a32b819a2d40aa7ac0dbc8cd2e044c2de6",
  "tree": "906a8f0095af24f403b30d649d3ec1ffb4ff2f50",
  "parents": [
    "8f4f8c164cb4af1432cc25eda82928ea4519ba72"
  ],
  "author": {
    "name": "Hugh Dickins",
    "email": "hugh@veritas.com",
    "time": "Sat Oct 29 18:16:30 2005 -0700"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@g5.osdl.org",
    "time": "Sat Oct 29 21:40:41 2005 -0700"
  },
  "message": "[PATCH] mm: unmap_vmas with inner ptlock\n\nRemove the page_table_lock from around the calls to unmap_vmas, and replace\nthe pte_offset_map in zap_pte_range by pte_offset_map_lock: all callers are\nnow safe to descend without page_table_lock.\n\nDon\u0027t attempt fancy locking for hugepages, just take page_table_lock in\nunmap_hugepage_range.  Which makes zap_hugepage_range, and the hugetlb test in\nzap_page_range, redundant: unmap_vmas calls unmap_hugepage_range anyway.  Nor\ndoes unmap_vmas have much use for its mm arg now.\n\nThe tlb_start_vma and tlb_end_vma in unmap_page_range are now called without\npage_table_lock: if they\u0027re implemented at all, they typically come down to\nflush_cache_range (usually done outside page_table_lock) and flush_tlb_range\n(which we already audited for the mprotect case).\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "3a9b6d179cbdf492da7924012fd85aa8241a64f1",
      "old_mode": 33188,
      "old_path": "fs/hugetlbfs/inode.c",
      "new_id": "a826a8add5e30b55bbded97894a34cde027e5fe3",
      "new_mode": 33188,
      "new_path": "fs/hugetlbfs/inode.c"
    },
    {
      "type": "modify",
      "old_id": "d664330d900e2c8ff0bea6d895657f90c756511d",
      "old_mode": 33188,
      "old_path": "include/linux/hugetlb.h",
      "new_id": "0cea162b08c0a4fc601a96f92fcb09d90dc8f946",
      "new_mode": 33188,
      "new_path": "include/linux/hugetlb.h"
    },
    {
      "type": "modify",
      "old_id": "d4c3512e7db41be32b816f57562bce2164d21ad5",
      "old_mode": 33188,
      "old_path": "include/linux/mm.h",
      "new_id": "972e2ce8e07c1e8803add7af9186b6c36fd0db46",
      "new_mode": 33188,
      "new_path": "include/linux/mm.h"
    },
    {
      "type": "modify",
      "old_id": "ea0826ff2663665d2b92139339856815c4190eb9",
      "old_mode": 33188,
      "old_path": "mm/hugetlb.c",
      "new_id": "f29b7dc02c3998c752d46eed9cd10b6ec50a125e",
      "new_mode": 33188,
      "new_path": "mm/hugetlb.c"
    },
    {
      "type": "modify",
      "old_id": "4ea89a2e3a833209561c793e20e00e708769a83a",
      "old_mode": 33188,
      "old_path": "mm/memory.c",
      "new_id": "622a4ef5409f3e3620a88c20d68193ca803344e1",
      "new_mode": 33188,
      "new_path": "mm/memory.c"
    },
    {
      "type": "modify",
      "old_id": "fa35323a3c5b94a9e5290b93fd43f1717b3cb173",
      "old_mode": 33188,
      "old_path": "mm/mmap.c",
      "new_id": "5ecc2cf3e1d7fe27ef49787cb0909d1c3f96eebf",
      "new_mode": 33188,
      "new_path": "mm/mmap.c"
    }
  ]
}
