From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755378AbcDHQgE (ORCPT ); Fri, 8 Apr 2016 12:36:04 -0400 Received: from mail-am1on0103.outbound.protection.outlook.com ([157.56.112.103]:49008 "EHLO emea01-am1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751981AbcDHQgB (ORCPT ); Fri, 8 Apr 2016 12:36:01 -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: [PATCH 1/2] x86/arch_prctl: add ARCH_SET_{COMPAT,NATIVE} to change compatible mode To: Andy Lutomirski References: <1459960170-4454-1-git-send-email-dsafonov@virtuozzo.com> <1459960170-4454-2-git-send-email-dsafonov@virtuozzo.com> <57064E6C.2030202@virtuozzo.com> <5707B70F.9080402@virtuozzo.com> CC: Thomas Gleixner , Dmitry Safonov <0x7f454c46@gmail.com>, Dave Hansen , Ingo Molnar , Shuah Khan , Borislav Petkov , X86 ML , , Andrew Morton , , , Cyrill Gorcunov , "linux-kernel@vger.kernel.org" , "H. Peter Anvin" From: Dmitry Safonov Message-ID: <5707D9F1.3090102@virtuozzo.com> Date: Fri, 8 Apr 2016 19:18:57 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.7.0 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.10] X-ClientProxiedBy: AMSPR04CA0036.eurprd04.prod.outlook.com (10.242.87.154) To AM4PR08MB0980.eurprd08.prod.outlook.com (10.166.134.7) X-MS-Office365-Filtering-Correlation-Id: 5abb8236-4f39-4567-e97c-08d35fc9a39d X-Microsoft-Exchange-Diagnostics: 1;AM4PR08MB0980;2:aNN+nnjyZ4nM4ybB5Kd2rnh1xIIMdyipGA1MiusEdPuJJPx/BKFgW8268ZgCy24xwk/mDidqt4QaU5QHwhBp0NFOapYfMUlOR8tIIkVfpXIHF8E0qIQAC73bcbB+VqC+7N346Jat4LK504z5nxEqrV6pV5NNBi3AyD3TFc14gmg8783dA8tp6wW83Ah+kAH6;3:WtQa9BxLq+ro0YvD7/IqyhnH8RHzKatF/3SqYRlX3Jx4oe3LlJ50UPb9OOfGB31Qft/XystxTsrWQhWusmON9uieMG/n/lZlFYWzq7WAQw129nIbypaI/82rkZH3qV/k X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:AM4PR08MB0980; X-Microsoft-Exchange-Diagnostics: 1;AM4PR08MB0980;25:crHYWPp9rjmDo4YIzUeQL08Y7Qokols1XMLT8CEmzJNrK3gBrPlFZZ4m9ZYqAep2w9DAzZ2SZqB7N+shV+PaUSBlH6FfIfTzCpBLVmKosRsL30oPVukZ2OY3nUnaYAr8qyR7plNeAGvFKUSdEyBzFCQz6oUBQSPzr3s2AWKABoslRHQ9Zzcx+E46gt9zWVOZa0fzvdmYN/EUnIeUyZs87MtjwS4oAJc78Zh5w4hF6Dqh///WmJgv4CENdzy8vQXa5msx+I08Z5zRNAnlYEcUhy7oIaZvXzbbAXcdsUppqWj5gOBQLONGwQEsuYyhYKosRoD1Qtz3LO/WLmmRA3NWWgatDLYspG1KAYhnMyg4gdlZwJP1DdOnMqK/bQ7LF1fWDBvq/mJH71HIcv28tWYiYBLcd9V9ekpszaeT8fN+Oh8fNramF1aFynT2cZ0ptl0AMuT7YfiS1HCka4DBzc5NzipNXvi23RtuE6fsiM4xfm906sVa2IegAk3FnTmcMfhz4qgiVwQV9A8fQZ2kerrM5Tk1EIzlHPyNr7IPlR1ztTGvjG1F2UcPLEDOilNvIvgAD+EywLYxV0n+FWuftvOpNPV3V0mLacdIbDQ0lYR0wpYwE2EFHS3a3Q7bQgmyCUDwaRGFXw4Qr43FqyOyX5T6qQ== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040074)(601004)(2401047)(8121501046)(5005006)(3002001)(10201501046)(6041046)(6043046);SRVR:AM4PR08MB0980;BCL:0;PCL:0;RULEID:;SRVR:AM4PR08MB0980; X-Microsoft-Exchange-Diagnostics: 1;AM4PR08MB0980;4:CqrrzyCo0vWj5MPYp0UH+YGDAiL+ejWGqjJLj+DvKkxh3QLp92TBB7wL+YaoSMaFJtvRnleVPbfPAdAoxvyvPjwE+iqfZi3PwJV0MqUVhvx1KYRle2E+qh5ySyAPR9J1+1+6DkoZDl0F2FoTSaf6HFg/Apcu2hPM9WKLEN5TpjQHXOdkinypjh3gmv677Fg9ykH8OM3GBeWa6GGmwp863ZHqPd1SB8DJOx/ySTWfwFSd6wUDbzQOlgRxTYjItBSkQyt9QcVcJ8XU6iCSZw+t+ZCW8YO7P8MbuEzkXKXATlaIQnH58YJoZRLa0LuSCnZ1yxjV+w5XKmGLHz5wo0Q2xCaE2r94Ybpb3ekiAxOT5JkK5wHFBXyfoX66SFPCGrqGP5oboqQV3u4QJlcysUPo8vdtFYtaJ0rhJwZrH8E29GQ= X-Forefront-PRVS: 0906E83A25 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6009001)(6049001)(24454002)(76104003)(377454003)(33656002)(23676002)(4326007)(65956001)(2906002)(92566002)(66066001)(2950100001)(230700001)(110136002)(164054004)(81166005)(47776003)(5890100001)(4001350100001)(189998001)(50466002)(50986999)(5008740100001)(87266999)(54356999)(76176999)(93886004)(65816999)(80316001)(19580405001)(36756003)(19580395003)(586003)(3846002)(77096005)(83506001)(59896002)(1096002)(6116002)(5004730100002)(86362001)(64126003)(42186005)(142933001);DIR:OUT;SFP:1102;SCL:1;SRVR:AM4PR08MB0980;H:[10.30.26.154];FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtBTTRQUjA4TUIwOTgwOzIzOmJnZmdLR1RoSGwyc0dMY1lrZlRNbU15M29x?= =?utf-8?B?OFF5YmhIZmxIaUlzbzREQnFiQm9YekU3TUdhNG5md3VCMUtXd094QlJxcjNS?= =?utf-8?B?SjVsNHJmdVN5UXNab1lwbzh3TlNjUlNzZ2JPM0VwQkFkbng0OXFESml5d3Rv?= =?utf-8?B?UnUvaGFyU1FreDRFOWowVlRnOXRMU3NhWnJRbWw4NGhYMnk0MS96VVJGV1dI?= =?utf-8?B?b3B1SWxiQmNzL3F4bTVSd0FBS0ZIZU9KdzZpcWpJVmk3Y2JOWHhjK250TVhG?= =?utf-8?B?L29YTUVkbUJEZFUrcmJtNllFSlMxc0d2U3k4czQyUzk3OVJmdnhyTXFqWGVJ?= =?utf-8?B?SDBleUpLUWFtc0tUMFA1NHdnOERWUG82Y2F2UDF2QmFKNkN4dGs3RnBFQkZs?= =?utf-8?B?d29mOExEODNFNXIzbTBBSmVDdVNleDRXaVk0VEl6NnM0WGU5S1dobEFuQkJG?= =?utf-8?B?TC9JclRVZEduWVJiWEFoQjVSa1BHak1Pc3BodGpVM1p5S0d5WWZTODZZRFRa?= =?utf-8?B?YkVZVXI0blBTK3lFaUQ2eHp4QVVubTN6SUtlTHpnM3dwejNHTlU3SC9wN1Zz?= =?utf-8?B?cWczaGxWdHU3YXY4MGdEdnJ6YVpGbmYvY2IrVlQ0clN1SytXeU9URjhZOUFZ?= =?utf-8?B?STJKdFZMWjg4ektqZVY1b2dDcWxsVGNVaVgxNTdtRk9DdUl5Z2JZZm5Sd0ND?= =?utf-8?B?ejhaRGJrd0hCUVBQRjFMZWYvRDJybm9VOFFIMnVtaW43OXovS2FDcHpGSm41?= =?utf-8?B?Q0xPY0lGemoxRExSRjhFQTU2RnpTRXNxckhLNmQ2Z1l6aDVlOVBnbGlhK1Jp?= =?utf-8?B?alVIY1lWTXl4L1YyQUo0SDdZcXl3WjhDb2hUVDBwUUFDQ1lMSlIwTjJGS3lD?= =?utf-8?B?OXdKUW5CdXNldWxpaWNPVGlzY0NDS2FVWlRaeHJaa3ZheU90dFZMb0tDbkZ1?= =?utf-8?B?MXJpdGtlZzhrd3VxKzNqTEZlWUZIekkycXI0MDZTN3ZNelBabGtPSHlFWTE4?= =?utf-8?B?WW5xNDNYVEFGOXNFQm9QMHpvZGJZTTJGSkdRZTFNM2FKbWNIT1I1YzZVN2Vv?= =?utf-8?B?Z0dydzVJMGRiQzlwUkdnRUllbmxxbTlSOVVQOGU4V2xVelNacGZvYWloQWsx?= =?utf-8?B?Y0JXOHgvVktKTno3USs2NUt2eWI1SVJIM0ZLdDZNSElnbTZ4cEJMZUxSRW9k?= =?utf-8?B?M2Npdy9wNkJiNTNEc0MvNUlWcEJsMVZCQi9ZRHFPQVRBeFc0V0RxbE9YYk9Q?= =?utf-8?B?bytmczI4UTNGV256RHZIa2ZMMGRDQmFySDExMnNaZTBvWmFCVHFTU2xZZXdM?= =?utf-8?B?M1RIWWZoeFhZWGZmL0tTM3dHZjZLazVTZlVyZ0xCNmVwbHZhRW5KRktUYVRT?= =?utf-8?B?SWYzM2c0S2dsOWE2MHpoOFAvQ2hnMitwZXU1anh5aFVNTHl1bzllVy9tYkVF?= =?utf-8?B?YTBFeEtNakY0V1BuRXhrUytqbzlWTW1XeTZCRW9ON21CbFE2dzEwQlZsczBv?= =?utf-8?B?eFF5TTJIeisvWllwazZrSkJFdWJCaFRkbG93NjE1QXVjNGtoQnE3elRvdnd1?= =?utf-8?B?Y3J0bnZaSzZ5WHU5YjF0TU0yNUhsd25FZFpKNlpPRmtYSURLS0ZtREFMVU84?= =?utf-8?Q?mUOD/zmyoQnaIRmGEnBt?= X-Microsoft-Exchange-Diagnostics: 1;AM4PR08MB0980;5:oudtTQZUeKrhjGsboTZr8FAkE4wqJzEhlRY74hm0NNhSvi+5R8FKHwml3r1luvIplSviNT3W3KdaDXELNs7/nQftgyCxCYN4WBG5WB+YYr9RXdef6w8RZicL2P/9itkluEPZo5AVemvJd1yTYTmrnw==;24:qIqSCjCMLYYJx/9ozKIjrxPZ+MyNsn5gEJq90ArjVMaYQm2uNxJHEQ5l95hCMLho4bidA6HxqxL9tShYHCNnKQGJv+QCOKIeiC4EsAIJ378=;20:96+nZq9fncOhQY8zBPwc1/SFpU+7LP42ECL2zHEtATW8vQ9BmuIVz8sHpyI31QNyxf0GFK6Fz3TSm3BSUW9lhAs44ylrx6YLHm2uEppqK5h2xM+YE9Bi2HNS3+qnimus7FaS0IGtx9+OGMWPk1HDJfjoJHntlInchgQm2ZKJbns= SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Apr 2016 16:20:01.7471 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM4PR08MB0980 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 04/08/2016 06:56 PM, Andy Lutomirski wrote: > On Fri, Apr 8, 2016 at 6:50 AM, Dmitry Safonov wrote: >> Hello again, >> what do you think about attached patch? >> I think it should fix landing problem for i386 vdso mremap. >> It does not touch fast syscall path, so there should be no >> speed regression. > For this thing: > > + /* Fixing userspace landing - look at do_fast_syscall_32 */ > + if (current_thread_info()->status & TS_COMPAT) > + regs->ip = (unsigned long)current->mm->context.vdso + > + vdso_image_32.sym_int80_landing_pad; > > Either check that ip was where you expected it And if it's not there - return error? > or simply remove this > code -- user programs that are mremapping the vdso are already playing > with fire and can just use int $0x80 to do it. > > Other than that, it looks generally sane. The .mremap hook didn't > exist last time I looked at this :) > > The main downside of your approach is that it doesn't allow switching > between the 32-bit, 64-bit, and x32 images. Also, it requires > awareness of how vvar and vdso line up, whereas a dedicated API could > do the whole thing. Yes, I'm working on it. This patch will only allow moving vdso image with general mremap - so I could use arch_prctl for that API, as for native i386 one may move vdso with mremap and cannot map any other vdso blobs. Does it sound fine? So, I have some difficulties with removing TIF_IA32 flag: it's checked by perf for interpreting stack frames/instructions and may be checked out of syscall executing (when tracing page fault events, for example). I doubt, is it sane to remove TS_COMPAT instead, leaving TIF_IA32, as for some cases we need to know if task is compatible outside of syscall's path? And the comment in asm/syscall.h says: > * TIF_IA32 tasks should always have TS_COMPAT set at > * system call time. that means, that TS_COMPAT is always set on TIF_IA32, so is meaningless. What do you think? Thanks, Dmitry.