Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751691AbbHLUOJ (ORCPT ); Wed, 12 Aug 2015 16:14:09 -0400 Received: from smtp2.mail.ru ([94.100.179.91]:35988 "EHLO smtp2.mail.ru" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750767AbbHLUOI (ORCPT ); Wed, 12 Aug 2015 16:14:08 -0400 Subject: Re: [regression] x86/signal/64: Fix SS handling for signals delivered to 64-bit programs breaks dosemu To: Andy Lutomirski References: <55CA90B4.2010205@list.ru> <55CAFD9F.2070001@list.ru> <55CB7BAE.9090503@list.ru> <55CB9697.1050602@list.ru> <55CBA4CE.1040108@list.ru> Cc: X86 ML , Linux kernel From: Stas Sergeev Message-ID: <55CBA909.3020306@list.ru> Date: Wed, 12 Aug 2015 23:14:01 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.1.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit X-Mras: Ok Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1811 Lines: 36 12.08.2015 23:01, Andy Lutomirski пишет: > On Wed, Aug 12, 2015 at 12:55 PM, Stas Sergeev wrote: >> 12.08.2015 22:20, Andy Lutomirski пишет: >>> current kernels, it stays switched. If we change this, it won't stay >>> switched. Even ignoring old ABI, it's not really clear to me what the >>> right thing to do is. >> There can be the following cases: >> - switch_userspace_thread() switches fs to non-zero selector >> - switch_userspace_thread() switches the fs base via syscall >> - switch_userspace_thread() switches fs in sigcontext >> - switch_userspace_thread() switches fs_base in sigcontext (???) >> What exactly case do you have in mind? >> I'd say, the way x86_32 is doing things - is good, but the >> bases... perhaps, in ideal world, they should be a part of >> the sigcontext as well? > Any of the above. What do you want the kernel to do, and how does the > kernel know you want to do that? The kernel has to pick *some* > semantics here. Assuming the bases are made the part of a sigcontext, I'd say there would be no ambiguities remained at all: whatever you change in a sigcontext, will be "applied" by the sigreturn(). Whatever you put in the registers (either segregs or MSRs), is valid until sigreturn(), then forgotten forever. The mess only comes in when some things are part of sigcontext and some are not. But if you have _all_ things accessable in sigcontext, then the user has a way of expressing his needs very clearly: he'll either touch sigcontext or direct values, depending on what he need. Is this right? -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/