)]}'
{
  "commit": "7b7bf499f79de3f6c85a340c8453a78789523f85",
  "tree": "1d0bf7ae8d5befe135fb7e7cfc455656a0ec7b34",
  "parents": [
    "4db70f73e56961b9bcdfd0c36c62847a18b7dbb5"
  ],
  "author": {
    "name": "Will Deacon",
    "email": "will.deacon@arm.com",
    "time": "Thu May 19 13:21:14 2011 +0100"
  },
  "committer": {
    "name": "Russell King",
    "email": "rmk+kernel@arm.linux.org.uk",
    "time": "Thu May 26 10:23:24 2011 +0100"
  },
  "message": "ARM: 6913/1: sparsemem: allow pfn_valid to be overridden when using SPARSEMEM\n\nIn commit eb33575c (\"[ARM] Double check memmap is actually valid with a\nmemmap has unexpected holes V2\"), a new function, memmap_valid_within,\nwas introduced to mmzone.h so that holes in the memmap which pass\npfn_valid in SPARSEMEM configurations can be detected and avoided.\n\nThe fix to this problem checks that the pfn \u003c-\u003e page linkages are\ncorrect by calculating the page for the pfn and then checking that\npage_to_pfn on that page returns the original pfn. Unfortunately, in\nSPARSEMEM configurations, this results in reading from the page flags to\ndetermine the correct section. Since the memmap here has been freed,\njunk is read from memory and the check is no longer robust.\n\nIn the best case, reading from /proc/pagetypeinfo will give you the\nwrong answer. In the worst case, you get SEGVs, Kernel OOPses and hung\nCPUs. Furthermore, ioremap implementations that use pfn_valid to\ndisallow the remapping of normal memory will break.\n\nThis patch allows architectures to provide their own pfn_valid function\ninstead of using the default implementation used by sparsemem. The\narchitecture-specific version is aware of the memmap state and will\nreturn false when passed a pfn for a freed page within a valid section.\n\nAcked-by: Mel Gorman \u003cmgorman@suse.de\u003e\nAcked-by: Catalin Marinas \u003ccatalin.marinas@arm.com\u003e\nTested-by: H Hartley Sweeten \u003chsweeten@visionengravers.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\nSigned-off-by: Russell King \u003crmk+kernel@arm.linux.org.uk\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "7275009686e64a9336ff6fb902d57c6363f1d4fd",
      "old_mode": 33188,
      "old_path": "arch/arm/Kconfig",
      "new_id": "5be55d950ab5428586b14608bce5dc379ef30560",
      "new_mode": 33188,
      "new_path": "arch/arm/Kconfig"
    },
    {
      "type": "modify",
      "old_id": "f51a69595f6ed53bc2d46d07a146f8b08ac6b83d",
      "old_mode": 33188,
      "old_path": "arch/arm/include/asm/page.h",
      "new_id": "ac75d08488892f22dace530691de9a001d884f48",
      "new_mode": 33188,
      "new_path": "arch/arm/include/asm/page.h"
    },
    {
      "type": "modify",
      "old_id": "3f17ea146f0ee5950259e1558da64bfdb64e556d",
      "old_mode": 33188,
      "old_path": "arch/arm/mm/init.c",
      "new_id": "bbc3346e8bcdf978a60678a65fc9a1b342d2db0c",
      "new_mode": 33188,
      "new_path": "arch/arm/mm/init.c"
    },
    {
      "type": "modify",
      "old_id": "217bcf6bca775315e2ccce93dcb7ff6678a877a8",
      "old_mode": 33188,
      "old_path": "include/linux/mmzone.h",
      "new_id": "261f299c94412be90e5b24e6b2406bc9815ee608",
      "new_mode": 33188,
      "new_path": "include/linux/mmzone.h"
    }
  ]
}
