From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754507AbcEPJ7s (ORCPT ); Mon, 16 May 2016 05:59:48 -0400 Received: from mail-am1on0111.outbound.protection.outlook.com ([157.56.112.111]:58944 "EHLO emea01-am1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753824AbcEPJz2 (ORCPT ); Mon, 16 May 2016 05:55:28 -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: [PATCHv8 resend 1/2] x86/vdso: add mremap hook to vm_special_mapping To: , References: <1462886951-23376-1-git-send-email-dsafonov@virtuozzo.com> CC: , , , , , , <0x7f454c46@gmail.com> From: Dmitry Safonov Message-ID: <79f9fe67-a343-43b8-0933-a79461900c1b@virtuozzo.com> Date: Mon, 16 May 2016 12:38:37 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.0 MIME-Version: 1.0 In-Reply-To: <1462886951-23376-1-git-send-email-dsafonov@virtuozzo.com> Content-Type: text/plain; charset="windows-1252"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [195.214.232.10] X-ClientProxiedBy: VI1PR07CA0066.eurprd07.prod.outlook.com (10.164.94.162) To AM5PR0801MB1299.eurprd08.prod.outlook.com (10.167.216.150) X-MS-Office365-Filtering-Correlation-Id: ce31e638-ecef-4972-c9f1-08d37d6e0868 X-Microsoft-Exchange-Diagnostics: 1;AM5PR0801MB1299;2:IuQKP8xmZJZ8AsIvF64uMneN4tl1dq1WR4JsuvYewF5N7NASa/y8kjcN5oMNItcyX4ap7WWrN4uoMbUlGDJLZhpQdpnmfhCXuNn/B9k4/xy32kNGmeEyk/UszTso4/DPzYPG49Magplcmzb0V2kK06ue4DqyOMl7xF95wEK1DsIxNTZkULYgcRhHZTLnrhiD;3:1xTxKPVO/4wL527UHcTbW2JFNKCnw/utVsqTjJOPHIPqp47dUiANGwyGvjs0wSZZ4wxVs2JJ+W+pyiyiUsXLK1M3zo4FtEE2dn2JsHBsI+MYS7zfeamSu/iMNWfMOo5m X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:AM5PR0801MB1299; X-Microsoft-Exchange-Diagnostics: 1;AM5PR0801MB1299;25:GrDIdYRdt+6GfOuYyD+tKr+U5TrbGaubLDXMGAeiN4zFlGxnabOwfJTK4irszesl5GnpZAr3Qi3J5Sl1nNA/UVuurxA47ndQM/l3RLImFceoRoTbiEzqnOlKztfYrbHXolNYS7ma0EbqKdxuVOhKaZRaiE5TW8DZUtHnlc9VrC838nJAD0N9GEdI6yIZVwBzVEjqLXk4lcX+8xiRP0MRR7NCoqqO0j7lKh7/wx5krY/MUVbiipNxoEcYy4kaNr2LP2VxbR5rI3ex1LLhVhZuFIghgm7uQ9+hRsexEmZ2VI/79RjGy1zPk3I7ccVN9uvJ7T8fJKksOeWIXRW9GSmaS9vpjVYV34RiDNCheOF1RUe2TexA2N8JquhStKTdWNahAnebHS1UVvRtrkgYSBtxPvzGDzslAtWEjfsnw5dw7b8HDOJhZjgyxrFxtJKdvkUBog4/PBMElTMqlLBUgMG+YstCHWB+rUYzaEsA+kWrE+LWoL7z5HeqZPKqzG0Z42phw/Bpxb/2lwdDzqC4qJLKxwTGCV5l+ebK3cvbMYZqVLdJG63q6p+VjMC9+IIEKVP0TrB4I2zZYqJCY0Tua1MunO98h6lFg9REabJhl2MU604UZkm5njFCMgBLlAyZXvBzbnXoRO9wfOisTIek2Qcflef9lrt2DLOADXQAhc52CQ8mewALKwoY2k6mb9oaGK6RsXkwnmS2ktnVWBHANoyvmA== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040130)(601004)(2401047)(5005006)(8121501046)(10201501046)(3002001)(6041072)(6043046);SRVR:AM5PR0801MB1299;BCL:0;PCL:0;RULEID:;SRVR:AM5PR0801MB1299; X-Microsoft-Exchange-Diagnostics: 1;AM5PR0801MB1299;4:N3M4N4KAU9uyoRFhUs5TXc1fQR23QJlooi7tyhrfaEamZa6w6ymy1G2ooiK0bmMfHrP9tItDfhVW78o1vOmEn5ppByB8kdHOvyQqCb28rl/BJEP/lqJET6zRIGEQ9mHMZ5Sw5YQHGKLeYULpqkL5i8zuY3TCAziWPioR1Qe1sw61+ogDNa/E8xPSf2UHHT6xiLrHLg3HP5f2g6V+O/2nsCkd3/iRa+zXLrYo/rrswDbBx8mCIqdoCbknSQn/ibdR778U6yNNDWewO38+wrOCICXuBLWfDoIapBOLdtk/ewQStmYYghdnEAgDYP9aixsz9XT9abkdIWfnBeZ+vhShBwNdQ+t22guouJfOSL05dWW7RQ7H7tPvLKzs4lhCe9aXzkptEq18yM1AxTqGeGs1MQK6ains6s0Rrz2TqAtTq0s= X-Forefront-PRVS: 09443CAA7E X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6009001)(6049001)(377454003)(24454002)(54356999)(76176999)(42186005)(50986999)(19580395003)(36756003)(8676002)(81166006)(31686004)(2950100001)(77096005)(230700001)(3846002)(6116002)(586003)(4326007)(2906002)(33646002)(5008740100001)(92566002)(5004730100002)(31696002)(86362001)(189998001)(5001770100001)(4001350100001)(64126003)(50466002)(66066001)(19580405001)(47776003)(65826006);DIR:OUT;SFP:1102;SCL:1;SRVR:AM5PR0801MB1299;H:[10.30.26.154];FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?Windows-1252?Q?1;AM5PR0801MB1299;23:SYLWiUkB3yQ7/f8zn0BCdk9qIXAPYc851Zj?= =?Windows-1252?Q?ITi8krLOUFGobdHa1D+MWREQR7LxO1qa7wZm5cisvFCaRG/3kA4s51Y4?= =?Windows-1252?Q?NtQBrhiTBtevjNVqzW7wDJS/hLF/Vpo7lqQvn0/L7b7vbO1DT1GnnTSj?= =?Windows-1252?Q?TA0qkcXnQfiWyAKcuHBy6JU6j+y1AFqWUks74Uv5kh9t1Doksh5zFSkD?= =?Windows-1252?Q?5bApU5bv0MFQ26wEhZYgUFFhsd0MnAliR8Cmw0N5vgIxaZCU3bgUHgYW?= =?Windows-1252?Q?3DQIYxvcQiwp5Ynp6vRXZw4jo7nntg7D/ZNKbxDsz71w64ags2GvfIGG?= =?Windows-1252?Q?4+RBrN3ss31zz0bRFHOk/6n3JklOtsL2AYBTbUREdWZfIcYatKwPIxyg?= =?Windows-1252?Q?jGsa9eaCCYnxBbvAAZRGvi2eFglxbxUxrxNag+Bro9o80iQMbZdERefI?= =?Windows-1252?Q?Cv4hrbL9EhzLj1cO4O5p4EEiwXexKPppIOmj1RP5SGeQORIK5oqhn4GM?= =?Windows-1252?Q?nGCVOwdKJDFiI/rrDYOjepEea/L6wp+9W7jLrQGLFvp8WmN8Tbo9IEVv?= =?Windows-1252?Q?mYT9V1AaTK8PXDoMpYTyxzmexlYaQ5niMMBLs4eStuWnosskAayAM9cu?= =?Windows-1252?Q?NUxvZeD08Mljwj/D3/7uoatSbTp5rvfxjt9tjl5ooFRi/gU9z3oAXmoY?= =?Windows-1252?Q?qLcEHDnlE1ypzCC8vd3c7kN92Chg2K7CZMuPnr1stooUA5sIc1HegBFB?= =?Windows-1252?Q?ZjQjmqSqs2GOd0QEiKvCO0foR+zH8VIcZnNfmyhhIgeNWQnsxRpoz0US?= =?Windows-1252?Q?x6Xd3dnKwlBTY3l41QARJXaRvdjJ5w9ZVYEUhXm+oHjDN2GggzbiTOPy?= =?Windows-1252?Q?2nsCJ3oF4LLXzT7KwqO8kgLMMZksQZBnSSe3+2l/A9jmx3P8f4iqgKNw?= =?Windows-1252?Q?HYQKQoQJEihduSA8lbx9EI5KMaIf4mFlYW6yVj5rtokkZBpl36hcMDjx?= =?Windows-1252?Q?74toTBAaE09V4EIRCRDzIzzXxWO2M0kjXOmlt/hVrOcKsxuKivBQjeWk?= =?Windows-1252?Q?cJS11Gvj3cnDwJQEGiUkFHqqs1zN2WQ5nPAV9?= X-Microsoft-Exchange-Diagnostics: 1;AM5PR0801MB1299;5:nSoA9Skb4TEwou5f+JCRIKazqkvYrIFWT8acDqcLcLBTsaiQlTv+Lzm5uO+VnuGNweNv6FlnIZ6Cw5nNaeDNANZ1VMs2wBiEzDUX99Zgb5tgUhhpCG5HwTFNT4AwBM7dGMhstzualrKvZaVWQtyivA==;24:FA3qQ2PdEb4AVzpQNUlKy5jIVl7ZooFc/ly+9wP+LgWZW8zzCR3VxpT97jAD9z1f5XN+Vrm7VydeDInNFf4zKQkC9lhsTUi1WfWsc/FO4IU=;7:sPuID9QLBrQZUfgmtbN7LC12jg2b6mgI5L8PPcRzY/NEoavjGB3/LfaeKDCIn42Qe95iggXD1oylAhpmhIREwbDdLCz2WjXcppkkQYnwbOlxPSK5wkz2as9rUFYoSrz81qhRNodWlgiJwaZ7XSCjlPQeZEvLdO7ETcCbf+6TzNX42vU3RKfE3doSbL2tAzBk;20:NBwAf7KCIVBZGhUNOopP4u8V/5DookkxIs04CLA3027qCUPQPUPwQBMfnm+/PElXbdLE1mkNvQ1ZPSUCUHIUQnIPqCkRuW+GQ6sdYHThCvPVvHVXoRv6Hw5TCAD+es7wgCyyFWDJuMyo2W44poHKqmY85FOUuJpEARKd9n8X06E= SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 May 2016 09:39:51.6424 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR0801MB1299 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 05/10/2016 04:29 PM, Dmitry Safonov wrote: > Add possibility for userspace 32-bit applications to move > vdso mapping. Previously, when userspace app called > mremap for vdso, in return path it would land on previous > address of vdso page, resulting in segmentation violation. > Now it lands fine and returns to userspace with remapped vdso. > This will also fix context.vdso pointer for 64-bit, which does not > affect the user of vdso after mremap by now, but this may change. > > As suggested by Andy, return EINVAL for mremap that splits vdso image. > > Renamed and moved text_mapping structure declaration inside > map_vdso, as it used only there and now it complement > vvar_mapping variable. > > There is still problem for remapping vdso in glibc applications: > linker relocates addresses for syscalls on vdso page, so > you need to relink with the new addresses. Or the next syscall > through glibc may fail: > Program received signal SIGSEGV, Segmentation fault. > #0 0xf7fd9b80 in __kernel_vsyscall () > #1 0xf7ec8238 in _exit () from /usr/lib32/libc.so.6 > > Signed-off-by: Dmitry Safonov > Acked-by: Andy Lutomirski > --- > v8: add WARN_ON_ONCE on current->mm != new_vma->vm_mm > v7: build fix > v6: moved vdso_image_32 check and fixup code into vdso_fix_landing function > with ifdefs around > v5: as Andy suggested, add a check that new_vma->vm_mm and current->mm are > the same, also check not only in_ia32_syscall() but image == &vdso_image_32 > v4: drop __maybe_unused & use image from mm->context instead vdso_image_32 > v3: as Andy suggested, return EINVAL in case of splitting vdso blob on mremap; > used is_ia32_task instead of ifdefs > v2: added __maybe_unused for pt_regs in vdso_mremap Ping?