From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754322AbaA0XJK (ORCPT ); Mon, 27 Jan 2014 18:09:10 -0500 Received: from zeniv.linux.org.uk ([195.92.253.2]:44469 "EHLO ZenIV.linux.org.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753413AbaA0XJJ (ORCPT ); Mon, 27 Jan 2014 18:09:09 -0500 Date: Mon, 27 Jan 2014 23:07:53 +0000 From: Al Viro To: Linus Torvalds Cc: Andy Lutomirski , Peter Anvin , Ingo Molnar , Thomas Gleixner , Peter Zijlstra , the arch/x86 maintainers , Linux Kernel Mailing List Subject: Re: [RFC] de-asmify the x86-64 system call slowpath Message-ID: <20140127230753.GF10323@ZenIV.linux.org.uk> References: <20140127002255.GA10323@ZenIV.linux.org.uk> <20140127074208.GB10323@ZenIV.linux.org.uk> <52E6D866.604@amacapital.net> <20140127223257.GE10323@ZenIV.linux.org.uk> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, Jan 27, 2014 at 02:43:14PM -0800, Linus Torvalds wrote: > On Mon, Jan 27, 2014 at 2:32 PM, Al Viro wrote: > > > > do_signal() is also a place where arbitrary changes to regs might've > > been done by tracer, so regs->cs might need to be checked in the same > > place where we validate regs->rip ;-/ > > Fair enough. But it would still be really easy, and make the common > case signal delivery a bit faster. > > Now, sadly, most signal delivery is then followed by sigreturn (the > exceptions being dying or doing a longjmp), so we'd still get the > iretq then. But it would cut the iretq's related to signals in half. > > We *could* try to do sigreturn with sysret and a small trampoline too, > of course. But I'm not sure how far I'd want to take it. The problem with validation is that we'll suddenly become sensitive to hard-to-estimate pile of hardware bugs ;-/ E.g. which AMD-specific errata is that comment in entry_64.S about? The one I kinda-sorta remember is Intel-specific, and that was about uncanonical RIP; looking for AMD one has turned #353 (with suggested workaround being "have bit 16 set in whatever you put into R11"), but I've no idea whether that's the only potential issue there...