Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934040AbdCUTrU (ORCPT ); Tue, 21 Mar 2017 15:47:20 -0400 Received: from mail-eopbgr50131.outbound.protection.outlook.com ([40.107.5.131]:61536 "EHLO EUR03-VE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S933142AbdCUTp5 (ORCPT ); Tue, 21 Mar 2017 15:45:57 -0400 Authentication-Results: virtuozzo.com; dkim=none (message not signed) header.d=none;virtuozzo.com; dmarc=none action=none header.from=virtuozzo.com; Subject: Re: [PATCHv2] x86/mm: set x32 syscall bit in SET_PERSONALITY() To: Andy Lutomirski References: <20170321163712.20334-1-dsafonov@virtuozzo.com> <20170321171723.GB21564@uranus.lan> <6648805c-e0d8-5e27-9e19-602ab47937a7@virtuozzo.com> CC: Cyrill Gorcunov , "linux-kernel@vger.kernel.org" , Dmitry Safonov <0x7f454c46@gmail.com>, Adam Borowski , "linux-mm@kvack.org" , Andrei Vagin , Borislav Petkov , "Kirill A. Shutemov" , X86 ML , "H. Peter Anvin" , Andy Lutomirski , Ingo Molnar , Thomas Gleixner From: Dmitry Safonov Message-ID: <3ff42889-4ba3-15e5-0e77-b3bd1db7619f@virtuozzo.com> Date: Tue, 21 Mar 2017 22:42:07 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.7.1 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: HE1P190CA0017.EURP190.PROD.OUTLOOK.COM (10.172.123.27) To AM5PR0801MB1731.eurprd08.prod.outlook.com (10.169.247.9) X-MS-Office365-Filtering-Correlation-Id: 46df4fe0-47d4-4d80-b41a-08d47092e269 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001);SRVR:AM5PR0801MB1731; X-Microsoft-Exchange-Diagnostics: 1;AM5PR0801MB1731;3:g7hMt21Ar5Xi58PKvBhAVvQPo9bo1WaBRvm4vFmjakuZjFOcXObn5zlHyFu1o+1sz9nagaLeGmTHpea7Bt4UjjEsbD8lzWqVrGcitUt39bwGL/X1gNVnY6O1wZttMyQHeP37QazCMZ+dpSWnVIGR3NvtIwbZzmJNcyx6BCfQZ/V8eNzT0E4UX+5bTXlb8D5yT2/tGqjdsONn3Tz/cGJXY7+Ccxnlhc8X0EeYsJv8zOfpPfUJkQrEzC2fTsNsq/T6dPwAbq3WFn9pow6mhTf1rg==;25:OeUITFAjjZUrG+Gx0VR0QSchpAD2xeR8grNqOX54LItdiYzyWCw2+/A6f/kwp6CqD5V7kXPeO04jS+8hjXn3VhKPXKI9+UY+egJV//LvjIyLXaxiCmC3VjgcdZuSHYWaci7mMAfSqGIUQfoWjlVvHNVvfRTz6i8rtlOdPFqJI/UtUFVywkiLqiUiECZT1l42+HLJrTWAzipn4KMxlbzEa1QxPlAm3dNh6uo/bRP5KNq8x3mFQIZla5wUvFWxzFrTc8y4SQFxeCUVmxGUA0EVG/gZ5ZHE5+B5lxixI9C+kAwUdK0fMjeRgG+rkXYZ4RPI8SMS8sfb5kLLP2OjGY0KeL5pDtCOslzp7Th4PZInsg1jwWgRsdLrR+1bSwm3NS0Z4KYLSzab2LMrKixQVQSfOWA6+2oOZuHQFqomSEZ2T0mrw5S4SgqRCdFCoRpVc55dF/n3I2wKJvH3kONqHUR5lA== X-Microsoft-Exchange-Diagnostics: 1;AM5PR0801MB1731;31:T+g9He4vq8WVRMgx8AvaWVTT9X2QNJSy9/TaTXUbs90tmU7JQZapYmE54rc2G4E9JGyBj4GhCirnVfZCe0bVYRW2k9OuQpiN9V7ysj4u+xYD5el/NJ3grQoMaqmqMpaCC4hdwLuakEZUJn/ORbD5/I+m/mq3HHDNV8NKm3J1TTA/pVriSQVwSAC/DzYHiS2CopB/mZIL49weIHHj98RlcDxZyVtKmO4S6R6KNH2zveA=;20:kFI/FDB0UqOUBXEEflVY3jNzQSwkfegdoHRV/GyjP/4uDuJ2bDQxM691Z4fTNAewyXk5nkaeFJ8U1k3VLSe17hY4jZNHnX230rCJeHyGfiT/ltP31aPccBSdW32dLcB+QmIWP0kQhq4xyGzIbuEg1FbAlHfslqaa7CzAxwt4Xp/vkG9B5XnJBSBvr7kF3OsS7saJ8NHl9xO3ltYg+zA/W0hGVSo0At+AULwsOiW/ci1+piwdDlqdGwBtBXLpcjlTrLa3GUaCTjjOpMX/iv4AzVK8L6dTtJy0Rhwy3V/ZS7EXheSxLn22vWtRo4fet/j8H+OzWTm4FyzOI6m/PawUzO33ck8Bjlc8hxMZ+hU9+RfS+3j1gIbTjA2+cyjxlQjeD4Gbp5lb/ejiYrfbzCeoso/BjhKl9Y5rBkHl771C7eg= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(278428928389397); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040375)(601004)(2401047)(5005006)(8121501046)(10201501046)(3002001)(6041248)(20161123560025)(20161123562025)(20161123558025)(20161123564025)(20161123555025)(6072148);SRVR:AM5PR0801MB1731;BCL:0;PCL:0;RULEID:;SRVR:AM5PR0801MB1731; X-Microsoft-Exchange-Diagnostics: 1;AM5PR0801MB1731;4:bEcLvXQEXzTcwyEN62osJDgq6OswN+1NHfOCPUQ9e9RDrkpMZvFJkBUZRiT2rVziOaFm/U+g7CElXILC8LXS8C8huUJl9q+nJr1zr8Wflo0FaMMPGCwERPyIrKynmigOVmz2IRjeXDdm29OB4U9jXolWHfuql/I23oij0vjucnCTzhfTPRS8c9XKZNn+6ptatVhWTOg1oct+/21DEbUOsYTeuvlJBfVLCxnzDof/h7gTz4ASNV2lGi8L6Il82NiezJImYJLXhAQ5Xwl5lN+2AtOXgJ886k5ieBZObhADfdv/XwOoX2DB1fBQFLTkfWTZ1ZJ98qW1KKq/8bhCPF0IDwDGIM/+6jUW9P8ySX0pTQTAnFFAyYcX9cEgmU6r+Y/sadf4NmKRC5864b0kLDNH5aLb3m8ddOVZuP9J/qujYWgWCVVE/UJhT0UN+4JuAxh57e2S3CimLzAKdYWFBCdZ0TsFyDJMk7HB2sgZtAEJRnmKyo2NskUwxuoDG8ZM+L/IiavS6+wjdTqNXV6vnA60c33Z1WiC2AbhfYcMfYzD+JzewgiBXfsw40Sjgd3IS9sjjhJwvuL3Eh5wP2FUC2ZpSdONIIprvCMuoD0OKFanxNzZGLde2TDtIcnjBYkx6l5wQ9ef+pq+23/EwSgPXaIVkQ== X-Forefront-PRVS: 02530BD3AA X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6049001)(6009001)(39410400002)(39450400003)(39830400002)(377454003)(24454002)(189998001)(77096006)(90366009)(50466002)(53936002)(83506001)(6666003)(65956001)(8676002)(305945005)(76176999)(64126003)(33646002)(31696002)(229853002)(6486002)(53546009)(50986999)(7736002)(31686004)(6916009)(86362001)(36756003)(54356999)(5660300001)(7416002)(42186005)(81166006)(23676002)(54906002)(4326008)(3846002)(2906002)(230700001)(2950100002)(6116002)(4001350100001)(38730400002)(47776003)(110136004)(66066001)(93886004)(25786009);DIR:OUT;SFP:1102;SCL:1;SRVR:AM5PR0801MB1731;H:[172.16.25.13];FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtBTTVQUjA4MDFNQjE3MzE7MjM6UTN1RVI2WDVMUFh5S25qM2Z3REl3TVJP?= =?utf-8?B?UWJtOEF2UzVjMVhNOVVwVUx5d0ZlSkVjcW9vanZNYTFUcFhHZnFBZ2hhQTVh?= =?utf-8?B?NW9raDkzTmVYTzNuRmVMSVh0UkpLRzJISlM3aG5ReE9lRTlWNCt5VGZsUkg2?= =?utf-8?B?SWIrWDFTSTlxdVpobG1jenJqZUV0TGN1OHdHblh4ZklneUNxRFMzZGh3REQx?= =?utf-8?B?U2FHUVAyNmhjY25hZE1YUTdueDl0SzhLa0JxUDFmVi9pV2ErZUw4c1QwMVFN?= =?utf-8?B?eGFzN25JUEE3RTdsN1RPajRwSXNUcFpHa1VPSjJKYmtkbW02cHNwQzJnUDIz?= =?utf-8?B?eU12dmdtbkVMOXdTeGliSk9PQ3VEN2JycHc5amlCRzlaeEJidDRxSVVJWUx3?= =?utf-8?B?Nzk3bHB4bzljM1g1bnJUaW1DS2wvWGVpQ0ZsQVN0RE12czFlV1FnVGdNZUU2?= =?utf-8?B?TElKWnBJdDJreHNxRFRzV25ld1VkUXhTNXhNRXNCK0JLV1hQOUxvajQ2TU1r?= =?utf-8?B?Mm96amtZVXhEU0Y2NHJDM0JuamJlZEhFSHorWGswbE1KTzZxSnlBbTl4RHJT?= =?utf-8?B?Tm5vdm1YQUhJcDJlZzRnKzU0c1BpSkF3ODViTFFlakxmRWU1azFsTWZGS2NG?= =?utf-8?B?MUVuSWd0YWg1MmNNQ0tPNStPS01USm5obmdab09GTEtSTDNrcjBYcUxXUXd6?= =?utf-8?B?RFh6b3AxRHhiRmkxcGxpRS9xeDFveUp4MHVtcWpib1RwRW5vV2VpanBVMy90?= =?utf-8?B?UHpRNElMcEdmcWlPOVFhR2k2cE4xaGhBYWd6U3RuYVA4ejd0KzlveDVPVjNQ?= =?utf-8?B?NTBNcXZsYWdPbUg3cm9veUp3dDh1OWVBb0VxejdBSGthcUMvOXhBUjJFd3ZC?= =?utf-8?B?SFVsNS90em43VFp0N00vMWprems0ZlZvZ2lJNG9qTStjOHUxKzU1R0hRUjVs?= =?utf-8?B?U2I4cXVTLzlCcEwyNXJ0UHNkQ1paNlBNb1NPcGpZb25HRlV2YlVOTzkrTDJK?= =?utf-8?B?ZGwwN1RjVTlLU0xXWHNwSjVQZlUwRHJJR2E4RHE5MW55Q1llT3l5WUkzMW42?= =?utf-8?B?c2dOeHl6ZXA1emRIWHIrRDNQc0dmSGhIaGpJRHp1ZWtwUkV0WVV3N3hMUnpm?= =?utf-8?B?SFZ0L3pwVVhIVC8rYVgvL29TZGxCM1pLbWRNMzdiMFF2RVJBNC9hb3J0SjVh?= =?utf-8?B?ak5MdGpDczA1ZGY4S1AxUEg1TzFWOEFoV093bk9ScGpHMWRCRjNScGg5TW52?= =?utf-8?B?S2xzaVNTeHBjVzBvM0ZHRDQ1VHcwZzMySGFpRmQ0Q0JacnhsVlBWQXhiN0JK?= =?utf-8?B?THg5VGVzNWZVTUdCczloQTh2T2gvdFRWSlA3bGJKUEtTeEt1UjgvOVRXa0hn?= =?utf-8?B?K3duQ0s0M3Y3SG1WK2hUUVhWWUwvckQwb2tEUno0WndxSU5HMU1pdkcxeDdj?= =?utf-8?B?ck8rVVFGWXNISFZSd1pSUDhLcUlOQXg2dGtxRXJMQXI2L0MvODZOYzZQVDA2?= =?utf-8?B?VDJ0bUZ2SE1teGhTdERsRmxCbzM3QzUzTXNReGVNWGhXM3Y0VXcxdmxQVmZq?= =?utf-8?B?bGo1ZzZWUVQ5aDZNOEIrbm54eTMvZ241cVMrMWRlbXM2R0hUUUE5L3hiMDdx?= =?utf-8?B?MldWZjRtd09XWks0ejdtS29aSXNNMnJkdFFxWVd5c0wxSzhIZXhubFZzZjU5?= =?utf-8?Q?XBdsrEKew4HFJY47+zpM=3D?= X-Microsoft-Exchange-Diagnostics: 1;AM5PR0801MB1731;6:vDL9JK0g+wxwhZgcXpN5l4tTyoZwtcIU1N/CWQnImt7G1+ntelcH8YZqIDMttv0FiGzwxm0IDx7PmFStkiKck10VLtsoqa2VTb519wJ4Vb8aFIPzly7hhO5YGcP3bBAhicwyHDaUQPXR/eItI4bi8JmYtUkOUCwni/YI2LhGYVKVgLnB99BJIObAavLdEKYgyoxjMZ8jr6xgym5eKXE27c9KIwQrLgOGuAxLxRowtOvlyZcp3JQaEWJ6/oWOGQ+Jz+/inhcGYjBouWuJ11J01jBDYrP5yjF2Rk+rn47Wt2bFZhzQ93EJJiQ1BjVwhztzN75G9G9+MVfiyY3mB7LDZ07vumx0W2H3yf5e9JbmgJ4CY2uUzaYoaRG2MxneElndq5Ny5IU38cGzLAG64F0Sjg==;5:SvKKR6calFoLWrIqORpnWrQVVAZeFKr5Yu1nnr17HrSw/4gZ+X5fkl5M5qvRZzy4qO/v5ABx1Lbafw1khmiexIGfSR3Hr83NmL2BKWiXLo9kYSLTuYFEyo109697gVM5XbK1DQCCeFTOQ1Aj21vAuA==;24:Sf9BTGdEuWFhNJGYHuMRILmOecztgLWWIPWEPHRx+5mdYH71GD1eLxFnpPOf6qnbjDFEtO43obZs0WkuVHYoZ3pben1enNSFv2f5uIDn7CM= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;AM5PR0801MB1731;7:HgSo0/9/vaMXy9+MzjqbgnjUsMJkAztqmf7CRXLbFOeejaBOyDSJeICcntJEicR+MOPj9XntRY2n2o845j9sw4lvgHAGQl2TQ6SfgoWtvXKojak4cJtDkNBVaJzgg5S1o8J4rPpwNeZwVsXcbLuUccnqLtx/nO1pG30/c43/WlmZOQ6hvm+nk9CgFaAxWxtTOS0KLn/60VjsZJJwzCR+Yrl0BGwEqSpIsy2wW5AlcA0hYrMf7Bl+fG8arhMdhkC9NRNUA0kP+N8hLhQ0tNRVxCqzQ8YOV2i2O55snC82AgPC+5PyXDQqReVBnyUxn8fWHVB4KF1yu2RyHRL1Kx6XLw==;20:pEw74IXop7NcgbS7FzLEGEu0vvdUGjT6WE31Oc1gKQQb3ZDVrLyMWCeOweBZadvAIc7kmnyUFIq+3xU9PIWvGNFylxyq7uN4q64ds/VgGfn9Uf8Acko5DmYEmEmu4pXEY2FeYOxma2kBAj3kTYPHtfFuFKNtl9ADRbzRVMCa6wE= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Mar 2017 19:45:51.8155 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR0801MB1731 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2910 Lines: 70 On 03/21/2017 10:31 PM, Andy Lutomirski wrote: > On Tue, Mar 21, 2017 at 11:09 AM, Dmitry Safonov wrote: >> On 03/21/2017 08:45 PM, Andy Lutomirski wrote: >>> >>> On Tue, Mar 21, 2017 at 10:17 AM, Cyrill Gorcunov >>> wrote: >>>> >>>> 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? >>> >>> >>> You should be able to figure out of a *syscall* is x32 by simply >>> looking at bit 30 in the syscall number. (This is unlike i386, which >>> is currently not reflected in ptrace.) >> >> >> The process could be stopped with PTRACE_SEIZE and I think, it'll not >> have x32 syscall bit at that moment. >> >> I guess the question comes from that we're releasing CRIU 3.0 with >> 32-bit C/R and some other cool stuff, but we don't support x32 yet. >> As we don't want release a thing that we aren't properly testing. >> So for a while we should error on dumping x32 applications. > > I'm curious: shouldn't x32 CRIU just work? What goes wrong? I also think, it should be quite easy to add, as we have arch_prctl() for vdso and etc. But there are things, which will not work if we just dump application as 64-bit. For example, what comes to mind: sys_get_robust_list(), it has different pointers for 64-bit or for x32/ia32 applications: robust_list and compat_robust_list. So during C/R we should sometimes call compatible syscalls for x32 applications to dump/restore, as for futex list e.g., native will return NULL or empty list. > > --Andy > -- Dmitry