)]}'
{
  "commit": "8f4e2101fd7df9031a754eedb82e2060b51f8c45",
  "tree": "624db00c6160d70376a57447b45b935b293e396b",
  "parents": [
    "b462705ac679f6195d1b23a752cda592d9107495"
  ],
  "author": {
    "name": "Hugh Dickins",
    "email": "hugh@veritas.com",
    "time": "Sat Oct 29 18:16:26 2005 -0700"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@g5.osdl.org",
    "time": "Sat Oct 29 21:40:40 2005 -0700"
  },
  "message": "[PATCH] mm: page fault handler locking\n\nOn the page fault path, the patch before last pushed acquiring the\npage_table_lock down to the head of handle_pte_fault (though it\u0027s also taken\nand dropped earlier when a new page table has to be allocated).\n\nNow delete that line, read \"entry \u003d *pte\" without it, and go off to this or\nthat page fault handler on the basis of this unlocked peek.  Usually the\nhandler can proceed without the lock, relying on the subsequent locked\npte_same or pte_none test to back out when necessary; though do_wp_page needs\nthe lock immediately, and do_file_page doesn\u0027t check (if there\u0027s a race,\ninstall_page just zaps the entry and reinstalls it).\n\nBut on those architectures (notably i386 with PAE) whose pte is too big to be\nread atomically, if SMP or preemption is enabled, do_swap_page and\ndo_file_page might cause irretrievable damage if passed a Frankenstein entry\nstitched together from unrelated parts.  In those configs, \"pte_unmap_same\"\nhas to take page_table_lock, validate orig_pte still the same, and drop\npage_table_lock before unmapping, before proceeding.\n\nUse pte_offset_map_lock and pte_unmap_unlock throughout the handlers; but lock\navoidance leaves more lone maps and unmaps than elsewhere.\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": "a40e4b1cee4ff13cdca07b10a6afffa6933fcf30",
      "old_mode": 33188,
      "old_path": "mm/memory.c",
      "new_id": "24ba688876d636275811ab8a139e9eb6298059a5",
      "new_mode": 33188,
      "new_path": "mm/memory.c"
    }
  ]
}
