From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932961AbbCRSRY (ORCPT ); Wed, 18 Mar 2015 14:17:24 -0400 Received: from mail-la0-f47.google.com ([209.85.215.47]:33945 "EHLO mail-la0-f47.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756547AbbCRSRW (ORCPT ); Wed, 18 Mar 2015 14:17:22 -0400 Date: Wed, 18 Mar 2015 21:17:18 +0300 From: Cyrill Gorcunov To: Andy Lutomirski Cc: Oleg Nesterov , Andrey Wagin , Andy Lutomirski , Ingo Molnar , Andi Kleen , "H. Peter Anvin" , Al Viro , X86 ML , LKML , Linus Torvalds , Borislav Petkov , Pavel Emelyanov Subject: Re: [PATCH v3 1/2] x86_64,signal: Fix SS handling for signals delivered to 64-bit programs Message-ID: <20150318181718.GG2255@moon> References: <405594361340a2ec32f8e2b115c142df0e180d8e.1426193719.git.luto@kernel.org> <20150318174843.GA32238@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.23 (2014-03-12) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Mar 18, 2015 at 11:06:00AM -0700, Andy Lutomirski wrote: > > --- a/arch/x86/crtools.c > > +++ b/arch/x86/crtools.c > > @@ -475,6 +475,7 @@ int restore_gpregs(struct rt_sigframe *f, UserX86RegsEntry *r) > > CPREG2(rip, ip); > > CPREG2(eflags, flags); > > CPREG1(cs); > > + CPREG1(ss); > > CPREG1(gs); > > CPREG1(fs); > > Huh? Is CRIU actually trying to build an entire sigcontext from > scratch here? I don't see how this can reliably work across kernel > versions or CPU versions. Yes we are. And why it can't work reliably? As to CPU -- we're testing that cpu features saved in image should match ones provided by the kernel runtime, ie on the machine where we're restoring. > Also, what's up with CPREG1(gs) and CPREG1(fs)? I assume that's > redundant, because that hasn't worked for many years, but CRIU works, > so there must be correct code somewhere to restore those regs. Basically the initial registers values are fetched with ptrace when program is been dumped, then on restore we copy them back into sigcontext. That said we don't mangle fs/gs anyhow simply restore the values back from dump.