)]}'
{
  "commit": "82a6c5af0db02529f1fa89159a0654d9da763bd7",
  "tree": "58842e008096a503b522fc2290bd38144192a917",
  "parents": [
    "92fe9a3689de705d539bd08e50a3dce81fcc4e33"
  ],
  "author": {
    "name": "Barret Rhoden",
    "email": "brho@cs.berkeley.edu",
    "time": "Wed Aug 23 17:48:29 2017 -0400"
  },
  "committer": {
    "name": "Barret Rhoden",
    "email": "brho@cs.berkeley.edu",
    "time": "Wed Aug 23 17:48:29 2017 -0400"
  },
  "message": "Fix deadlock in __hpf()\n\nWhen erroring out, we were not unlocking first.\n\nAs a side note, if you give the kernel a virtual address and tell it to use\nit for an operation (e.g. read(fd, VIRT_ADDR, amt), that memory should be\nanonymous memory.  At the very least, it must be soft-faultable (i.e.  not\na file that isn\u0027t in the page cache).  Considering there\u0027s limited control\nover that, I currently don\u0027t allow that either.  So something like this\nwill fail:\n\n\tva \u003d mmap(..., fd, 0)\n\tread(another_fd, va, amt);\n\nThis restriction is stricter than Linux, and is because of userspace\u0027s role\nin managing its own memory - it\u0027s up to the user to know what is or isn\u0027t\nresident.\n\nSigned-off-by: Barret Rhoden \u003cbrho@cs.berkeley.edu\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "91b3d768feae9b9ef3fc92c05d786957c1e45197",
      "old_mode": 33188,
      "old_path": "kern/src/mm.c",
      "new_id": "906d297f8d4cc5b027ce0bf2c7a00d34f58b1e67",
      "new_mode": 33188,
      "new_path": "kern/src/mm.c"
    }
  ]
}
