[lkml]   [2019]   [Aug]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
SubjectRe: [patch] mm, page_alloc: move_freepages should not examine struct page of reserved memory
On Mon, 12 Aug 2019 20:37:11 -0700 (PDT) David Rientjes <> wrote:

> After commit 907ec5fca3dc ("mm: zero remaining unavailable struct pages"),
> struct page of reserved memory is zeroed. This causes page->flags to be 0
> and fixes issues related to reading /proc/kpageflags, for example, of
> reserved memory.
> The VM_BUG_ON() in move_freepages_block(), however, assumes that
> page_zone() is meaningful even for reserved memory. That assumption is no
> longer true after the aforementioned commit.
> There's no reason why move_freepages_block() should be testing the
> legitimacy of page_zone() for reserved memory; its scope is limited only
> to pages on the zone's freelist.
> Note that pfn_valid() can be true for reserved memory: there is a backing
> struct page. The check for page_to_nid(page) is also buggy but reserved
> memory normally only appears on node 0 so the zeroing doesn't affect this.
> Move the debug checks to after verifying PageBuddy is true. This isolates
> the scope of the checks to only be for buddy pages which are on the zone's
> freelist which move_freepages_block() is operating on. In this case, an
> incorrect node or zone is a bug worthy of being warned about (and the
> examination of struct page is acceptable bcause this memory is not
> reserved).

I'm thinking Fixes:907ec5fca3dc and Cc:stable? But 907ec5fca3dc is
almost a year old, so you were doing something special to trigger this?

 \ /
  Last update: 2019-08-13 23:16    [W:0.044 / U:18.540 seconds]
©2003-2018 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site