Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S942977AbcJ0OcP (ORCPT ); Thu, 27 Oct 2016 10:32:15 -0400 Received: from mail-db5eur01on0101.outbound.protection.outlook.com ([104.47.2.101]:27968 "EHLO EUR01-DB5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S941954AbcJ0OcA (ORCPT ); Thu, 27 Oct 2016 10:32:00 -0400 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=dsafonov@virtuozzo.com; From: Dmitry Safonov To: CC: Dmitry Safonov , <0x7f454c46@gmail.com>, "Cyrill Gorcunov" , Andy Lutomirski , , Peter Zijlstra , Thomas Gleixner , Ingo Molnar , "H. Peter Anvin" , , Subject: [PATCH 2/2] x86/vdso: set vdso pointer only after success Date: Thu, 27 Oct 2016 17:15:16 +0300 Message-ID: <20161027141516.28447-3-dsafonov@virtuozzo.com> X-Mailer: git-send-email 2.10.1 In-Reply-To: <20161027141516.28447-1-dsafonov@virtuozzo.com> References: <20161027141516.28447-1-dsafonov@virtuozzo.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [195.214.232.10] X-ClientProxiedBy: AMSPR04CA0039.eurprd04.prod.outlook.com (10.242.87.157) To VI1PR0801MB1741.eurprd08.prod.outlook.com (10.168.67.19) X-MS-Office365-Filtering-Correlation-Id: 471faee4-6cf6-4b79-a5aa-08d3fe73f470 X-Microsoft-Exchange-Diagnostics: 1;VI1PR0801MB1741;2:wUzN2dv/T7gxgcI94zJHnKNs7zvzzB/l4WjFfTGL82WUoDZQtiMDxYMJFGIa9PKu21EVJFiJVfDA2psy87XXAgeFf4fwthiAmRrdrDxM75lnoFEgezwdmvPjsKbR43kcmk+L3d3ZAQzKpkCGOehiZj537ZjTtrDFS4XiwlxCdpFpOkg1cHurdmaKFF4yXV/PsZTqC/ab35o+mKM/qf+jvg==;3:YEpegeXmT3Zxo5z5ZvEsfxged407WuY8FtZjy09njtP+AxJcwgTL2hFI6On+0TJ3rA/Z9YG07NQsri1lnuS24mtP5iNmTg7f3USYci0FyXOee8Jj8bfVOZS5LA7oKRonlPJshBfQauhtin41nT2ufQ==;25:1wErIR+uh+AR9+0nyykMmFJFLFFTFtvEbKP+R/Z0VQ/M3gigdU05uOmgeHu7JWyeDa0TIIyyGJfYvmRbr/hypswLT7cqtW7Rn+5okv1DolVczL7HK7/DAAUHdh1+32ux+ffDV/mINvCjllFbjbU4j9W5cEpp0BLYe0Fk5Sf3gv8Mgxx1xX7wMVXyon4vmyZFe5urHWbh3KYfuMxGpAf4DZeKQbJYSUT2amqtFq8O7Fb1NG4HSPNIHtu8MnSL/+QBJu/rsjPw0BCNeGmC/YCwttB53qcb+hMPcd8yjQCKzL5sh0OwzoqAcXqSj4xumZjBJzM5yW8gkkWjSR3DUEwx/7w+i+25YT7a8knRQ6F3oK1eAQORx2OuRfnR18zO0BAAFjNB8ndl1idQ5t9gtL1OD9paY2TasbWLY5p+Fy65BU3vqEAsKvHGqbrlBWlBhIRH X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:VI1PR0801MB1741; X-Microsoft-Exchange-Diagnostics: 1;VI1PR0801MB1741;31:xYa5H3/XxaZpuELlk+vhG4CZ118Y4tMoZd8NQcn9RjNykHLc5dtWBsz9WW6cS0eaR6Prnx+UWLj2F/9W7sf1vdeXdUFg/nISiU74yTdob83OBHXslnC0u4nVrcVADUNPWeBWXKOeYnLvlWSpwdA9QcftlGfkL4/8OrOQTthXvb/jAxBR4S9WAOMTsg+blKHQhuD9B1XDcWAl2IHEV9oyuOETTm/z7FLXdkFKIZ524hoJ/U3m/CJyfJmnruENgWPmrwjq0rg0p9IVI72ngTFohw==;4:/GSRDHaHSbqdKKZ8hHnj/FVBUEZRt6V3csuCca6wMVpsx0SKbb3YQINCAMTIan5Yu4isqRjFKD78mLyN7OCQpxuxj6KRD83Fy5Ml+2MOARuRnnhrR41r0Ljc7yneRtcXKvIM5fZBmRYt/kYiJnObGDzzbf9NWXpK7IpcM1+udmTrWCYmiElknqiijOZk+Zd2XH/Eue6kpkNws1rdAM5xpQNAlFdNsH0B9qNqhwsENlog8KLc3kNbcZPGZPB9NaehRpQ8A5vapOEVfkJzAf11S07+95w0y7ZlcmuuRemH+hZuusZrgVhPfsmgYnvyBROBRLi5ZnY0V+iPAtFVjNn/MSkhRulPKIg7rGKpoyfe/EK0CbaD0OT2s2INfej2RhIfTbCjy3Lxn/eRm1cbxJwVCVNbpcci4DF5zpZvtXgebtf6M3ahCmt30mlJqgFzvdtl X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040176)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001)(6042046)(6043046);SRVR:VI1PR0801MB1741;BCL:0;PCL:0;RULEID:;SRVR:VI1PR0801MB1741; X-Forefront-PRVS: 0108A997B2 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6009001)(7916002)(199003)(189002)(50226002)(97736004)(53416004)(81166006)(42186005)(2351001)(229853001)(189998001)(19580395003)(86362001)(4326007)(8676002)(50986999)(19580405001)(81156014)(106356001)(105586002)(586003)(7416002)(92566002)(69596002)(36756003)(68736007)(5660300001)(76176999)(1076002)(3846002)(7846002)(101416001)(2906002)(110136003)(5003940100001)(2950100002)(47776003)(50466002)(77096005)(66066001)(305945005)(7736002)(33646002)(48376002)(6116002)(6916009);DIR:OUT;SFP:1102;SCL:1;SRVR:VI1PR0801MB1741;H:dsafonov.sw.ru;FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;VI1PR0801MB1741;23:kHn08t9rQiY9KH0zzJipdC2X7R3xrh5oKPOzFsA?= =?us-ascii?Q?2/NaoOELCMar5voRUDuD+0hQd/EC3QiqbvHbjctJ6E0DuY4BtAUpBD/k3e/F?= =?us-ascii?Q?oxLLRiUb5cbBOqWfy/29Q52N+fXLqqBdpMqVE1NJJ0bAJC9ykdR9NKsF6TK8?= =?us-ascii?Q?G9Hy108NCfuLo9TXr6Zmtss1CQ2+9kYRuNJU/Jgq1vbUzaF6c73ZXfPczHs0?= =?us-ascii?Q?kp18a0P43RVrbZVzGS0wy9KMZCIf3xhqvqbZR7usjFq+QjhxhFcXvAnBoloO?= =?us-ascii?Q?bXydC0SbaWuob1jg8kU24vxCF52LwRf+r0soNB303SosySVmdWTpqY7H45rE?= =?us-ascii?Q?uxwrPr6eW9XKllKY7tKNo8VWN9NMW3fhTYazC6UNAoigPzp/s0uY13/VzT9b?= =?us-ascii?Q?V/YP4LLCrr+JsxnpXMNoTnp96f9LifmX6hSwQGE0eWscHS3FrnFraNauxyoK?= =?us-ascii?Q?Iv91mxDp2z8zvOs/E16MEi1MjtwBB59Zk+swMmi6EtTYjkYvELvkpLbm2+2W?= =?us-ascii?Q?9NFdPrG8OvOyN3I6XwMY9uEh7HTzR1x7EoUQIbFtZbAl7TlrMlnzwID9TUxZ?= =?us-ascii?Q?lkDxmrGy89gjQmlscaJk20K3ZJZDBLtIF9txntUQ72KKRx0IO0BwbaSljt6Q?= =?us-ascii?Q?CzFQHWj5c9j/cMKLlDz1MbF37qqo5jKRbRiXodLFMlRsvLjKRQ+KKA3ky5Tm?= =?us-ascii?Q?vpDD6nWekB5wA0Utl6LYGrgSEWK5PgiXR1WTBI3pfvd5U5Hdj/PHIYzUNF7x?= =?us-ascii?Q?+k4js1zn+PkJJnFJT2LbYsGLSbElZCdiR1QJiVzregrPmA4PYzZQwN6JgzXZ?= =?us-ascii?Q?YF1yEbkHQjdkw5Lw4BKdkX94tHiUlKZtStAWwWmivqADaK2ZoNm8z8raJxCd?= =?us-ascii?Q?gYdSOcR4/I4qy9yxPLjrWTM8YCmMzLtWXdRzzeq+BY6TX2cyneoheAi4gu4D?= =?us-ascii?Q?ly+nH1NJCI1cQI4pEcVJuk3esjVh4+oO43pRaUUDT12EITKyMAksKq8G1asg?= =?us-ascii?Q?ftBtVNBPySP7btxpJAuokB1tlS5K6N6GanpzZVfCCMFs1uu7kx5GRGDy/cIh?= =?us-ascii?Q?6EiZS0fy8MYejobodKw0Lvlp0fxMkQVRGCmoPaocWA7O0kJr21gA8soOx9AS?= =?us-ascii?Q?GxoT6TvGUD1U33HX+uEwpim0+AZunSbG62LPwIZDPUtakXZdxEiIRiXvwW/H?= =?us-ascii?Q?Si9uLUg3bb3eeZI8=3D?= X-Microsoft-Exchange-Diagnostics: 1;VI1PR0801MB1741;6:ZRLuADhws4475T2Ne2UIA4+6aGNIO1cVSiqOg82HLqK0/cNKqkeJtZ+sM3WFkWJfSBQyn2RRxLpM7xOVy33pFbyIPJ4JS1uV1UdsHMPknNQOb9rhKrb3O1fb4XY3o9I72krWMqRDaOjOx2h8WIOA3sXxzYgA7zmMHdrZxwuR8mvcXBxcOmRadvrKcA5pCSaJo0iiievtNiS7AuEVXbQEiZUKZxbLNRfEHhDzHZtUo1EDH/GnJvlciXQptxik+LVv/20pHR3EbFHOgUUE1JnLHMshQ0CQzMPJ2bvsAILxzx8IQTHimcILQEPku6/40JtIU7wMX+i/Kv+xI1uZEIWDkQ==;5:tJE8gg89zAdhEpdYtbMmLt/Ne3yTyvYolcj23uCc/w1WDJaBz9oc5hKCmIruw4up/JKNRf5H80fAn8OgO3PMOLk30YxJcS/qu0uI0FCDlCxZTv8zOsfat6iENC0NfPqBxooSlVxeGDOAFmwiPj5J/Q==;24:o6ZnbPkXyF+oXYZ4i3901LwAtgZpx3L5hJJjkdb3E1uzGaV8JyDAnZru4ru4Ndr/gCyfdJBy8+Aer1Pc1LVmPr3+SjI6XBWQAz71WXuppiE= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;VI1PR0801MB1741;7:7uP7hSe70jZUHVp9rfEiGwGuy4iI4DZCWXoJj/6x4jnVGTfxsjRYRgXW4QaJJ+TqzhFuz07OMeTtEFy0syla6r5C0SjxfprzwDBToeb6SJATzf55O1lIidq2Z1C4ea0ENMApIDAhx0oDKD+1gEJqgZwsoUxcYS9nSMa7hzXSqlpRDbb2Zds8/0r1LWphV3eRvYUhhL5goon8LKZSCuxNR3WXoUqh7r1WtWSVRsgvGzGr9aDZ+BAdg0IGXswTsWh1ZhBxJMilNJr72G1fHWDINAWJo5NuRqdZvOX6OZHUY/VBbYEyHBbLB2Gg+Pq5rfM+YrE0A5QUwlFS2cQ0ifgnjpKk4fo1evBdh8P/V/noa+g=;20:XfOXJNxejxLb78FWVIZHItOKUx14TqsLCvVHt5ppx8jFktyziBbzFD/eKM/pfZcaMvD0vNXXkNdu61Cyek1TSl1kt2huAKeousAucQ8DUTViISAiYbSIflUSWHh3aCY1hgsvtK8b6Hb/NxJyZ6bxeR1Delu7bKEU7qfmPw5Vu84= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Oct 2016 14:17:15.5821 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0801MB1741 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1982 Lines: 58 Those pointers were initialized before call to _install_special_mapping after the commit f7b6eb3fa072 ("x86: Set context.vdso before installing the mapping"). This is not required anymore as special mappings have their vma name and don't use arch_vma_name() after commit a62c34bd2a8a ("x86, mm: Improve _install_special_mapping and fix x86 vdso naming"). So, this way to init looks less entangled. I even belive, we can remove null initializers: - on failure load_elf_binary() will not start a new thread; - arch_prctl will have the same pointers as before syscall. Cc: 0x7f454c46@gmail.com Cc: Cyrill Gorcunov Cc: Andy Lutomirski Cc: oleg@redhat.com Cc: Peter Zijlstra Cc: Thomas Gleixner Cc: Ingo Molnar Cc: "H. Peter Anvin" Cc: linux-mm@kvack.org Cc: x86@kernel.org Signed-off-by: Dmitry Safonov --- arch/x86/entry/vdso/vma.c | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/arch/x86/entry/vdso/vma.c b/arch/x86/entry/vdso/vma.c index 23c881caabd1..e739002427ed 100644 --- a/arch/x86/entry/vdso/vma.c +++ b/arch/x86/entry/vdso/vma.c @@ -161,8 +161,6 @@ static int map_vdso(const struct vdso_image *image, unsigned long addr) } text_start = addr - image->sym_vvar_start; - current->mm->context.vdso = (void __user *)text_start; - current->mm->context.vdso_image = image; /* * MAYWRITE to allow gdb to COW and set breakpoints @@ -189,14 +187,12 @@ static int map_vdso(const struct vdso_image *image, unsigned long addr) if (IS_ERR(vma)) { ret = PTR_ERR(vma); do_munmap(mm, text_start, image->size); + } else { + current->mm->context.vdso = (void __user *)text_start; + current->mm->context.vdso_image = image; } up_fail: - if (ret) { - current->mm->context.vdso = NULL; - current->mm->context.vdso_image = NULL; - } - up_write(&mm->mmap_sem); return ret; } -- 2.10.1