)]}'
{
  "commit": "dec4ad86c2fbea062e9ef9caa6d6e79f7c5e0b12",
  "tree": "9882d3b1f59fb293cf0f70afc80bdc7bb1e0021e",
  "parents": [
    "4a58448b0a375f7198de34dd0d3e2881afeaf025"
  ],
  "author": {
    "name": "David Gibson",
    "email": "david@gibson.dropbear.id.au",
    "time": "Thu Aug 30 23:56:40 2007 -0700"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@woody.linux-foundation.org",
    "time": "Fri Aug 31 01:42:23 2007 -0700"
  },
  "message": "hugepage: fix broken check for offset alignment in hugepage mappings\n\nFor hugepage mappings, the file offset, like the address and size, needs to\nbe aligned to the size of a hugepage.\n\nIn commit 68589bc353037f233fe510ad9ff432338c95db66, the check for this was\nmoved into prepare_hugepage_range() along with the address and size checks.\n But since BenH\u0027s rework of the get_unmapped_area() paths leading up to\ncommit 4b1d89290b62bb2db476c94c82cf7442aab440c8, prepare_hugepage_range()\nis only called for MAP_FIXED mappings, not for other mappings.  This means\nwe\u0027re no longer ever checking for an aligned offset - I\u0027ve confirmed that\nmmap() will (apparently) succeed with a misaligned offset on both powerpc\nand i386 at least.\n\nThis patch restores the check, removing it from prepare_hugepage_range()\nand putting it back into hugetlbfs_file_mmap().  I\u0027m putting it there,\nrather than in the get_unmapped_area() path so it only needs to go in one\nplace, than separately in the half-dozen or so arch-specific\nimplementations of hugetlb_get_unmapped_area().\n\nSigned-off-by: David Gibson \u003cdavid@gibson.dropbear.id.au\u003e\nCc: Adam Litke \u003cagl@us.ibm.com\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\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": "efdf95ac8031daf0a8c5d865575e1960890bd156",
      "old_mode": 33188,
      "old_path": "arch/i386/mm/hugetlbpage.c",
      "new_id": "6c06d9c0488ec28c05d45c226d77c1050a7394a8",
      "new_mode": 33188,
      "new_path": "arch/i386/mm/hugetlbpage.c"
    },
    {
      "type": "modify",
      "old_id": "d22861c5b04ca596e4beebbf295f66955bef1606",
      "old_mode": 33188,
      "old_path": "arch/ia64/mm/hugetlbpage.c",
      "new_id": "a9ff685aea25acfbd6547d62d3845fb8016c96a6",
      "new_mode": 33188,
      "new_path": "arch/ia64/mm/hugetlbpage.c"
    },
    {
      "type": "modify",
      "old_id": "eaba9b70b184ef67d47fbf76bdc9d92ea4314754",
      "old_mode": 33188,
      "old_path": "arch/sparc64/mm/hugetlbpage.c",
      "new_id": "6cfab2e4d340945dd63445f71d3caa361b6701a9",
      "new_mode": 33188,
      "new_path": "arch/sparc64/mm/hugetlbpage.c"
    },
    {
      "type": "modify",
      "old_id": "c848a191525db4776bec08970538449c442ffb81",
      "old_mode": 33188,
      "old_path": "fs/hugetlbfs/inode.c",
      "new_id": "950c2fbb815bc35760163020c0133046ff4d1255",
      "new_mode": 33188,
      "new_path": "fs/hugetlbfs/inode.c"
    },
    {
      "type": "modify",
      "old_id": "e6a71c82d204699b6a18226e261a7beda4463ed7",
      "old_mode": 33188,
      "old_path": "include/linux/hugetlb.h",
      "new_id": "3a19b032c0eb6ecfe887fad15b2adaddf3969b83",
      "new_mode": 33188,
      "new_path": "include/linux/hugetlb.h"
    }
  ]
}
