From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S966240AbbDWPl5 (ORCPT ); Thu, 23 Apr 2015 11:41:57 -0400 Received: from mail-lb0-f172.google.com ([209.85.217.172]:34083 "EHLO mail-lb0-f172.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753459AbbDWPlh (ORCPT ); Thu, 23 Apr 2015 11:41:37 -0400 MIME-Version: 1.0 In-Reply-To: <20150423151047.GJ28327@pd.tnic> References: <1429633649-20169-1-git-send-email-dvlasenk@redhat.com> <20150423151047.GJ28327@pd.tnic> From: Andy Lutomirski Date: Thu, 23 Apr 2015 08:41:15 -0700 Message-ID: Subject: Re: [PATCH] x86/asm/entry/64: better check for canonical address To: Borislav Petkov Cc: Denys Vlasenko , Ingo Molnar , Linus Torvalds , Steven Rostedt , "H. Peter Anvin" , Oleg Nesterov , Frederic Weisbecker , Alexei Starovoitov , Will Drewry , Kees Cook , X86 ML , "linux-kernel@vger.kernel.org" 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 Thu, Apr 23, 2015 at 8:10 AM, Borislav Petkov wrote: > On Tue, Apr 21, 2015 at 11:08:42AM -0700, Andy Lutomirski wrote: >> I'll take a full implementation of what Intel says over probably >> unmeasurable performance. If anyone in the AMD camp really cared, we >> could add X86_BUG_SYSRET_NEEDS_CANONICAL_RCX and use alternatives to >> patch this out on AMD. I doubt this would buy us much. > > Err, why do we care if RCX is canonical when executing SYSRET? > > The RIP canonicalness test is being done anyway and we read RIP from > RCX. What am I missing? I was rather vague there. Let me try again: If anyone in the AMD camp really cared, we could add a new bug flag X86_BUG_SYSRET_NEEDS_CANONICAL_RCX and set it on Intel chips only, so we could use alternatives to patch out the check when running on sensible AMD hardware. This would speed the slow path up by a couple of cycles on AMD chips. Does that make more sense? We could call it X86_BUG_SYSRET_NEEDS_CANONICAL_RIP if that makes more sense. --Andy