All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jiaqi Yan <jiaqiyan@google.com>
To: glider@google.com, elver@google.com, dvyukov@google.com
Cc: kirill.shutemov@linux.intel.com, shy828301@gmail.com,
	 tongtiangen@huawei.com, tony.luck@intel.com,
	akpm@linux-foundation.org,  wangkefeng.wang@huawei.com,
	naoya.horiguchi@nec.com, linmiaohe@huawei.com,
	 linux-mm@kvack.org, osalvador@suse.de, kirill@shutemov.name
Subject: Re: [PATCH v9 1/2] mm/khugepaged: recover from poisoned anonymous memory
Date: Tue, 7 Feb 2023 10:19:43 -0800	[thread overview]
Message-ID: <CACw3F511CKz8NVdQsygRnhAsY-eMcECOAKiQzMoW0pE=ysqJqw@mail.gmail.com> (raw)
In-Reply-To: <20230202003034.cgtsz2mixfcige3p@box.shutemov.name>

Pinging KMSAN experts, for the general guidance of
kmsan_copy_page_meta vs kmsan_unpoison_memory

On Wed, Feb 1, 2023 at 4:30 PM <kirill@shutemov.name> wrote:
>
> On Thu, Feb 02, 2023 at 03:01:02AM +0300, kirill.shutemov@linux.intel.com wrote:
> > On Tue, Jan 31, 2023 at 09:16:45PM -0800, Jiaqi Yan wrote:
> > > > > > > +/*
> > > > > > > + * Copies memory with #MC in source page (@from) handled. Returns number
> > > > > > > + * of bytes not copied if there was an exception; otherwise 0 for success.
> > > > > > > + * Note handling #MC requires arch opt-in.
> > > > > > > + */
> > > > > > > +static int copy_mc_page(struct page *to, struct page *from)
> > > > > > > +{
> > > > > > > +     char *vfrom, *vto;
> > > > > > > +     unsigned long ret;
> > > > > > > +
> > > > > > > +     vfrom = kmap_local_page(from);
> > > > > > > +     vto = kmap_local_page(to);
> > > > > > > +     ret = copy_mc_to_kernel(vto, vfrom, PAGE_SIZE);
> > > > > > > +     if (ret == 0)
> > > > > > > +             kmsan_copy_page_meta(to, from);
> > > > > > > +     kunmap_local(vto);
> > > > > > > +     kunmap_local(vfrom);
> > > > > > > +
> > > > > > > +     return ret;
> > > > > > > +}
> > > > > >
> > > > > >
> > > > > > It is very similar to copy_mc_user_highpage(), but uses
> > > > > > kmsan_copy_page_meta() instead of kmsan_unpoison_memory().
> > > > > >
> > > > > > Could you explain the difference? I don't quite get it.
> > > > >
> > > > > copy_mc_page is actually the MC version of copy_highpage, which uses
> > > > > kmsan_copy_page_meta instead of kmsan_unpoison_memory.
> > > > >
> > > > > My understanding is kmsan_copy_page_meta covers kmsan_unpoison_memory.
> > > > > When there is no metadata (kmsan_shadow or kmsan_origin), both
> > > > > kmsan_copy_page_meta and kmsan_unpoison_memory just do
> > > > > kmsan_internal_unpoison_memory to mark the memory range as
> > > > > initialized; when there is metadata in src page, kmsan_copy_page_meta
> > > > > will copy whatever metadata in src to dst. So I think
> > > > > kmsan_copy_page_meta is the right thing to do.
> > > >
> > > > Should we fix copy_mc_user_highpage() then?
> > >
> > > I think it depends on what copy_user_highpage() (the original of
> > > copy_mc_user_highpage) is used for. copy_mc_user_highpage is currently
> > > only used by __wp_page_copy_user, is it possible that here we don't
> > > want to (or don't need to) copy page metadata for userspace pages?
> >
> > Tony, could chime in on this? Can we modify copy_mc_user_highpage() to
> > also use kmsan_copy_page_meta()? I don't really understand KMSAN here.
>
> +KMSAN folks.
>
> --
>   Kiryl Shutsemau / Kirill A. Shutemov


  reply	other threads:[~2023-02-07 18:20 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-12-05 23:40 [PATCH v9 0/2] Memory poison recovery in khugepaged collapsing Jiaqi Yan
2022-12-05 23:40 ` [PATCH v9 1/2] mm/khugepaged: recover from poisoned anonymous memory Jiaqi Yan
2023-01-19 15:02   ` kirill.shutemov
2023-01-20 15:56     ` Jiaqi Yan
2023-01-24  0:33       ` kirill.shutemov
2023-02-01  5:16         ` Jiaqi Yan
2023-02-02  0:01           ` kirill.shutemov
2023-02-02  0:30             ` kirill
2023-02-07 18:19               ` Jiaqi Yan [this message]
2023-02-08 11:44                 ` Alexander Potapenko
2023-02-08 23:00                   ` Jiaqi Yan
2023-02-17 19:49                     ` Jiaqi Yan
2023-02-28 13:40                     ` kirill
2023-03-03 17:15                       ` Jiaqi Yan
2022-12-05 23:40 ` [PATCH v9 2/2] mm/khugepaged: recover from poisoned file-backed memory Jiaqi Yan
2023-01-19 15:10   ` kirill.shutemov
2023-01-19 21:24     ` Jiaqi Yan
2023-01-18 23:29 ` [PATCH v9 0/2] Memory poison recovery in khugepaged collapsing Andrew Morton

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='CACw3F511CKz8NVdQsygRnhAsY-eMcECOAKiQzMoW0pE=ysqJqw@mail.gmail.com' \
    --to=jiaqiyan@google.com \
    --cc=akpm@linux-foundation.org \
    --cc=dvyukov@google.com \
    --cc=elver@google.com \
    --cc=glider@google.com \
    --cc=kirill.shutemov@linux.intel.com \
    --cc=kirill@shutemov.name \
    --cc=linmiaohe@huawei.com \
    --cc=linux-mm@kvack.org \
    --cc=naoya.horiguchi@nec.com \
    --cc=osalvador@suse.de \
    --cc=shy828301@gmail.com \
    --cc=tongtiangen@huawei.com \
    --cc=tony.luck@intel.com \
    --cc=wangkefeng.wang@huawei.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 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.