Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757604AbdIIPiZ (ORCPT ); Sat, 9 Sep 2017 11:38:25 -0400 Received: from mail-qt0-f176.google.com ([209.85.216.176]:37167 "EHLO mail-qt0-f176.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753686AbdIIPiX (ORCPT ); Sat, 9 Sep 2017 11:38:23 -0400 X-Google-Smtp-Source: AOwi7QBJFmkhR3ByRqS7YSpcibh8WGOHFrFsHF47dUNwPOFEJgxUy2RdQGsJWmZLeVeRwErzVKxG1Q== Subject: Re: [PATCH v6 09/11] arm64/mm: disable section/contiguous mappings if XPFO is enabled To: Tycho Andersen , linux-kernel@vger.kernel.org Cc: linux-mm@kvack.org, kernel-hardening@lists.openwall.com, Marco Benatto , Juerg Haefliger , linux-arm-kernel@lists.infradead.org References: <20170907173609.22696-1-tycho@docker.com> <20170907173609.22696-10-tycho@docker.com> From: Laura Abbott Message-ID: <17b9b826-366e-48f1-a117-e650b7a5811f@redhat.com> Date: Sat, 9 Sep 2017 08:38:20 -0700 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.2.1 MIME-Version: 1.0 In-Reply-To: <20170907173609.22696-10-tycho@docker.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2215 Lines: 76 On 09/07/2017 10:36 AM, Tycho Andersen wrote: > XPFO doesn't support section/contiguous mappings yet, so let's disable it > if XPFO is turned on. > > Thanks to Laura Abbot for the simplification from v5, and Mark Rutland for > pointing out we need NO_CONT_MAPPINGS too. > > CC: linux-arm-kernel@lists.infradead.org > Signed-off-by: Tycho Andersen This should just be folded into the initial arm64 patch since it basically bugs out otherwise. Thanks, Laura > --- > arch/arm64/mm/mmu.c | 2 +- > include/linux/xpfo.h | 4 ++++ > mm/xpfo.c | 6 ++++++ > 3 files changed, 11 insertions(+), 1 deletion(-) > > diff --git a/arch/arm64/mm/mmu.c b/arch/arm64/mm/mmu.c > index f1eb15e0e864..34bb95303cce 100644 > --- a/arch/arm64/mm/mmu.c > +++ b/arch/arm64/mm/mmu.c > @@ -420,7 +420,7 @@ static void __init map_mem(pgd_t *pgd) > struct memblock_region *reg; > int flags = 0; > > - if (debug_pagealloc_enabled()) > + if (debug_pagealloc_enabled() || xpfo_enabled()) > flags = NO_BLOCK_MAPPINGS | NO_CONT_MAPPINGS; > > /* > diff --git a/include/linux/xpfo.h b/include/linux/xpfo.h > index d37a06c9d62c..1693af1a0293 100644 > --- a/include/linux/xpfo.h > +++ b/include/linux/xpfo.h > @@ -43,6 +43,8 @@ void xpfo_temp_map(const void *addr, size_t size, void **mapping, > void xpfo_temp_unmap(const void *addr, size_t size, void **mapping, > size_t mapping_len); > > +bool xpfo_enabled(void); > + > #else /* !CONFIG_XPFO */ > > static inline void xpfo_kmap(void *kaddr, struct page *page) { } > @@ -65,6 +67,8 @@ static inline void xpfo_temp_unmap(const void *addr, size_t size, > } > > > +static inline bool xpfo_enabled(void) { return false; } > + > #endif /* CONFIG_XPFO */ > > #endif /* _LINUX_XPFO_H */ > diff --git a/mm/xpfo.c b/mm/xpfo.c > index f79075bf7d65..25fba05d01bd 100644 > --- a/mm/xpfo.c > +++ b/mm/xpfo.c > @@ -70,6 +70,12 @@ struct page_ext_operations page_xpfo_ops = { > .init = init_xpfo, > }; > > +bool __init xpfo_enabled(void) > +{ > + return !xpfo_disabled; > +} > +EXPORT_SYMBOL(xpfo_enabled); > + > static inline struct xpfo *lookup_xpfo(struct page *page) > { > struct page_ext *page_ext = lookup_page_ext(page); >