Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932357AbaDWRZ5 (ORCPT ); Wed, 23 Apr 2014 13:25:57 -0400 Received: from mail-vc0-f173.google.com ([209.85.220.173]:41307 "EHLO mail-vc0-f173.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752542AbaDWRZz (ORCPT ); Wed, 23 Apr 2014 13:25:55 -0400 MIME-Version: 1.0 In-Reply-To: <5357F572.1030804@zytor.com> References: <20140422112312.GB15882@pd.tnic> <20140422144659.GF15882@pd.tnic> <53569467.1030809@zytor.com> <5356A3B6.5050901@zytor.com> <20140423105411.2e166dd8@alan.etchedpixels.co.uk> <5357E214.6050501@zytor.com> <5357F572.1030804@zytor.com> From: Andrew Lutomirski Date: Wed, 23 Apr 2014 10:25:34 -0700 Message-ID: Subject: Re: [PATCH] x86-64: espfix for 64-bit mode *PROTOTYPE* To: "H. Peter Anvin" Cc: One Thousand Gnomes , Linus Torvalds , Borislav Petkov , "H. Peter Anvin" , Linux Kernel Mailing List , Ingo Molnar , Alexander van Heukelum , Konrad Rzeszutek Wilk , Boris Ostrovsky , Arjan van de Ven , Brian Gerst , Alexandre Julliard , Andi Kleen , Thomas Gleixner Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Apr 23, 2014 at 10:16 AM, H. Peter Anvin wrote: > On 04/23/2014 10:08 AM, Andrew Lutomirski wrote: >> >> The only way I can see to trigger the race is with sigreturn, but it's >> still there. Sigh. >> > > I don't see why sigreturn needs to be involved... all you need is > modify_ldt() on one CPU while the other is in the middle of an IRET > return. Small window, so hard to hit, but still. > If you set the flag as soon as anyone calls modify_ldt, before any descriptor is installed, then I don't think this can happen. But there's still sigreturn, and I don't think this is worth all the complexity to save a single branch on #GP. >> 2. I've often pondered changing the way we return *to* CPL 0 to bypass >> iret entirely. It could be something like: >> >> SS >> RSP >> EFLAGS >> CS >> RIP >> >> push 16($rsp) >> popfq [does this need to force rex.w somehow?] >> ret $64 > > When you say return to CPL 0 you mean intra-kernel return? That isn't > really the problem here, though. I think this will also break the > kernel debugger since it will have the wrong behavior for TF and RF. I do mean intra-kernel. And yes, this has nothing to do with espfix, but it would make write_msr_safe fail more quickly :) --Andy -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/