Re: [kernel-hardening] Re: [PATCH v6 03/11] mm, x86: Add support for eXclusive Page Frame Ownership (XPFO)

From: Tycho Andersen
Date: Wed Nov 15 2017 - 11:21:13 EST


On Wed, Nov 15, 2017 at 06:58:35AM -0800, Matthew Wilcox wrote:
> On Tue, Nov 14, 2017 at 11:00:20PM -0800, Dave Hansen wrote:
> > On 11/14/2017 07:44 PM, Matthew Wilcox wrote:
> > > We don't need to kmap in order to access MOVABLE allocations. kmap is
> > > only needed for HIGHMEM allocations. So there's nothing wrong with ext4
> > > or set_bh_page().
> >
> > Yeah, it's definitely not _buggy_.
> >
> > Although, I do wonder what we should do about these for XPFO. Should we
> > just stick a kmap() in there and comment it? What we really need is a
> > mechanism to say "use this as a kernel page" and "stop using this as a
> > kernel page". kmap() does that... kinda. It's not a perfect fit, but
> > it's pretty close.
>
> It'd be kind of funny if getting XPFO working better means improving
> how well Linux runs on 32-bit machines with HIGHMEM. I think there's
> always going to be interest in those -- ARM developed 36 bit physmem
> before biting the bullet and going to arm64. Maybe OpenRISC will do
> that next ;-)

Oh, sorry, I didn't realize that this wasn't a bug. In any case, this
seems like sort of an uphill battle -- lots of places are going to do
stuff like this since it's legal, adding code to work around it just
for XPFO seems like a lot of burden on the kernel. (Of course, I'm
open to convincing :)

How common are these MOVABLE allocations that the kernel does? What if
we did some hybrid approach, where we re-map the lists based on
MOVABLE/UNMOVABLE, but then check the actual GFP flags on allocation
to see if they match what we set when populating the free list, and
re-map accordingly if they don't.

Or is there some other way?

Cheers,

Tycho