Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754245AbcJYX1U (ORCPT ); Tue, 25 Oct 2016 19:27:20 -0400 Received: from mail-eopbgr40101.outbound.protection.outlook.com ([40.107.4.101]:59420 "EHLO EUR03-DB5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751497AbcJYX1S (ORCPT ); Tue, 25 Oct 2016 19:27:18 -0400 X-Greylist: delayed 25196 seconds by postgrey-1.27 at vger.kernel.org; Tue, 25 Oct 2016 19:27:18 EDT Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=dsafonov@virtuozzo.com; From: Dmitry Safonov To: CC: <0x7f454c46@gmail.com>, Dmitry Safonov , "Benjamin Herrenschmidt" , Paul Mackerras , Michael Ellerman , Andy Lutomirski , Oleg Nesterov , , Subject: [PATCH 5/7] powerpc/vdso: split map_vdso from arch_setup_additional_pages Date: Tue, 25 Oct 2016 18:51:04 +0300 Message-ID: <20161025155106.29946-6-dsafonov@virtuozzo.com> X-Mailer: git-send-email 2.10.0 In-Reply-To: <20161025155106.29946-1-dsafonov@virtuozzo.com> References: <20161025155106.29946-1-dsafonov@virtuozzo.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [195.214.232.10] X-ClientProxiedBy: DB5PR0301CA0040.eurprd03.prod.outlook.com (10.167.222.178) To DB6PR0801MB1734.eurprd08.prod.outlook.com (10.169.226.149) X-MS-Office365-Filtering-Correlation-Id: b727335d-13fc-416d-05f1-08d3fcef08cb X-Microsoft-Exchange-Diagnostics: 1;DB6PR0801MB1734;2:cG4508XFCltKuF40+dG67W1a6LlvJUiHF4NMn1xzTZkJ8ZnjNykyRZxPaz5j3/MNIAIcThzNxRMd83SYKKAo2SsCoaXwOKljYfzXp2UFVP3b/CzyUVoJNEw2HnMomhsoATFiH3ad7coYQjvW8PeRHIUz+yRUhrOiliafMo56t2bezRrSQl+RyAOuemtlveBTM6V6F/cty8MMSSzdVg15sw==;3:8jnTZIPolH9QWCYAtQCgTCqzUmIQvZKqbLIZ5EOY/Guve35OqBgoJJtq/Toiay6Yh4fnw/VohVN5/KOZXawNKaB4bo6vU1v2FG4g1HF9moc7y/9TEx62JdGbC4O+hFAxPblpHl/YqaVtdZ6jNtPcdQ== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:DB6PR0801MB1734; X-Microsoft-Exchange-Diagnostics: 1;DB6PR0801MB1734;25:0Gq90p5nf8jHmie08RL2u7FlJnz/uON5jIhLi+d7tqMYa1iXa4YN/98qJm7lbtpo1HYHFaoKXMhdOB3ZZqie27Z16GXU8mo+hW/w/pEKEncZpyCyMYfHDkZEUJ3Qyh+BdUSut2KrbwJg/8S3Z61L8AN0HzL4/a0B8OqSGwyJYP+zvml+NYoLy29h33LZ0pY20kK8xZPgfuYFuvkhvD8ww6WwJD0j5sGUvO7XyHlDw9YhWUMCogoItjW2JMeyUMyaDtqyXaTWXNcDhJPJY5FbQRyb9F2OD9F2TfibZZy6AqGZAdwgNgTQXJZMPW3gOa0tD5sN3OlbQ18SwhJCXQUZshAuAhIvI5hF/YLwNqeYSe2moKBm557fReigxZGxmc4dU8A9PzLXEj6ogYDQJrgg52CqhiqXIsJbYMGGfSXgGSZwFHnMJqJtI9jEd8NIhtesWGMdowIVzKxQeZ9YCvsj4yuOEpaGp4YEhLC3BxJHQZrNUYM5dLksJu1y0uAb2GeSbDnzlr5Fx6MHdyRuMjLyhfoBXE2+zJv+QIaLsf4DFhcJSh4M4ddJ9wKf4+JXlM+vPxe1eZYwcG2hS7oXVSh/t1wbMpKusqEiJ5audJUaTxAYu5/CiSDXVWqdLxhI7giwEDHkqR/mxPK4f/kajl9jWnB4H+tVPaLo3Wv2dVbWwWrk56hPm9Aiw0cycXTU1jgaiTvJcm5VwA8wrYjw0j8dOQ== X-Microsoft-Exchange-Diagnostics: 1;DB6PR0801MB1734;31:f9CLPpN3fIq1b4qnMKZBNcMrcJZFlGNTkopbsaaJFwOOYKyb1CF9bQmR2Edao/aaZ38S9Iy7fbl+66KtGQyNVnbQG71f+WXf43X1Wo6DEPmJliwkMUWw1S7Zvid3eiFBLKK14zuTj3BJ0IxLlELs2IUwEY1wZDqZ1wM6oL49/TlAwEiB5HxwCCMjFNU12rCx+xhnE4StxzlonRwy89Z8Tr19QsrfW/vbvfbC42snHyUFUcxgfQdEyR74BXJxJTipBNYvrbTmwmSiKB2aBi4S3A==;4:K0OByxZ6DspUzRoyznHQ+pBVHQaYlK/6GE6cE5iE+7UPy8c5jNcP3UOqZByU37zQArTO1Sg7EGH94cl6Gy2RxHeEoBdcMbuQBaOi8lMw6L2eM7NXWLuTNRHKWQ3SRdvjkWpug0kDL445hxCRcoQXtBgRv1LxQHvTe2IU/2ZycS/oQ5InD/ulng4AecVcvCxGbqaAOPs4NanM6GbQGz7fCReCykMVkLSwRfJ2kjeMJ8HPtjGzMZ6Inx72JKaDsXxRVOdUsuRACnjqsP051/dIdrvKN0zXtEpHU0+IyLl0o0U8uw4mGKug20ScHnPlkqBPdSurzmBbT89E5dPUVisVSwUuZpoUT54DZuIOxGdv1Z5mjeKvWKk8ZLVMC4EzCZn7Je5H2F3tOicDjKHMhyFBrM08hJz/oZR25J7Qu94pfaGS1hVXRvSxE3+jkcm24A+V8USgjbpXAA5j5CWMiDJNUGbfHgpSE0ztG64/Dpd+jVI= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(65623756079841); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040176)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001)(6043046)(6042046);SRVR:DB6PR0801MB1734;BCL:0;PCL:0;RULEID:;SRVR:DB6PR0801MB1734; X-Forefront-PRVS: 01068D0A20 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6009001)(7916002)(189002)(199003)(229853001)(2351001)(110136003)(2950100002)(105586002)(5660300001)(6916009)(19580395003)(5003940100001)(77096005)(305945005)(189998001)(586003)(97736004)(6666003)(69596002)(50226002)(50466002)(19580405001)(33646002)(48376002)(3846002)(4326007)(6116002)(36756003)(76176999)(50986999)(101416001)(86362001)(92566002)(2906002)(53416004)(42186005)(8676002)(81166006)(81156014)(7846002)(68736007)(106356001)(47776003)(66066001)(7736002)(1076002);DIR:OUT;SFP:1102;SCL:1;SRVR:DB6PR0801MB1734;H:dsafonov.sw.ru;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;DB6PR0801MB1734;23:gMmLt8fX1YtYs9oi0+4Do62Jr1rE/EeRnPsBfjo?= =?us-ascii?Q?LHNW9slQ9ItfJ36PyrUm4oUslHtMWNaT2f8gtAQsZcp3AjpYbYJoxSRvBs8c?= =?us-ascii?Q?QEC0L28egMALIdye1qhsksHKvNeuwfGiVgLPUP3hDNAU2ZF6fF7LPbJQtKzB?= =?us-ascii?Q?f0rREix3qEVDb4tUjC72cgR3vjdyUGqXO+Ya02S1KYmKLlOZuHhEYPKKSTdQ?= =?us-ascii?Q?zOIRUYFLhp/WUYdAfOe3ovGK5VExm4a1JqZDGCyuDJEuVNErQzs0h317BOJG?= =?us-ascii?Q?nQxq2gY1ti6WtFZ26wpDhLRjAVg0Kc/v8jWoCzC37gMaoCMUiPOZARKUMDaU?= =?us-ascii?Q?J0NZqLa5Zr1y+ItxnGtvuBB3qo0plPK+OQaxpMypHCqhimUugUYwXztjORjd?= =?us-ascii?Q?J5ZpmhYYzEHW4hSe4uHQBhSfG/BQQxiPS4Q1eGN2666IKnNoa7I8NVF9jkpt?= =?us-ascii?Q?pRQauefKlus9QydL1ukTbwmgDiz3q/wChB5EU5i3foMSsDGP0opDbZ0NPqLZ?= =?us-ascii?Q?elh9Eu2xxeO9h5953UreTSHK3vEMXlk6JJYy1v655oBzuWnwyKGOIuGyqG1n?= =?us-ascii?Q?AWttvTgeywc4cKrqvQrCuhjNokf5IBTMwQxdnPk3eay4ZByAppsOgNAqpPuJ?= =?us-ascii?Q?lfb4D4mnVaLRyRioW1lMICLnJflu5WGz47f0lDkfd3yAvJ0bxmXPGSaMf11+?= =?us-ascii?Q?mMRyNh1dILIoorHjd/2zVeg3vDu54FiSY39fVpaDOJrDFnGoxA4LQv9jd1bZ?= =?us-ascii?Q?5FUwe33FRTPYPlP6Zp6c/+MHWov+px9TmUi/I8QToIRAY5cMJABsvbeCtVVl?= =?us-ascii?Q?KByOxl+z4N853C4R3QKPyX+ZNBa6KXpJBvt0ZYazLPdkWkG7EYV/wQz+cp+e?= =?us-ascii?Q?zHpw/pmtXl2dA46FEyjBUEcgT7vovuillz0L6j2rKI57tkAwlTlO57lLG1AA?= =?us-ascii?Q?RWUKljBLrlb8QG6dI91wl5vux96SBjbEWsW5xa1KzJr5Gd8Ka5M98I0gPHNm?= =?us-ascii?Q?ujxeViMsEmbTVeiOm3UWSnSqNc92gXMPxycduIDPWtxITq6aIu+aHOuMYwZn?= =?us-ascii?Q?LTHsukLwgeifFUXnK8Oxb9IoipQuLQ8J9Tmo2X+49dwQLoonJ1156hPD5l8b?= =?us-ascii?Q?gGZ2vyqsTVlg+U6oy5gQ+e2FqKV7O511ObnU4GxjkiS3N+k1UNbEmhm9MFsh?= =?us-ascii?Q?EsiARreWD8vk6AsQ=3D?= X-Microsoft-Exchange-Diagnostics: 1;DB6PR0801MB1734;6:ykBfUceLDISQ0SXvp+XRxJHiH2XjkAHKDDBauhS2z/AoUFU9nssKgkRkRaDA8gDOsuWL7IriZYTFe/VOZk9zvBst+odaycRz0VnS2tUwBoTAlh2alLXZgUnUhYyBGIg0wglwUR8kUau/vyXkDPsUokiL4RctmGkK7ISxSzvQTXTP57yL/idYjftao6x1rHO8oBlT6S5xVSwA0SHq9KoJdac/3UMErF3y37JHaR+TBuHEG3FqK2WfLv2LiqOIID5IfQ+8wwED/72te3enPQgEYSKnjdgTcYvQmlJ1eyTahSg2xcKeKnOVa4avC21QGuPsAy8pJBObJhpvO8BlPkGZkw==;5:kYwYmo0wXlV5CbvqhpIxiUar80cDyFK7Tq0I6tZ0MWmb3FrA/moOSZX75kz7SekDJKFFBn5fGv4+noWROS0dGBT4jm/HOvPgOzajSAa20OyBsUYjVo+J71ex4CHybnqMA6HCKFzVaCtBo8OLiCnRT4Q0kM+TjtXvLVQSK6sOdGg=;24:qRcyV+LYAVx7SqCVEXUro0MsL3IE7IHyAbRljlqdfKjaaMyIDWuoQzKQpUgQYt/H9BzTUUvvN+3PfWC9Qpf8BD6oZ+64xIBwdl8DrxjDQCc= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;DB6PR0801MB1734;7:DM8LLD/ZOBquIEOK7F6eo/kiM37/axiHXaYm+9plZnhvEZSay16l5GFh84n86U2qI2ESyPWfS/tXDqsHevjFn7dMILsY1ULYW8R/Qz90y3PkEVoeNgkoCxi/9pgHFI67m1xJFjeZlrPkzEAWrGRfCXkUDNzV4F7q2pjKGWQ5lzp/4djVTOGtcbcvq/Eofv0o5yJuqYz4tclFUKbtOWkaGY9zjuYQVgwzqv+FkZFvYi0+GYJSUyDgVhBvCHFx7ZaJ08qaKgSrUHB0s485Trwnbx0/VXfm/lLrfvTVkqCIY8rqtrAg8X2OyaJkAQEvMrUr7D4u5oHsW9grBc0njtOE1YNv+ZOTj7A4mOLcNaCUUgo=;20:oWymF0UL/G5wb31s9KIYPfcq7bPuzzlEFYWVRzJAHmCYP0bYFvw2ZiZnG0aRvGwlj+5WewOamEo1dFtGQSk+BysEzT8EW3fQS0ERp5durA/8OOGwcWJ2hZeTw33kFxWCQv+kfpFO6vdrPAkgCXeTcWktJnSW2a83qO4aHczdLsw= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Oct 2016 15:53:15.6631 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0801MB1734 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3217 Lines: 114 I'll be easier to introduce vm_special_mapping struct in a smaller map_vdso() function (see the next patches). Impact: cleanup Cc: Benjamin Herrenschmidt Cc: Paul Mackerras Cc: Michael Ellerman Cc: Andy Lutomirski Cc: Oleg Nesterov Cc: linuxppc-dev@lists.ozlabs.org Cc: linux-mm@kvack.org Signed-off-by: Dmitry Safonov --- arch/powerpc/kernel/vdso.c | 67 +++++++++++++++++++++------------------------- 1 file changed, 31 insertions(+), 36 deletions(-) diff --git a/arch/powerpc/kernel/vdso.c b/arch/powerpc/kernel/vdso.c index 25d03d773c49..e68601ffc9ad 100644 --- a/arch/powerpc/kernel/vdso.c +++ b/arch/powerpc/kernel/vdso.c @@ -143,52 +143,23 @@ struct lib64_elfinfo unsigned long text; }; - -/* - * This is called from binfmt_elf, we create the special vma for the - * vDSO and insert it into the mm struct tree - */ -int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp) +static int map_vdso(struct page **vdso_pagelist, unsigned long vdso_pages, + unsigned long vdso_base) { struct mm_struct *mm = current->mm; - struct page **vdso_pagelist; - unsigned long vdso_pages; - unsigned long vdso_base; int ret = 0; - if (!vdso_ready) - return 0; - -#ifdef CONFIG_PPC64 - if (is_32bit_task()) { - vdso_pagelist = vdso32_pagelist; - vdso_pages = vdso32_pages; - vdso_base = VDSO32_MBASE; - } else { - vdso_pagelist = vdso64_pagelist; - vdso_pages = vdso64_pages; - /* - * On 64bit we don't have a preferred map address. This - * allows get_unmapped_area to find an area near other mmaps - * and most likely share a SLB entry. - */ - vdso_base = 0; - } -#else - vdso_pagelist = vdso32_pagelist; - vdso_pages = vdso32_pages; - vdso_base = VDSO32_MBASE; -#endif - - current->mm->context.vdso_base = 0; + mm->context.vdso_base = 0; - /* vDSO has a problem and was disabled, just don't "enable" it for the + /* + * vDSO has a problem and was disabled, just don't "enable" it for the * process */ if (vdso_pages == 0) return 0; + /* Add a page to the vdso size for the data page */ - vdso_pages ++; + vdso_pages++; /* * pick a base address for the vDSO in process space. We try to put it @@ -239,6 +210,30 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp) return ret; } +/* + * This is called from binfmt_elf, we create the special vma for the + * vDSO and insert it into the mm struct tree + */ +int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp) +{ + if (!vdso_ready) + return 0; + + if (is_32bit_task()) + return map_vdso(vdso32_pagelist, vdso32_pages, VDSO32_MBASE); +#ifdef CONFIG_PPC64 + else + /* + * On 64bit we don't have a preferred map address. This + * allows get_unmapped_area to find an area near other mmaps + * and most likely share a SLB entry. + */ + return map_vdso(vdso64_pagelist, vdso64_pages, 0); +#endif + WARN_ONCE(1, "task is not 32-bit on non PPC64 kernel"); + return -1; +} + const char *arch_vma_name(struct vm_area_struct *vma) { if (vma->vm_mm && vma->vm_start == vma->vm_mm->context.vdso_base) -- 2.10.0