)]}'
{
  "commit": "a96dfddbcc04336bbed50dc2b24823e45e09e80c",
  "tree": "0a6501e0d11cb978a46d8d3753dd449e57a97717",
  "parents": [
    "deb88a2a19e85842d79ba96b05031739ec327ff4"
  ],
  "author": {
    "name": "Toshi Kani",
    "email": "toshi.kani@hpe.com",
    "time": "Fri Feb 03 13:13:23 2017 -0800"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@linux-foundation.org",
    "time": "Fri Feb 03 14:13:19 2017 -0800"
  },
  "message": "base/memory, hotplug: fix a kernel oops in show_valid_zones()\n\nReading a sysfs \"memoryN/valid_zones\" file leads to the following oops\nwhen the first page of a range is not backed by struct page.\nshow_valid_zones() assumes that \u0027start_pfn\u0027 is always valid for\npage_zone().\n\n BUG: unable to handle kernel paging request at ffffea017a000000\n IP: show_valid_zones+0x6f/0x160\n\nThis issue may happen on x86-64 systems with 64GiB or more memory since\ntheir memory block size is bumped up to 2GiB.  [1] An example of such\nsystems is desribed below.  0x3240000000 is only aligned by 1GiB and\nthis memory block starts from 0x3200000000, which is not backed by\nstruct page.\n\n BIOS-e820: [mem 0x0000003240000000-0x000000603fffffff] usable\n\nSince test_pages_in_a_zone() already checks holes, fix this issue by\nextending this function to return \u0027valid_start\u0027 and \u0027valid_end\u0027 for a\ngiven range.  show_valid_zones() then proceeds with the valid range.\n\n[1] \u0027Commit bdee237c0343 (\"x86: mm: Use 2GB memory block size on\n    large-memory x86-64 systems\")\u0027\n\nLink: http://lkml.kernel.org/r/20170127222149.30893-3-toshi.kani@hpe.com\nSigned-off-by: Toshi Kani \u003ctoshi.kani@hpe.com\u003e\nCc: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\nCc: Zhang Zhen \u003czhenzhang.zhang@huawei.com\u003e\nCc: Reza Arbab \u003carbab@linux.vnet.ibm.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Dan Williams \u003cdan.j.williams@intel.com\u003e\nCc: \u003cstable@vger.kernel.org\u003e\t[4.4+]\n\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": "dacb6a8418aa927e8d75a86470b35b414bf48598",
      "old_mode": 33188,
      "old_path": "drivers/base/memory.c",
      "new_id": "fa26ffd25fa61bae95bd441699a54ee8e16818d2",
      "new_mode": 33188,
      "new_path": "drivers/base/memory.c"
    },
    {
      "type": "modify",
      "old_id": "c1784c0b4f3585e0d20ca8253813c31d47f11c04",
      "old_mode": 33188,
      "old_path": "include/linux/memory_hotplug.h",
      "new_id": "134a2f69c21abf7921181af0adff033bb459edc5",
      "new_mode": 33188,
      "new_path": "include/linux/memory_hotplug.h"
    },
    {
      "type": "modify",
      "old_id": "1218f73890b6072b46d2126ce13a99812edb18aa",
      "old_mode": 33188,
      "old_path": "mm/memory_hotplug.c",
      "new_id": "b8c11e063ff0746316fb792f4fe1dde0094cb828",
      "new_mode": 33188,
      "new_path": "mm/memory_hotplug.c"
    }
  ]
}
