linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: David Hildenbrand <david@redhat.com>
To: Michal Hocko <mhocko@suse.com>, Miaohe Lin <linmiaohe@huawei.com>
Cc: akpm@linux-foundation.org, vbabka@suse.cz, linux-mm@kvack.org,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2] mm/page_isolation: fix potential missing call to unset_migratetype_isolate()
Date: Mon, 13 Sep 2021 14:20:26 +0200	[thread overview]
Message-ID: <e1e772b8-b9a7-0182-c469-73f32cda005e@redhat.com> (raw)
In-Reply-To: <YT9AS6I1Th14mCxh@dhcp22.suse.cz>

On 13.09.21 14:12, Michal Hocko wrote:
> On Mon 13-09-21 19:51:25, Miaohe Lin wrote:
>> In start_isolate_page_range() undo path, pfn_to_online_page() just checks
>> the first pfn in a pageblock while __first_valid_page() will traverse the
>> pageblock until the first online pfn is found. So we may miss the call to
>> unset_migratetype_isolate() in undo path and pages will remain isolated
>> unexpectedly. Fix this by calling undo_isolate_page_range() and this will
>> also help to simplify the code further.
> 
> I like the clean up part but is this a real problem that requires CC
> stable? Have you ever seen this to be a real problem? It looks like
> something based on reading the code.

We discussed that it isn't an issue anymore (we never call it on memory 
holes), but might have been an issue on older kernels, back when we 
didn't have the "memory holes" check in the memory offlining path in place.

Agreed, these details belong into this description.

> 
>> Fixes: 2ce13640b3f4 ("mm: __first_valid_page skip over offline pages")
>> Signed-off-by: Miaohe Lin <linmiaohe@huawei.com>
>> Cc: <stable@vger.kernel.org>
>> ---
>> v1->v2:
>>    Simplify the code further per David Hildenbrand.
>> ---
>>   mm/page_isolation.c | 20 +++-----------------
>>   1 file changed, 3 insertions(+), 17 deletions(-)
>>
>> diff --git a/mm/page_isolation.c b/mm/page_isolation.c
>> index a95c2c6562d0..f93cc63d8fa1 100644
>> --- a/mm/page_isolation.c
>> +++ b/mm/page_isolation.c
>> @@ -183,7 +183,6 @@ int start_isolate_page_range(unsigned long start_pfn, unsigned long end_pfn,
>>   			     unsigned migratetype, int flags)
>>   {
>>   	unsigned long pfn;
>> -	unsigned long undo_pfn;
>>   	struct page *page;
>>   
>>   	BUG_ON(!IS_ALIGNED(start_pfn, pageblock_nr_pages));
>> @@ -193,25 +192,12 @@ int start_isolate_page_range(unsigned long start_pfn, unsigned long end_pfn,
>>   	     pfn < end_pfn;
>>   	     pfn += pageblock_nr_pages) {
>>   		page = __first_valid_page(pfn, pageblock_nr_pages);
>> -		if (page) {
>> -			if (set_migratetype_isolate(page, migratetype, flags)) {
>> -				undo_pfn = pfn;
>> -				goto undo;
>> -			}
>> +		if (page && set_migratetype_isolate(page, migratetype, flags)) {
>> +			undo_isolate_page_range(start_pfn, pfn, migratetype);
>> +			return -EBUSY;
>>   		}
>>   	}
>>   	return 0;
>> -undo:
>> -	for (pfn = start_pfn;
>> -	     pfn < undo_pfn;
>> -	     pfn += pageblock_nr_pages) {
>> -		struct page *page = pfn_to_online_page(pfn);
>> -		if (!page)
>> -			continue;
>> -		unset_migratetype_isolate(page, migratetype);
>> -	}
>> -
>> -	return -EBUSY;
>>   }
>>   
>>   /*
>> -- 
>> 2.23.0
> 


-- 
Thanks,

David / dhildenb



  reply	other threads:[~2021-09-13 12:20 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-13 11:51 Miaohe Lin
2021-09-13 12:12 ` Michal Hocko
2021-09-13 12:20   ` David Hildenbrand [this message]
2021-09-13 12:43     ` Miaohe Lin
2021-09-13 12:59       ` Michal Hocko
2021-09-14  2:51         ` Andrew Morton
2021-09-14  3:10           ` Miaohe Lin
2021-09-14  3:09         ` Miaohe Lin
2021-09-14  7:06           ` Michal Hocko
2021-09-14  9:27             ` Miaohe Lin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=e1e772b8-b9a7-0182-c469-73f32cda005e@redhat.com \
    --to=david@redhat.com \
    --cc=akpm@linux-foundation.org \
    --cc=linmiaohe@huawei.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mhocko@suse.com \
    --cc=vbabka@suse.cz \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox