Messages in this thread | | | From | "Kani, Toshimitsu" <> | Subject | Re: [PATCH 2/2] base/memory, hotplug: fix a kernel oops in show_valid_zones() | Date | Thu, 26 Jan 2017 22:26:23 +0000 |
| |
On Thu, 2017-01-26 at 13:52 -0800, Andrew Morton wrote: > On Thu, 26 Jan 2017 14:44:15 -0700 Toshi Kani <toshi.kani@hpe.com> > wrote: > > > Reading a sysfs memoryN/valid_zones file leads to the following > > oops when the first page of a range is not backed by struct page. > > show_valid_zones() assumes that 'start_pfn' is always valid for > > page_zone(). > > > > BUG: unable to handle kernel paging request at ffffea017a000000 > > IP: show_valid_zones+0x6f/0x160 > > > > Since test_pages_in_a_zone() already checks holes, extend this > > function to return 'valid_start' and 'valid_end' for a given range. > > show_valid_zones() then proceeds with the valid range. > > This doesn't apply to current mainline due to changes in > zone_can_shift(). Please redo and resend.
Sorry, I will rebase to the -mm tree and resend the patches.
> Please also update the changelog to provide sufficient information > for others to decide which kernel(s) need the fix. In particular: > under what circumstances will it occur? On real machines which real > people own?
Yes, this issue happens on real x86 machines with 64GiB or more memory. On such systems, the memory block size is bumped up to 2GiB. [1]
Here is an example system. 0x3240000000 is only aligned by 1GiB and its memory block starts from 0x3200000000, which is not backed by struct page.
BIOS-e820: [mem 0x0000003240000000-0x000000603fffffff] usable
I will add the descriptions to the patch.
[1] http://lkml.iu.edu/hypermail/linux/kernel/1411.0/02287.html
Thanks, -Toshi
| |