)]}'
{
  "commit": "06c67befeeb16f2995c11b0e04a348103ddbfab1",
  "tree": "aad64fa9d2d03b1479885d1c703ccc5890b12afe",
  "parents": [
    "49c0dab7e6000888b616bedcbbc8cd4710331610"
  ],
  "author": {
    "name": "Lennert Buytenhek",
    "email": "buytenh@wantstofly.org",
    "time": "Mon Jul 10 04:45:27 2006 -0700"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@g5.osdl.org",
    "time": "Mon Jul 10 13:24:25 2006 -0700"
  },
  "message": "[PATCH] make valid_mmap_phys_addr_range() take a pfn\n\nNewer ARMs have a 40 bit physical address space, but mapping physical\nmemory above 4G needs a special page table format which we (currently?) do\nnot use for userspace mappings, so what happens instead is that mapping an\naddress \u003e\u003d 4G will happily discard the upper bits and wrap.\n\nThere is a valid_mmap_phys_addr_range() arch hook where we could check for\n\u003e\u003d 4G addresses and deny the mapping, but this hook takes an unsigned long\naddress:\n\n\tstatic inline int valid_mmap_phys_addr_range(unsigned long addr, size_t size);\n\nAnd drivers/char/mem.c:mmap_mem() calls it like this:\n\n\tstatic int mmap_mem(struct file * file, struct vm_area_struct * vma)\n\t{\n\t\tsize_t size \u003d vma-\u003evm_end - vma-\u003evm_start;\n\n\t\tif (!valid_mmap_phys_addr_range(vma-\u003evm_pgoff \u003c\u003c PAGE_SHIFT, size))\n\nSo that\u0027s not much help either.\n\nThis patch makes the hook take a pfn instead of a phys address.\n\nSigned-off-by: Lennert Buytenhek \u003cbuytenh@wantstofly.org\u003e\nCc: Bjorn Helgaas \u003cbjorn.helgaas@hp.com\u003e\nCc: \"Luck, Tony\" \u003ctony.luck@intel.com\u003e\nCc: Russell King \u003crmk@arm.linux.org.uk\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": "b13c0555c3ba4a57989178de6f8b7633fcd85dc7",
      "old_mode": 33188,
      "old_path": "arch/ia64/kernel/efi.c",
      "new_id": "e4bfa9dafbcebf88e2d815cd30197ee82eceeb28",
      "new_mode": 33188,
      "new_path": "arch/ia64/kernel/efi.c"
    },
    {
      "type": "modify",
      "old_id": "276512fd8922d33ef23c3429ce23631607dd86bb",
      "old_mode": 33188,
      "old_path": "arch/ia64/pci/pci.c",
      "new_id": "60b45e79f080dbf11f60e7deb362c1efd37cbc0f",
      "new_mode": 33188,
      "new_path": "arch/ia64/pci/pci.c"
    },
    {
      "type": "modify",
      "old_id": "e97c32ceb7962b745d3ea6d164a353f930686c74",
      "old_mode": 33188,
      "old_path": "drivers/char/mem.c",
      "new_id": "917b20402664aad5ccf970255f65f15974f06eab",
      "new_mode": 33188,
      "new_path": "drivers/char/mem.c"
    },
    {
      "type": "modify",
      "old_id": "781ee2c7e8c3aa37b9bfd7ea9046df96e9b3f02b",
      "old_mode": 33188,
      "old_path": "include/asm-ia64/io.h",
      "new_id": "43bfff6c6b87fffbc6e36cac2aea43e7cebf7351",
      "new_mode": 33188,
      "new_path": "include/asm-ia64/io.h"
    }
  ]
}
