From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Google-Smtp-Source: AH8x224mb+omuxXMsEly47XZLJF95CN3EMs2r3nehQkQjlTRXSS/XdG7Wvk6YN8ZLZoK1GRK8F/G ARC-Seal: i=1; a=rsa-sha256; t=1516874569; cv=none; d=google.com; s=arc-20160816; b=k4lM8VG8oBqozE4u6NYP2oQi9I6n69/TziFMC5S3FQny5iXb8TIy0fKTr/FZ0ANZPR L7rn0gqW3/woAgjB8ym8C/Cv+nA1oaRwN1beakZw3ziTL24db/8dOVi/5NwT40DZPSwZ S98HnDhmlAi8SaF/cOb8tFJzZL6rl01PPMlIQWvOc+SfPEuDnyeU7IOsN76fQJo1QAVU mWkdHcNpj+XDrPUhtY3Xdl3bv9rLKSfPXtaACFNtmsXokZvmmVrBuZdxdwiTQf/Svkid 8gF5Or7PyBkcKtsIk2mYTaUafsdiNCuHqJ+ljNRTE5llA7vys0Qoiju0gIumzlq8VQr9 zZjw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-disposition:mime-version:references:subject:cc:to:from:date :user-agent:message-id:dkim-signature:arc-authentication-results; bh=A7IMHlCWxLc+IvOmVSMQgQubZ3UC90ZcEQF5HjwrBd0=; b=zrMAClWUGwquFWAy3nCZS5qGrQvzu2lh2kauFkqNItBErTFLxdVf+LK6MDuMlPTtZE EO9/iHLyM2BmPcZ1fgJl29lANjSAY+fghf8r27WyM0zOKmbJC9/Q1YsvsuJvDAzgdqAl XjjJAz53vuIcreOo/CmuOHWe0RvJIcQ148B8m8gsjcHR+Md0AbYYSMorOZbPVxqRay1J jiJQSNPJhv1DJQJoZ87D1NJfmw52SPAPuwgXunEvH5qDLi2OI2E5FdbgRg4rElB43qLS HBWBHNHEYx7zTKOZq0f26KTjWY2W+T3YI+tf/h8yZh193fxRJVRq713rV2AFtUjz+y8C ytFQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=qh7ppr6S; spf=pass (google.com: best guess record for domain of peterz@infradead.org designates 65.50.211.133 as permitted sender) smtp.mailfrom=peterz@infradead.org Authentication-Results: mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=qh7ppr6S; spf=pass (google.com: best guess record for domain of peterz@infradead.org designates 65.50.211.133 as permitted sender) smtp.mailfrom=peterz@infradead.org Message-Id: <20180125095843.595615683@infradead.org> User-Agent: quilt/0.63-1 Date: Thu, 25 Jan 2018 10:58:13 +0100 From: Peter Zijlstra To: David Woodhouse , Thomas Gleixner , Josh Poimboeuf Cc: linux-kernel@vger.kernel.org, Dave Hansen , Ashok Raj , Tim Chen , Andy Lutomirski , Linus Torvalds , Greg KH , Andrea Arcangeli , Andi Kleen , Arjan Van De Ven , Dan Williams , Paolo Bonzini , Jun Nakajima , Asit Mallick , Jason Baron , rga@amazon.de, Peter Zijlstra , David Woodhouse Subject: [PATCH 1/2] x86,kvm: Fix indirect calls in emulator References: <20180125095812.447754815@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Disposition: inline; filename=peterz-kvm-retpoline.patch X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: =?utf-8?q?1590558268487293490?= X-GMAIL-MSGID: =?utf-8?q?1590558268487293490?= X-Mailing-List: linux-kernel@vger.kernel.org List-ID: Replace the indirect calls with CALL_NOSPEC. Cc: Paolo Bonzini Reviewed-by: David Woodhouse Signed-off-by: Peter Zijlstra (Intel) --- arch/x86/kvm/emulate.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) --- a/arch/x86/kvm/emulate.c +++ b/arch/x86/kvm/emulate.c @@ -25,6 +25,7 @@ #include #include #include +#include #include "x86.h" #include "tss.h" @@ -1021,8 +1022,8 @@ static __always_inline u8 test_cc(unsign void (*fop)(void) = (void *)em_setcc + 4 * (condition & 0xf); flags = (flags & EFLAGS_MASK) | X86_EFLAGS_IF; - asm("push %[flags]; popf; call *%[fastop]" - : "=a"(rc) : [fastop]"r"(fop), [flags]"r"(flags)); + asm("push %[flags]; popf; " CALL_NOSPEC + : "=a"(rc) : [thunk_target]"r"(fop), [flags]"r"(flags)); return rc; } @@ -5335,9 +5336,9 @@ static int fastop(struct x86_emulate_ctx if (!(ctxt->d & ByteOp)) fop += __ffs(ctxt->dst.bytes) * FASTOP_SIZE; - asm("push %[flags]; popf; call *%[fastop]; pushf; pop %[flags]\n" + asm("push %[flags]; popf; " CALL_NOSPEC " ; pushf; pop %[flags]\n" : "+a"(ctxt->dst.val), "+d"(ctxt->src.val), [flags]"+D"(flags), - [fastop]"+S"(fop), ASM_CALL_CONSTRAINT + [thunk_target]"+S"(fop), ASM_CALL_CONSTRAINT : "c"(ctxt->src2.val)); ctxt->eflags = (ctxt->eflags & ~EFLAGS_MASK) | (flags & EFLAGS_MASK);