Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933532AbdCURRa (ORCPT ); Tue, 21 Mar 2017 13:17:30 -0400 Received: from mail-lf0-f68.google.com ([209.85.215.68]:33068 "EHLO mail-lf0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933396AbdCURR2 (ORCPT ); Tue, 21 Mar 2017 13:17:28 -0400 Date: Tue, 21 Mar 2017 20:17:23 +0300 From: Cyrill Gorcunov To: Dmitry Safonov Cc: linux-kernel@vger.kernel.org, 0x7f454c46@gmail.com, Adam Borowski , linux-mm@kvack.org, Andrei Vagin , Borislav Petkov , "Kirill A. Shutemov" , x86@kernel.org, "H. Peter Anvin" , Andy Lutomirski , Ingo Molnar , Thomas Gleixner Subject: Re: [PATCHv2] x86/mm: set x32 syscall bit in SET_PERSONALITY() Message-ID: <20170321171723.GB21564@uranus.lan> References: <20170321163712.20334-1-dsafonov@virtuozzo.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20170321163712.20334-1-dsafonov@virtuozzo.com> User-Agent: Mutt/1.7.1 (2016-10-04) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1166 Lines: 26 On Tue, Mar 21, 2017 at 07:37:12PM +0300, Dmitry Safonov wrote: ... > diff --git a/arch/x86/kernel/process_64.c b/arch/x86/kernel/process_64.c > index d6b784a5520d..d3d4d9abcaf8 100644 > --- a/arch/x86/kernel/process_64.c > +++ b/arch/x86/kernel/process_64.c > @@ -519,8 +519,14 @@ void set_personality_ia32(bool x32) > if (current->mm) > current->mm->context.ia32_compat = TIF_X32; > current->personality &= ~READ_IMPLIES_EXEC; > - /* in_compat_syscall() uses the presence of the x32 > - syscall bit flag to determine compat status */ > + /* > + * in_compat_syscall() uses the presence of the x32 > + * syscall bit flag to determine compat status. > + * On the bitness of syscall relies x86 mmap() code, > + * so set x32 syscall bit right here to make > + * in_compat_syscall() work during exec(). > + */ > + task_pt_regs(current)->orig_ax |= __X32_SYSCALL_BIT; > current->thread.status &= ~TS_COMPAT; Hi! I must admit I didn't follow close the overall series (so can't comment much here :) but I have a slightly unrelated question -- is there a way to figure out if task is running in x32 mode say with some ptrace or procfs sign?