linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: "Li Xinhai" <lixinhai.lxh@gmail.com>
To: "Mike Kravetz" <mike.kravetz@oracle.com>,
	 "Michal Hocko" <mhocko@kernel.org>
Cc: "linux-mm@kvack.org" <linux-mm@kvack.org>,
	 kirill.shutemov <kirill.shutemov@linux.intel.com>
Subject: Re: [PATCH v2] mm/page_vma_mapped.c: Detect mismatched pfn of hugetlbfs page in pfn_in_hpage()
Date: Fri, 10 Jan 2020 10:52:56 +0800	[thread overview]
Message-ID: <20200110105254780538125@gmail.com> (raw)
In-Reply-To: <fb4126c6-0140-5638-137f-1eb0bc5b36f7@oracle.com>

On 2020-01-10 at 07:00 Mike Kravetz wrote:
>On 1/9/20 2:48 PM, Li Xinhai wrote:
>> oops, I didn't write the code correctly. I should wrote it as
>>
>> if (pfn >= hpage_pfn && pfn - hpage_pfn < hpage_nr_pages(hpage)) {
>> VM_BUG_ON_PAGE(PageHuge(hpage) && pfn != hpage_pfn, hpage);
>> return true;
>> }
>>
>> return false;
>>
>> hpage_nr_pages(hpage) give us HPAGE_PMD_NR for THP and hugetlbfs page,
>> but remapping PTE to a differrnt hugetlbfs page still allowed, so put the BUG code
>> into this condition is necessary. By this way, if it was not a exact match for PageHuge,
>> then it is a bug.
>
>Thank you.  I think we all agree on what the proposed code is doing.
>However, we would like to know why you believe this code should be added.
>For example,
>- Did you actually encounter this situation (PageHuge(hpage) && pfn !=
>  hpage_pfn)?
>- Did you discover some code path where we are likely to encounter this
>  situation?
>- Some other reason? 

I didn't actually encounter this condition.

There are two ways for faulty code,
1. one is from the 'hpage', it could be head or tail page of hugetlbfs (I see that
current code make sure always call with head page as you mentioned). Luckly,
we catch the tail page case as BUG at begining of this mapped_walk(the
page_hstate(page) return NULL for tail page).
2. The other is from the content stored in the PTE, wihch we used as 'pfn' and
compare with 'hpage'.

Current code matches 'pfn' and 'hpage' like below:
- normal 4k page: hpage_pfn <= pfn < hpage_pfn + 1
- THP, hugetlbfs page:  hpage_pfn <= pfn < hpage_pfn + HPAGE_PMD_NR
we need do exact match for normal 4K page and hugetlbfs page, and range
match for THP.

>--
>Mike Kravetz

  reply	other threads:[~2020-01-10  2:53 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-01-09 14:26 Li Xinhai
2020-01-09 14:26 ` [PATCH] mm/page_vma_mapped.c: Exactly compare hugetlbfs page's pfn " Li Xinhai
2020-01-09 14:31   ` Li Xinhai
2020-01-09 15:00 ` [PATCH v2] mm/page_vma_mapped.c: Detect mismatched pfn of hugetlbfs page " Michal Hocko
2020-01-09 17:09   ` Mike Kravetz
2020-01-09 22:48     ` Li Xinhai
2020-01-09 23:00       ` Mike Kravetz
2020-01-10  2:52         ` Li Xinhai [this message]
2020-01-10  6:22           ` Michal Hocko
2020-01-10  7:11             ` Li Xinhai

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=20200110105254780538125@gmail.com \
    --to=lixinhai.lxh@gmail.com \
    --cc=kirill.shutemov@linux.intel.com \
    --cc=linux-mm@kvack.org \
    --cc=mhocko@kernel.org \
    --cc=mike.kravetz@oracle.com \
    /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