All of lore.kernel.org
 help / color / mirror / Atom feed
From: Muchun Song <songmuchun@bytedance.com>
To: Mike Kravetz <mike.kravetz@oracle.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	zi.yan@cs.rutgers.edu,
	"Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>,
	David Rientjes <rientjes@google.com>,
	Lars Persson <lars.persson@axis.com>,
	Linux Memory Management List <linux-mm@kvack.org>,
	LKML <linux-kernel@vger.kernel.org>,
	Xiongchun duan <duanxiongchun@bytedance.com>,
	Matthew Wilcox <willy@infradead.org>
Subject: Re: [PATCH v3 4/5] mm: hugetlb: fix missing cache flush in hugetlb_mcopy_atomic_pte()
Date: Wed, 2 Feb 2022 21:58:26 +0800	[thread overview]
Message-ID: <CAMZfGtWet8NB6+psZpEQDzX9uoUMNL4OiNDukREB4=D91JRG=Q@mail.gmail.com> (raw)
In-Reply-To: <14df55c2-cab5-8ff0-5986-fd186c2f60d7@oracle.com>

On Wed, Feb 2, 2022 at 6:24 AM Mike Kravetz <mike.kravetz@oracle.com> wrote:
>
> Cc: Matthew
>
> On 1/31/22 08:02, Muchun Song wrote:
> > folio_copy() will copy the data from one page to the target page, then
> > the target page will be mapped to the user space address, which might
> > have an alias issue with the kernel address used to copy the data from
> > the page to.  Fix this issue by flushing dcache but not use
> > flush_dcache_folio() since it is not backportable.
> >
> > Fixes: 8cc5fcbb5be8 ("mm, hugetlb: fix racy resv_huge_pages underflow on UFFDIO_COPY")
> > Signed-off-by: Muchun Song <songmuchun@bytedance.com>
> > ---
> >  mm/hugetlb.c | 5 +++++
> >  1 file changed, 5 insertions(+)
> >
> > diff --git a/mm/hugetlb.c b/mm/hugetlb.c
> > index a1baa198519a..f1f1ab31dc8a 100644
> > --- a/mm/hugetlb.c
> > +++ b/mm/hugetlb.c
> > @@ -5804,6 +5804,8 @@ int hugetlb_mcopy_atomic_pte(struct mm_struct *dst_mm,
> >                       goto out;
> >               }
> >       } else {
> > +             int i, nr;
> > +
> >               if (vm_shared &&
> >                   hugetlbfs_pagecache_present(h, dst_vma, dst_addr)) {
> >                       put_page(*pagep);
> > @@ -5819,6 +5821,9 @@ int hugetlb_mcopy_atomic_pte(struct mm_struct *dst_mm,
> >                       goto out;
> >               }
> >               folio_copy(page_folio(page), page_folio(*pagep));
>
> What if we changed that folio_copy() to?
>
>                 copy_user_huge_page(page, *pagep, dst_addr, dst_vma,
>                         pages_per_huge_page(h));
>
> Seems like that would take care of the flush_dcache_page and it would be
> backportable.

Agree. I also can replace folio_copy() with copy_user_huge_page().

>
> Of course, Matthew may hate the idea.  Not sure if there are any plans to
> convert copy_user_huge_page to use folio type as it has some special hinting
> logic.

  reply	other threads:[~2022-02-02 13:59 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-01-31 16:02 [PATCH v3 0/5] Fix some cache flush bugs Muchun Song
2022-01-31 16:02 ` [PATCH v3 1/5] mm: thp: fix wrong cache flush in remove_migration_pmd() Muchun Song
2022-01-31 16:02 ` [PATCH v3 2/5] mm: fix missing cache flush for all tail pages of compound page Muchun Song
2022-02-01 13:24   ` Muchun Song
2022-02-01 23:32   ` Mike Kravetz
2022-02-02 13:32     ` Muchun Song
2022-01-31 16:02 ` [PATCH v3 3/5] mm: hugetlb: fix missing cache flush in copy_huge_page_from_user() Muchun Song
2022-01-31 16:02 ` [PATCH v3 4/5] mm: hugetlb: fix missing cache flush in hugetlb_mcopy_atomic_pte() Muchun Song
2022-02-01 22:23   ` Mike Kravetz
2022-02-02 13:58     ` Muchun Song [this message]
2022-01-31 16:02 ` [PATCH v3 5/5] mm: replace multiple dcache flush with flush_dcache_folio() Muchun Song

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='CAMZfGtWet8NB6+psZpEQDzX9uoUMNL4OiNDukREB4=D91JRG=Q@mail.gmail.com' \
    --to=songmuchun@bytedance.com \
    --cc=akpm@linux-foundation.org \
    --cc=duanxiongchun@bytedance.com \
    --cc=kirill.shutemov@linux.intel.com \
    --cc=lars.persson@axis.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mike.kravetz@oracle.com \
    --cc=rientjes@google.com \
    --cc=willy@infradead.org \
    --cc=zi.yan@cs.rutgers.edu \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.