All of lore.kernel.org
 help / color / mirror / Atom feed
From: Catalin Marinas <catalin.marinas@arm.com>
To: Peter Collingbourne <pcc@google.com>
Cc: "Will Deacon" <will@kernel.org>,
	akpm@linux-foundation.org,
	"Qun-wei Lin (林群崴)" <Qun-wei.Lin@mediatek.com>,
	linux-arm-kernel@lists.infradead.org, linux-mm@kvack.org,
	linux-kernel@vger.kernel.org,
	"surenb@google.com" <surenb@google.com>,
	"david@redhat.com" <david@redhat.com>,
	"Chinwen Chang (張錦文)" <chinwen.chang@mediatek.com>,
	"kasan-dev@googlegroups.com" <kasan-dev@googlegroups.com>,
	"Kuan-Ying Lee (李冠穎)" <Kuan-Ying.Lee@mediatek.com>,
	"Casper Li (李中榮)" <casper.li@mediatek.com>,
	"gregkh@linuxfoundation.org" <gregkh@linuxfoundation.org>,
	vincenzo.frascino@arm.com,
	"Alexandru Elisei" <alexandru.elisei@arm.com>,
	eugenis@google.com, "Steven Price" <steven.price@arm.com>,
	stable@vger.kernel.org
Subject: Re: [PATCH v4 1/3] mm: Call arch_swap_restore() from do_swap_page()
Date: Thu, 29 Jun 2023 10:57:14 +0100	[thread overview]
Message-ID: <ZJ1VersqnJcMXMyi@arm.com> (raw)
In-Reply-To: <CAMn1gO4k=rg96GVsPW6Aaz12c7hS0TYcgVR7y38x7pUsbfwg5A@mail.gmail.com>

