[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20171013120756.jeopthigbmm3c7bl@dhcp22.suse.cz>
Date: Fri, 13 Oct 2017 14:07:56 +0200
From: Michal Hocko <mhocko@...nel.org>
To: Vlastimil Babka <vbabka@...e.cz>
Cc: linux-mm@...ck.org, Michael Ellerman <mpe@...erman.id.au>,
Andrew Morton <akpm@...ux-foundation.org>,
KAMEZAWA Hiroyuki <kamezawa.hiroyu@...fujitsu.com>,
Reza Arbab <arbab@...ux.vnet.ibm.com>,
Yasuaki Ishimatsu <yasu.isimatu@...il.com>,
qiuxishi@...wei.com, Igor Mammedov <imammedo@...hat.com>,
Vitaly Kuznetsov <vkuznets@...hat.com>,
LKML <linux-kernel@...r.kernel.org>
Subject: Re: [PATCH 2/2] mm, page_alloc: fail has_unmovable_pages when seeing
reserved pages
On Fri 13-10-17 14:04:08, Vlastimil Babka wrote:
> On 10/13/2017 02:00 PM, Michal Hocko wrote:
> > From: Michal Hocko <mhocko@...e.com>
> >
> > Reserved pages should be completely ignored by the core mm because they
> > have a special meaning for their owners. has_unmovable_pages doesn't
> > check those so we rely on other tests (reference count, or PageLRU) to
> > fail on such pages. Althought this happens to work it is safer to simply
> > check for those explicitly and do not rely on the owner of the page
> > to abuse those fields for special purposes.
> >
> > Please note that this is more of a further fortification of the code
> > rahter than a fix of an existing issue.
> >
> > Signed-off-by: Michal Hocko <mhocko@...e.com>
> > ---
> > mm/page_alloc.c | 3 +++
> > 1 file changed, 3 insertions(+)
> >
> > diff --git a/mm/page_alloc.c b/mm/page_alloc.c
> > index ad0294ab3e4f..a8800b0a5619 100644
> > --- a/mm/page_alloc.c
> > +++ b/mm/page_alloc.c
> > @@ -7365,6 +7365,9 @@ bool has_unmovable_pages(struct zone *zone, struct page *page, int count,
> >
> > page = pfn_to_page(check);
> >
> > + if (PageReferenced(page))
>
> "Referenced" != "Reserved"
Dohh, you are right of course. I blame auto-completion ;) but I am lame
in fact...
---
>From 44b20bdb03846bc5fd79c883d16b8f3aa436878f Mon Sep 17 00:00:00 2001
From: Michal Hocko <mhocko@...e.com>
Date: Fri, 13 Oct 2017 13:55:21 +0200
Subject: [PATCH] mm, page_alloc: fail has_unmovable_pages when seeing reserved
pages
Reserved pages should be completely ignored by the core mm because they
have a special meaning for their owners. has_unmovable_pages doesn't
check those so we rely on other tests (reference count, or PageLRU) to
fail on such pages. Althought this happens to work it is safer to simply
check for those explicitly and do not rely on the owner of the page
to abuse those fields for special purposes.
Please note that this is more of a further fortification of the code
rahter than a fix of an existing issue.
Signed-off-by: Michal Hocko <mhocko@...e.com>
---
mm/page_alloc.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index ad0294ab3e4f..5b4d85ae445c 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -7365,6 +7365,9 @@ bool has_unmovable_pages(struct zone *zone, struct page *page, int count,
page = pfn_to_page(check);
+ if (PageReserved(page))
+ return true;
+
/*
* Hugepages are not in LRU lists, but they're movable.
* We need not scan over tail pages bacause we don't
--
2.14.2
--
Michal Hocko
SUSE Labs
Powered by blists - more mailing lists