From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754580AbbHNBWT (ORCPT ); Thu, 13 Aug 2015 21:22:19 -0400 Received: from mail-oi0-f43.google.com ([209.85.218.43]:32846 "EHLO mail-oi0-f43.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751952AbbHNBWR convert rfc822-to-8bit (ORCPT ); Thu, 13 Aug 2015 21:22:17 -0400 MIME-Version: 1.0 In-Reply-To: <55CD3B3F.9040203@list.ru> References: <55CA90B4.2010205@list.ru> <55CCD921.4040301@list.ru> <20150813200823.GS2059@uranus> <55CD0F29.4070604@gmail.com> <55CD13F3.1070904@list.ru> <55CD1968.7070002@list.ru> <55CD1F79.2010508@list.ru> <55CD2F9A.9040300@list.ru> <55CD3382.5070506@list.ru> <55CD3B3F.9040203@list.ru> From: Andy Lutomirski Date: Thu, 13 Aug 2015 18:21:57 -0700 Message-ID: Subject: Re: [regression] x86/signal/64: Fix SS handling for signals delivered to 64-bit programs breaks dosemu To: Stas Sergeev Cc: Linus Torvalds , Raymond Jennings , Cyrill Gorcunov , Pavel Emelyanov , Linux kernel Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8BIT Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Aug 13, 2015 at 5:50 PM, Stas Sergeev wrote: > 14.08.2015 03:27, Linus Torvalds пишет: >> >> On Thu, Aug 13, 2015 at 5:17 PM, Stas Sergeev wrote: >>> >>> For example because you can as well do: >>> prctl(ARCH_SET_SIGNAL_SS, 0) >>> which will mean "restore ss in sighandler to its current value", >> >> I really think a prctl() is the wrong thing to do. >> >> If you want a signal handler to save/restore segments, I think it >> should be a SA_xyz flag to sigaction() (the way we have SA_RESTART > > Yes, I was proposing the new sigaction() flag in this thread > already too. But at the end, prctl() looks better to me because > it allows to pass the TLS value to use when restoring FS. > The thing is that I am trying to find the similar treatment for > both the SS and FS problems. If you don't think they need a > similar treatment, then perhaps the Andy's patch is enough. > >> etc). And off by default because of the obvious compatibility issues. > > Of course. > > So, what we have right now (in the latest Andy's patch) is: > 1. lar heuristics > 2. new uc_flags flag > > What it solves: dosemu's regression. > > What prctl() can give: > - fix to dosemu's regression > - fix to the TLS problem in the future > - no hack and heuristics > > With SA_xyz you can only solve the SS problem, so it is > probably not any better than the uc_flags things coded > up by Andy. I'm leaning slightly toward LAR heuristic + SA_SAVE_SS. Using a sigaction flag is a bit less weird than using uc_flags. It's also kind of nice that it's more composable -- you can install a SIGUSR1 handler that's just normal code and set SA_SAVE_SS and it'll work, whereas with uc_flags you need to explicitly twiddle uc_flags in the handler. Unfortunately, I don't think we were clever enough to allow this to be probed easily -- we silently ignore unrecognized sa_flags bits. --Andy -- Andy Lutomirski AMA Capital Management, LLC