On Mon, Jun 05, 2023 at 10:41:12AM -0700, Peter Collingbourne wrote:
> On Mon, Jun 5, 2023 at 7:06 AM Will Deacon <will@kernel.org> wrote:
> > On Mon, May 22, 2023 at 05:43:08PM -0700, Peter Collingbourne wrote:
> > > Commit c145e0b47c77 ("mm: streamline COW logic in do_swap_page()") moved
> > > the call to swap_free() before the call to set_pte_at(), which meant that
> > > the MTE tags could end up being freed before set_pte_at() had a chance
> > > to restore them. Fix it by adding a call to the arch_swap_restore() hook
> > > before the call to swap_free().
> > >
> > > Signed-off-by: Peter Collingbourne <pcc@google.com>
> > > Link: https://linux-review.googlesource.com/id/I6470efa669e8bd2f841049b8c61020c510678965
> > > Cc: <stable@vger.kernel.org> # 6.1
> > > Fixes: c145e0b47c77 ("mm: streamline COW logic in do_swap_page()")
> > > Reported-by: Qun-wei Lin (林群崴) <Qun-wei.Lin@mediatek.com>
> > > Closes: https://lore.kernel.org/all/5050805753ac469e8d727c797c2218a9d780d434.camel@mediatek.com/
> > > Acked-by: David Hildenbrand <david@redhat.com>
> > > Acked-by: "Huang, Ying" <ying.huang@intel.com>
> > > Reviewed-by: Steven Price <steven.price@arm.com>
> > > Acked-by: Catalin Marinas <catalin.marinas@arm.com>
> > > ---
> > > v2:
> > > - Call arch_swap_restore() directly instead of via arch_do_swap_page()
> > >
> > >  mm/memory.c | 7 +++++++
> > >  1 file changed, 7 insertions(+)
> > >
> > > diff --git a/mm/memory.c b/mm/memory.c
> > > index f69fbc251198..fc25764016b3 100644
> > > --- a/mm/memory.c
> > > +++ b/mm/memory.c
> > > @@ -3932,6 +3932,13 @@ vm_fault_t do_swap_page(struct vm_fault *vmf)
> > >               }
> > >       }
> > >
> > > +     /*
> > > +      * Some architectures may have to restore extra metadata to the page
> > > +      * when reading from swap. This metadata may be indexed by swap entry
> > > +      * so this must be called before swap_free().
> > > +      */
> > > +     arch_swap_restore(entry, folio);
> > > +
> > >       /*
> > >        * Remove the swap entry and conditionally try to free up the swapcache.
> > >        * We're already holding a reference on the page but haven't mapped it
> >
> > It looks like the intention is for this patch to land in 6.4, whereas the
> > other two in the series could go in later, right? If so, I was expecting
> > Andrew to pick this one up but he's not actually on CC. I've added him now,
> > but you may want to send this as a separate fix so it's obvious what needs
> > picking up for this cycle.
> 
> I was expecting that this whole series could be picked up in mm. There
> was a previous attempt to apply v3 of this series to mm, but that
> failed because a dependent patch (commit c4c597f1b367 ("arm64: mte: Do
> not set PG_mte_tagged if tags were not initialized")) hadn't been
> merged into Linus's master branch yet. The series should be good to go
> in now that that patch has been merged.

Did this series fall through the cracks? I can't see it in linux-next
(or maybe my grep'ing failed). The commit mentioned above is in 6.4-rc3
AFAICT. Unfortunately Andrew was not cc'ed on the initial post, Will
added him later, so he likely missed it. For reference, the series is
here:

https://lore.kernel.org/r/20230523004312.1807357-1-pcc@google.com/

Andrew, what's your preference for this series? I'd like at least the
first patch to go into 6.5 as a fix. The second patch seems to be fairly
low risk and I'm happy for the third arm64 patch/cleanup to go in
6.5-rc1 (but it depends on the second patch). If you prefer, I can pick
them up and send a pull request to Linus next week before -rc1.
Otherwise you (or I) can queue the first patch and leave the other two
for 6.6.

Thanks.

-- 
Catalin

WARNING: multiple messages have this Message-ID (diff)
From: Catalin Marinas <catalin.marinas@arm.com>
To: Peter Collingbourne <pcc@google.com>
Cc: "Will Deacon" <will@kernel.org>,
	akpm@linux-foundation.org,
	"Qun-wei Lin (林群崴)" <Qun-wei.Lin@mediatek.com>,
	linux-arm-kernel@lists.infradead.org, linux-mm@kvack.org,
	linux-kernel@vger.kernel.org,
	"surenb@google.com" <surenb@google.com>,
	"david@redhat.com" <david@redhat.com>,
	"Chinwen Chang (張錦文)" <chinwen.chang@mediatek.com>,
	"kasan-dev@googlegroups.com" <kasan-dev@googlegroups.com>,
	"Kuan-Ying Lee (李冠穎)" <Kuan-Ying.Lee@mediatek.com>,
	"Casper Li (李中榮)" <casper.li@mediatek.com>,
	"gregkh@linuxfoundation.org" <gregkh@linuxfoundation.org>,
	vincenzo.frascino@arm.com,
	"Alexandru Elisei" <alexandru.elisei@arm.com>,
	eugenis@google.com, "Steven Price" <steven.price@arm.com>,
	stable@vger.kernel.org
Subject: Re: [PATCH v4 1/3] mm: Call arch_swap_restore() from do_swap_page()
Date: Thu, 29 Jun 2023 10:57:14 +0100	[thread overview]
Message-ID: <ZJ1VersqnJcMXMyi@arm.com> (raw)
In-Reply-To: <CAMn1gO4k=rg96GVsPW6Aaz12c7hS0TYcgVR7y38x7pUsbfwg5A@mail.gmail.com>

On Mon, Jun 05, 2023 at 10:41:12AM -0700, Peter Collingbourne wrote:
> On Mon, Jun 5, 2023 at 7:06 AM Will Deacon <will@kernel.org> wrote:
> > On Mon, May 22, 2023 at 05:43:08PM -0700, Peter Collingbourne wrote:
> > > Commit c145e0b47c77 ("mm: streamline COW logic in do_swap_page()") moved
> > > the call to swap_free() before the call to set_pte_at(), which meant that
> > > the MTE tags could end up being freed before set_pte_at() had a chance
> > > to restore them. Fix it by adding a call to the arch_swap_restore() hook
> > > before the call to swap_free().
> > >
> > > Signed-off-by: Peter Collingbourne <pcc@google.com>
> > > Link: https://linux-review.googlesource.com/id/I6470efa669e8bd2f841049b8c61020c510678965
> > > Cc: <stable@vger.kernel.org> # 6.1
> > > Fixes: c145e0b47c77 ("mm: streamline COW logic in do_swap_page()")
> > > Reported-by: Qun-wei Lin (林群崴) <Qun-wei.Lin@mediatek.com>
> > > Closes: https://lore.kernel.org/all/5050805753ac469e8d727c797c2218a9d780d434.camel@mediatek.com/
> > > Acked-by: David Hildenbrand <david@redhat.com>
> > > Acked-by: "Huang, Ying" <ying.huang@intel.com>
> > > Reviewed-by: Steven Price <steven.price@arm.com>
> > > Acked-by: Catalin Marinas <catalin.marinas@arm.com>
> > > ---
> > > v2:
> > > - Call arch_swap_restore() directly instead of via arch_do_swap_page()
> > >
> > >  mm/memory.c | 7 +++++++
> > >  1 file changed, 7 insertions(+)
> > >
> > > diff --git a/mm/memory.c b/mm/memory.c
> > > index f69fbc251198..fc25764016b3 100644
> > > --- a/mm/memory.c
> > > +++ b/mm/memory.c
> > > @@ -3932,6 +3932,13 @@ vm_fault_t do_swap_page(struct vm_fault *vmf)
> > >               }
> > >       }
> > >
> > > +     /*
> > > +      * Some architectures may have to restore extra metadata to the page
> > > +      * when reading from swap. This metadata may be indexed by swap entry
> > > +      * so this must be called before swap_free().
> > > +      */
> > > +     arch_swap_restore(entry, folio);
> > > +
> > >       /*
> > >        * Remove the swap entry and conditionally try to free up the swapcache.
> > >        * We're already holding a reference on the page but haven't mapped it
> >
> > It looks like the intention is for this patch to land in 6.4, whereas the
> > other two in the series could go in later, right? If so, I was expecting
> > Andrew to pick this one up but he's not actually on CC. I've added him now,
> > but you may want to send this as a separate fix so it's obvious what needs
> > picking up for this cycle.
> 
> I was expecting that this whole series could be picked up in mm. There
> was a previous attempt to apply v3 of this series to mm, but that
> failed because a dependent patch (commit c4c597f1b367 ("arm64: mte: Do
> not set PG_mte_tagged if tags were not initialized")) hadn't been
> merged into Linus's master branch yet. The series should be good to go
> in now that that patch has been merged.

Did this series fall through the cracks? I can't see it in linux-next
(or maybe my grep'ing failed). The commit mentioned above is in 6.4-rc3
AFAICT. Unfortunately Andrew was not cc'ed on the initial post, Will
added him later, so he likely missed it. For reference, the series is
here:

https://lore.kernel.org/r/20230523004312.1807357-1-pcc@google.com/

Andrew, what's your preference for this series? I'd like at least the
first patch to go into 6.5 as a fix. The second patch seems to be fairly
low risk and I'm happy for the third arm64 patch/cleanup to go in
6.5-rc1 (but it depends on the second patch). If you prefer, I can pick
them up and send a pull request to Linus next week before -rc1.
Otherwise you (or I) can queue the first patch and leave the other two
for 6.6.

Thanks.

-- 
Catalin

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  reply	other threads:[~2023-06-29 10:01 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-05-23  0:43 [PATCH v4 0/3] mm: Fix bug affecting swapping in MTE tagged pages Peter Collingbourne
2023-05-23  0:43 ` Peter Collingbourne
2023-05-23  0:43 ` [PATCH v4 1/3] mm: Call arch_swap_restore() from do_swap_page() Peter Collingbourne
2023-05-23  0:43   ` Peter Collingbourne
2023-06-05 14:05   ` Will Deacon
2023-06-05 14:05     ` Will Deacon
2023-06-05 17:41     ` Peter Collingbourne
2023-06-05 17:41       ` Peter Collingbourne
2023-06-29  9:57       ` Catalin Marinas [this message]
2023-06-29  9:57         ` Catalin Marinas
2023-07-02 19:38         ` Andrew Morton
2023-07-02 19:38           ` Andrew Morton
2023-07-03 15:05           ` Catalin Marinas
2023-07-03 15:05             ` Catalin Marinas
2023-05-23  0:43 ` [PATCH v4 2/3] mm: Call arch_swap_restore() from unuse_pte() Peter Collingbourne
2023-05-23  0:43   ` Peter Collingbourne
2023-05-23  0:43 ` [PATCH v4 3/3] arm64: mte: Simplify swap tag restoration logic Peter Collingbourne
2023-05-23  0:43   ` Peter Collingbourne

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=ZJ1VersqnJcMXMyi@arm.com \
    --to=catalin.marinas@arm.com \
    --cc=Kuan-Ying.Lee@mediatek.com \
    --cc=Qun-wei.Lin@mediatek.com \
    --cc=akpm@linux-foundation.org \
    --cc=alexandru.elisei@arm.com \
    --cc=casper.li@mediatek.com \
    --cc=chinwen.chang@mediatek.com \
    --cc=david@redhat.com \
    --cc=eugenis@google.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=kasan-dev@googlegroups.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=pcc@google.com \
    --cc=stable@vger.kernel.org \
    --cc=steven.price@arm.com \
    --cc=surenb@google.com \
    --cc=vincenzo.frascino@arm.com \
    --cc=will@kernel.org \
    /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.