From: Mel Gorman <mgorman@techsingularity.net>
To: Lars Persson <lars.persson@axis.com>
Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org,
linux-mips@vger.kernel.org, Lars Persson <larper@axis.com>
Subject: Re: [PATCH] mm: migrate: add missing flush_dcache_page for non-mapped page migrate
Date: Thu, 21 Feb 2019 17:10:22 +0000 [thread overview]
Message-ID: <20190221171022.GX9565@techsingularity.net> (raw)
In-Reply-To: <20190219123212.29838-1-larper@axis.com>
On Tue, Feb 19, 2019 at 01:32:12PM +0100, Lars Persson wrote:
> Our MIPS 1004Kc SoCs were seeing random userspace crashes with SIGILL
> and SIGSEGV that could not be traced back to a userspace code
> bug. They had all the magic signs of an I/D cache coherency issue.
>
> Now recently we noticed that the /proc/sys/vm/compact_memory interface
> was quite efficient at provoking this class of userspace crashes.
>
> Studying the code in mm/migrate.c there is a distinction made between
> migrating a page that is mapped at the instant of migration and one
> that is not mapped. Our problem turned out to be the non-mapped pages.
>
> For the non-mapped page the code performs a copy of the page content
> and all relevant meta-data of the page without doing the required
> D-cache maintenance. This leaves dirty data in the D-cache of the CPU
> and on the 1004K cores this data is not visible to the I-cache. A
> subsequent page-fault that triggers a mapping of the page will happily
> serve the process with potentially stale code.
>
> What about ARM then, this bug should have seen greater exposure? Well
> ARM became immune to this flaw back in 2010, see commit c01778001a4f
> ("ARM: 6379/1: Assume new page cache pages have dirty D-cache").
>
> My proposed fix moves the D-cache maintenance inside move_to_new_page
> to make it common for both cases.
>
> Signed-off-by: Lars Persson <larper@axis.com>
Acked-by: Mel Gorman <mgorman@techsingularity.net>
--
Mel Gorman
SUSE Labs
next prev parent reply other threads:[~2019-02-21 17:19 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-02-19 12:32 [PATCH] mm: migrate: add missing flush_dcache_page for non-mapped page migrate Lars Persson
2019-02-21 17:10 ` Mel Gorman [this message]
2019-02-21 20:36 ` Paul Burton
2019-02-25 15:07 ` Vlastimil Babka
2019-02-26 8:40 ` Lars Persson
2019-02-26 10:07 ` Vlastimil Babka
2019-02-26 11:57 ` Lars Persson
2019-03-07 14:17 ` Lars Persson
2019-02-26 9:23 ` Anshuman Khandual
2019-02-26 9:46 ` Lars Persson
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=20190221171022.GX9565@techsingularity.net \
--to=mgorman@techsingularity.net \
--cc=larper@axis.com \
--cc=lars.persson@axis.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mips@vger.kernel.org \
--cc=linux-mm@kvack.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.