Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756683AbdLGRXw (ORCPT ); Thu, 7 Dec 2017 12:23:52 -0500 Received: from Galois.linutronix.de ([146.0.238.70]:52764 "EHLO Galois.linutronix.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754000AbdLGRXt (ORCPT ); Thu, 7 Dec 2017 12:23:49 -0500 Date: Thu, 7 Dec 2017 18:23:39 +0100 (CET) From: Thomas Gleixner To: Andy Lutomirski cc: Borislav Petkov , X86 ML , "linux-kernel@vger.kernel.org" , Brian Gerst , David Laight , Kees Cook , Peter Zijlstra Subject: Re: [PATCH] LDT improvements In-Reply-To: Message-ID: References: <48fe5cf1382d6a95c7b1837415882edcc81a9781.1512631324.git.luto@kernel.org> <20171207124347.p7kdj7q4qqs3ivri@pd.tnic> User-Agent: Alpine 2.20 (DEB 67 2015-01-07) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1454 Lines: 36 On Thu, 7 Dec 2017, Andy Lutomirski wrote: > On Thu, Dec 7, 2017 at 4:43 AM, Borislav Petkov wrote: > > On Wed, Dec 06, 2017 at 11:22:21PM -0800, Andy Lutomirski wrote: > >> I think I like this approach. I also think it might be nice to move the > >> whole cpu_entry_area into this new pgd range so that we can stop mucking > >> around with the fixmap. > > > > Yeah, and also, I don't like the idea of sacrificing a whole PGD > > only for the LDT crap which is optional, even. Frankly - and this > > is just me - I'd make CONFIG_KERNEL_PAGE_TABLE_ISOLATION xor > > CONFIG_MODIFY_LDT_SYSCALL and don't give a rat's *ss about the LDT. > > The PGD sacrifice doesn't bother me. Putting a writable LDT map at a > constant address does bother me. We could probably get away with RO > if we trapped and handled the nasty faults, but that could be very > problematic. Where is the problem? You can map it RO into user space with the USER bit cleared. The kernel knows how to access the real stuff. > The version here: > > https://git.kernel.org/pub/scm/linux/kernel/git/luto/linux.git/commit/?h=x86/pti&id=a74d1009ac72a1f04ec5bcd338a4bdbe170ab776 > > actually seems to work. The approach I've taken is to create a VMA and map it into user space with the USER bit cleared. A little bit more effort code wise, but that avoids all the page table muck and keeps it straight attached to the process. Will post once in a bit. Thanks, tglx