Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934565AbeAKPEq (ORCPT + 1 other); Thu, 11 Jan 2018 10:04:46 -0500 Received: from mx1.redhat.com ([209.132.183.28]:56044 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933305AbeAKPEp (ORCPT ); Thu, 11 Jan 2018 10:04:45 -0500 Date: Thu, 11 Jan 2018 09:04:19 -0600 From: Josh Poimboeuf To: David Woodhouse Cc: Peter Zijlstra , Andi Kleen , Paul Turner , LKML , Linus Torvalds , Greg Kroah-Hartman , Tim Chen , Dave Hansen , tglx@linutronix.de, Kees Cook , Rik van Riel , Andy Lutomirski , Jiri Kosina , gnomes@lxorguk.ukuu.org.uk, x86@kernel.org, bp@alien8.de, rga@amazon.de, thomas.lendacky@amd.com Subject: Re: [PATCH v2.1] x86/retpoline: Fill return stack buffer on vmexit Message-ID: <20180111150419.2nsqst6qpifeq7k5@treble> References: <1515670638-8552-1-git-send-email-dwmw@amazon.co.uk> <20180111142038.sqhflhikcailqnwi@treble> <1515680912.22302.351.camel@infradead.org> <20180111143206.GA6176@hirez.programming.kicks-ass.net> <1515682437.22302.355.camel@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <1515682437.22302.355.camel@infradead.org> User-Agent: Mutt/1.6.0.1 (2016-04-01) X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.29]); Thu, 11 Jan 2018 15:04:45 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Return-Path: On Thu, Jan 11, 2018 at 02:53:57PM +0000, David Woodhouse wrote: > On Thu, 2018-01-11 at 15:32 +0100, Peter Zijlstra wrote: > > On Thu, Jan 11, 2018 at 02:28:32PM +0000, David Woodhouse wrote: > > > > > > On Thu, 2018-01-11 at 08:20 -0600, Josh Poimboeuf wrote: > > > > > > > > > > > > This seems weird.  I liked v1 a lot better.  What's the problem with > > > > patching in the whole thing? > > > > > > > > Also, if you go back to v1, it should be an easy objtool fix, just add > > > > ANNOTATE_NOSPEC_ALTERNATIVE in front of it. > > > The objection was that I was patching in a fairly long set of > > > instructions. I confess I don't actually know why that's a problem, > > > > You get a giant string of NOPs, a single jmp should be faster. > > How about this one then (with ANNOTATE_NOSPEC_ALTERNATIVE): > > -       asm volatile (ALTERNATIVE("", > +       asm volatile (ALTERNATIVE("jmp " alt_end_marker "f", >                                   __stringify(__FILL_RETURN_BUFFER(%0, %1, _%=)), >                                   X86_FEATURE_RETPOLINE) >                       : "=r" (dummy), ASM_CALL_CONSTRAINT : : "memory" ); Looks good to me. Another IRC discussion was that Boris may eventually add a feature to the alternatives code to automatically insert such a jump if there are a lot of nops. -- Josh