lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Fri, 2 Jun 2023 13:52:39 -0700
From:   Mike Kravetz <mike.kravetz@...cle.com>
To:     Matthew Wilcox <willy@...radead.org>
Cc:     Peng Zhang <zhangpeng362@...wei.com>, linux-mm@...ck.org,
        linux-kernel@...r.kernel.org, akpm@...ux-foundation.org,
        muchun.song@...ux.dev, sidhartha.kumar@...cle.com,
        vishal.moola@...il.com, wangkefeng.wang@...wei.com,
        sunnanyong@...wei.com
Subject: Re: [PATCH 2/2] mm/hugetlb: Use a folio in hugetlb_wp()

On 06/02/23 21:17, Matthew Wilcox wrote:
> On Fri, Jun 02, 2023 at 09:54:08AM +0800, Peng Zhang wrote:
> > From: ZhangPeng <zhangpeng362@...wei.com>
> > 
> > We can replace nine implict calls to compound_head() with one by using
> > old_folio. However, we still need to keep old_page because we need to
> > know which page in the folio we are copying.
> 
> Do we?  It's my understanding (and I am far from an expert here ...)
> that the 'pte_t *' we are passed *inside hugetlbfs* is not in fact a pte
> pointer at all but actually a pmd or pud pointer.

That may not be technically true in some arch specific cases such as
arm64 with CONT_PTES and CONT_PMDS.

>                                                    See how we do this:
> 
>         pte_t pte = huge_ptep_get(ptep);
> 
> and so the page we get back is always a head page, and we can go
> directly to a folio.  ie this is different from the THP cases.

However, it is true that ptep will always be associated with the head
page.  This is because the associated virtual address is hugetlb page
aligned.

So, I agree with Matthew that there is no need to keep old_page.
Note that if old_page was NOT the head page, then

	copy_user_huge_page(&new_folio->page, old_page, address, vma,
		pages_per_huge_page(h));

would write beyond the end of range as it assumes old_page is head.
-- 
Mike Kravetz

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