From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756046AbdARLii (ORCPT ); Wed, 18 Jan 2017 06:38:38 -0500 Received: from mail-eopbgr20096.outbound.protection.outlook.com ([40.107.2.96]:37708 "EHLO EUR02-VE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752014AbdARLho (ORCPT ); Wed, 18 Jan 2017 06:37:44 -0500 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=dsafonov@virtuozzo.com; Subject: Re: [PATCHv2 3/5] x86/mm: fix native mmap() in compat bins and vice-versa To: Andy Lutomirski References: <20170116123310.22697-1-dsafonov@virtuozzo.com> <20170116123310.22697-4-dsafonov@virtuozzo.com> CC: "linux-kernel@vger.kernel.org" , Dmitry Safonov <0x7f454c46@gmail.com>, Thomas Gleixner , Ingo Molnar , "H. Peter Anvin" , Andy Lutomirski , Borislav Petkov , X86 ML , "linux-mm@kvack.org" From: Dmitry Safonov Message-ID: <72d16541-17c3-acb6-1d0d-2d6cf0565f35@virtuozzo.com> Date: Wed, 18 Jan 2017 14:33:26 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.5.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: HE1PR0401CA0063.eurprd04.prod.outlook.com (10.168.27.31) To HE1PR0801MB1740.eurprd08.prod.outlook.com (10.168.150.7) X-MS-Office365-Filtering-Correlation-Id: 53c261ad-46e0-4751-6bbc-08d43f9646e1 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001);SRVR:HE1PR0801MB1740; X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1740;3:Grbe75pnYzZWsLBr0oepExX3qBdufbULxJa0BAonpI1a9cEOVTV9Om5jB6VRHeiCCvWCx58esZZfR+M31v7+38XVmFQM1G4EDXC+l90QwpxKjVyfUKXr0TRXQ/Vbd0XUpSsBa9bAf3wxXGGFGZwYbXKUavqX/5FajyoxUTnfVXq5riSSPLwQW1F2cuTCTgMdsgHLvPVusSq7VQzJjvNKoiKHPEKfuE81YZwwg5hnl70vecGqhURBvRPy221t9Zfha1L15s7DMWoxGfpLGJOdVQ== X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1740;25:q6y5d7bo4rw0/xcKuIGKRdMbRZQnlHWjcIMXfSi+m+yINL+BWN8pcAkoYdzDIxH+DZbbuRcGD/D9ghTzEwyhz0YXoAPuqqX65oLATUuxmv5Nm42X9frzK1ERhzHCFjGunjaLtjjzSm7x6XrTjD8NUksiKVd/p77P0ayu2Lz38Opk+qEeo9if2rJ7qlWe7Jj/cTQrpGmfYsdez+k9ul1yrox5i2oat+GsZu+tZtJcXewKE1fxVHp78axlpCgMGWSHiA53Rfwng99Y0Ir0lj5WA0kwjiQrqfoV8iaWL8jXSKazYMxZCzFZhO6zlwIP3lcun+AiIAh74FkcuzIWFTUwFtvaYHjdpRNQOBDQhpFbN+/8lyLBebHWwrTfrjiby+O4GENelYJvinmAq9RCHWyLQMaZ00lppkHXic9zUR0dQjbu+w7RU2D0srWatexcqvgtey/+bqeclF/s9K+lJ9gpcA5RtwJUFasHF10gECYNgYcRii8XNfbRyawoYKKTPTEPlBnorvb2mfEALggOTnkFNyrk5hBEcR925crJtek/NRI3frHV7e50OUNJ1l4zMIuptGLKns7bBUQzyH7J2BBeXuNK8KxEITmRx7i3vGA44PJTFBhuYW6bOUeRORdn2WBwaDHeAsnzmtQSi6wkTUWxvvfHRNgta9myOkdaLrnOC4DYWEyGqbS+0/b14fTE/BnMkiG8APy4eITlwPivtsu1g0MIjP7s8JbC1Ep9eDMUIyJ8pNH4P2AqfG99KmkWN+njI97eowYekUpME+5nAbrQxw== X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1740;31:hIQmiXO9ft0DJdYWIwNLEQFK1VtAkHuY0T5GKeKnYLVJ2qKHzBX98fsoKNYwUpPIiuTePwYRqnWreTaERqmWyab+ppnx2smlPg0MAcIzaGkvKe0gVf2J37GUaKBaWK0r9fKTJ6ArLaPRa7IKgZRZQ4AORma/MUmS9w4098PjNqNvAt3Pz44kktJaVmBY4IULxthZk+iyiYcUMRmrssTjvWLPKaCzmjB9SDKlIhZllI7Q+C6q3sPCOPnRgbBKdCIxqoA7RF3BD1ikSDCxcfiapQ==;20:C3AA/BuuRt0ALnEd6hf0UR5cptUYfv6ThtfyYzjMxl01Gslmqn7cuAsp3sxoVfjpl3N/PZJ0dk6NXMSzaM1EFDj3v/BudXnL4VLx+C7LtlIJc4pxbjEG3gblQ6I4VM5DY51WgWYtBh7ogc02p2he4S71/8KK83ubBJCZsJqCP5+/g5bmiYXRl/GVt1uz87HuOrw80cDzNvZV+qCAts89sIRyPMT218Axgu8/7YceVL6Ptq4sRkDLFBPeDXgTNUpE X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040375)(601004)(2401047)(5005006)(8121501046)(10201501046)(3002001)(6041248)(20161123558021)(20161123562025)(20161123564025)(20161123555025)(20161123560025)(6072148);SRVR:HE1PR0801MB1740;BCL:0;PCL:0;RULEID:;SRVR:HE1PR0801MB1740; X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1740;4:EsacrdP7Pxf/cqnymxatsWENf0UiI3vyb68bWwwOIDeS1DFucXo/6adYcvhM7RzyIdjV0jEDnbJZLtrgMezyefrpgjGqYApMNNdYsscrOjob7dws7kDoZLxr1/uEJJ8Ebz2ic38/krCPJiGKMbMKNYXotkb7ZZiHYcVkg6n2OZk9fzTZKYFX08TBFWsdt1lt4Jze233nCKXF6IslubPo20ux65Z9PWL80cGH/YFDs2iqrvBZQJp+kpdIt2PNttPPJFiloFbH8sgghn1WjrDJo5KL4oOZ1pecJj+0aFVoKPj2ZjIEGLcA8A1225I12GrOOiBFdnuwGZvt4by898iIByESBpUJ2iIKhQ3gJdshoclOUtQ/ngtusX59gwhCjo8AyLAdqWK085rZY3i8V4ZeiYQ3eAjya6ySFd0O3g7emm8fiaSaBqLGrhUr5dJwqA/9sCn4RsZNV1LtuTa1Gt9QOoQ+c60mhAm9E0EhDlGAJ3lGN3i1nrUEJOf5eTvSZDJym3/GZt3kwRSuHxAo0M+Kh3Ec3lXMm2sLYa70YA+yEr4qplX7ZQ1lI+pp9Dlsn6FEOwNTLdE8v/o3rV3XiXK04I5QDHiMx8yhU7cO94tYuBo= X-Forefront-PRVS: 01917B1794 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6009001)(6049001)(7916002)(39450400003)(199003)(377454003)(24454002)(189002)(305945005)(6916009)(7736002)(39060400001)(6486002)(2906002)(4326007)(90366009)(65826007)(50466002)(64126003)(7416002)(77096006)(230700001)(31696002)(229853002)(68736007)(38730400001)(189998001)(3846002)(4001350100001)(53936002)(6116002)(86362001)(36756003)(6666003)(110136003)(106356001)(97736004)(105586002)(92566002)(54356999)(76176999)(31686004)(101416001)(83506001)(42186005)(47776003)(33646002)(81166006)(8676002)(25786008)(66066001)(2950100002)(81156014)(54906002)(65956001)(5660300001)(50986999)(65806001)(23676002);DIR:OUT;SFP:1102;SCL:1;SRVR:HE1PR0801MB1740;H:[172.16.25.13];FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtIRTFQUjA4MDFNQjE3NDA7MjM6bk5tN1B0OHd1TFZMKy9rdExzQjdVbWdW?= =?utf-8?B?dnN0N0tKTTliSUdZTkxvZVBpOWlndXN2YTl6WHlTTTJmY1lYSWpJS1U3VHhl?= =?utf-8?B?Wk8zNWYxbEM0V3J1NWN2ZWlPS3g0OXlVNzhEL01yeUFOTFIyMTNTS0QvZ2M2?= =?utf-8?B?aElGWWl6eUh6MVhQSTJMRzlvM3ZnK1JkSnZVWVpDSnpTem91UXV0RHk0SVpt?= =?utf-8?B?QzY4QmU5eUJVYVY3SjdRT2t1M25Nd0JpTGliZWtPSXVnUVlNQlNvYUZaS2kw?= =?utf-8?B?YkJkaGxBU1dHT2ozU2xUWnFjMitzT0p6aCtSdTN3dnE5NG5NY0kyZ1dSZGhi?= =?utf-8?B?QmNHM0F2UmVtcWRNYWIvNmUzcnlETE0xREczQjFlQWVIUkJlTTFFbGdxVFpO?= =?utf-8?B?N0dWK2xEaCtxTGFJUWkzUnZ1c2ROZ3N1OEkvREJrMzBlNUV5V2UycDdrVVBw?= =?utf-8?B?LzM5ZzgyV0RQT2p6WDkzVzFwOUZTOW1PVnJnUTI5UkVpYkcrUEhySnZPSUdY?= =?utf-8?B?bGtaV3pIdmpJRXU1ZkRYTHNrT2FGQ0xrcWlkZ0hYMEswZGlUWVJIVlFBN2Vj?= =?utf-8?B?djVhNGJvNnhnUnJ1RkdFdEtTN2xLblRkYnFOWUs2akU0YndWNXhzczVYcnVy?= =?utf-8?B?MmhyY2JLUExlZFRNN0dGTnNETTZnUVBsM1RjSXh6U1kzRVh2VG5FdHdHRUN0?= =?utf-8?B?U0t0Q0hmOWgwcTJneGIwSXBKUXNERXhuMTExRG80SlZYSm9BTHVWVkcvOGln?= =?utf-8?B?ZVVNeGZFaFNFYmR0bnRUWldzUVpldHp1N1lsS3BkY3FqVWFYY2dSa2llazJ0?= =?utf-8?B?UzY1UUhYSGZSN0VaTzRYZVZpTE5ZaWxNOXB5S1RmOW8rcDYxSFNhT2NWZHJq?= =?utf-8?B?SXZFcEloSUQrUkRjbFlqU0NZRHhROWRIMy9xcjhUaVBhdVg1cGdxd1RhRFdQ?= =?utf-8?B?cTVXZVBXN0FiV3poT1d6MmluTUZ1YXZPcytXNHorSDgrRWxoZnRHMjNDODBM?= =?utf-8?B?UjJZdnpycU9qTDlmczJuakdoY1B5TWJWTGQxTExoQ1JmUU91Y0hVYWlzRG1J?= =?utf-8?B?TmdqYzJZQi9zSWZmeTFGMWlvdWRKeWJWVlNyQkIrckoveU1BdXVkYjdDaHZN?= =?utf-8?B?blN1SFBKaUdxM2xsOU1PbUVHc2RFb1FLR0szemRVVmpibVcweXUxelAvQUJo?= =?utf-8?B?TGIzeU1nQnlUd0dpeHdtaG02elF3aFd6SFJnS1FWVlJ5M05DOWIvSlROV3JZ?= =?utf-8?B?bFQwem9UOEt6QXJwMXhlS3h1MjFLU1dEYjdlcmljUzVEV3F5dW5vN2R6TGFD?= =?utf-8?B?Uk9LdnBoa2Evb0RXSzFlNm90dzZ0NW9Ia1Z1dkl5b2xDR2NaeTFRQ0Z4MTN6?= =?utf-8?B?SVFWdHJLck5xK3UvVlRoOURBbjNSa09BYkhxbG1zRlRzTk51Uys2WnN4akx4?= =?utf-8?B?QWhhWkp0MUZWYVlWZlV0MmpFWm9leHR4U0ttTDB5V0ZhYWdFOHNGVEJBYjNZ?= =?utf-8?B?TFRWU1ZiY0xuYVd1VDk4MUVCUkpvaXFFWDlkcFF2SmtKWlBwT0R6b0JvdDRQ?= =?utf-8?B?RVhESk9nNzJ2T1BYcTR1cFFlbldXN3FXQ2pHbzFkOEtFU2RFQlBHSVprUE9Z?= =?utf-8?B?bmxoUk1Jb25PNU43R0ZwV1ZJck9WejBkZVY1dE5aWUpmdVQ5ZG9WUjhPYmE1?= =?utf-8?B?R3E3QVh3Z0k3VW1OelpPb2V5dzZEV1p5YytsTzgzZDVGUEVwY1FIZjNZME90?= =?utf-8?B?MUpFSU0yMmpyalNzVXc5RzhvNS91aWNCUkZzOXgyRHJvQjNWaWx6ZVI3TVhq?= =?utf-8?B?S2FOckNLMGFsSG5tbGQxRklaMnU4TThENnBya1FRanZrdE9CUDdDaGFMRWpN?= =?utf-8?B?SVpUMkFHVU0xckpjTUZyckptK1FYS2VWN1lHa3Ftd3pLbmExVm1NS1paQkNp?= =?utf-8?B?SWFFbVNCeUFrS3c9PQ==?= X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1740;6:vn0ICwBXkCNficjc6ORU/0KEPoS9iun6kTznrAkhMZvX95XjJhDY20777OOTetVR5p69KYdRw8/YkRNQrVTQMXq+uIAnyhGg4yaiYfnEknCt1hj1oAiKBBwGOVnr0YOzFiXPpKfrgdD9TQUw2xfHO8zQ9aJjSjHlSWzPXO+0rEdLmWq57cz1lco1lFBdCUTy7dFIPNnc3/W6NBTDSh88SoQiIW1fZ/gYfOYt5Kk2WCA+fGOi1nlXBl4SYhmz/76jQKIr8IAKAzg4IUf/xrQEPHM53QRLTBQoQvRmgfPYBesB6eDbIZAe2d/PK2QdHnFeLWqUnDiyUlDim7YjQT0muD2X9iiGcyXf6x2eGUX8Lj93bOl4TcfrxQh/4jWJA42Lz5UlopbryjsLaF3ocIweo114nFVEMh6y/sj0oN95FMY=;5:x0GvdyW3NTIxU76Fnk/fU4fVHyFAPK0QYmrTizXkUNt0n1wV/Lwg91hX/urw9+m0dw5PLXkrxafosAvbay2Y7d1UYnyKkWkrzAU+dpjyLth/SPMJOJI4R0FHFoGgOv+/8t/sl03fGfMaPDfncAlQTA==;24:GCS2qoyvPKolTFrXOlXB/54/Ab+hPnRd35VWJGWTdkmuEFDeCHAnXjWIl42h3o2hPtbfgUvV+O/fUZNowlxRnQF3OHa39kI8Hvd2NTKpBSk= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1740;7:8xRruDXvUGb7BTrIxx8YhNCj322HT2kd4k3DqFeRAzKXFF2OAEjvcEXjPJXIQetpGDfvf66jYviPPZgBNo0fXEG9P3OSqDy0VPo60+nnlNvhoAfZNHqc2JqcL+yIG3fl4JQMyJQrel65io+Dh2XQt6tHdpnFJypTCFMtTuAZPXdbLuaOxXXOeo8XZsHxfRtDtWXqVxA9P7LVxHFM13wZaJOOyfMTKkUT94QCl64ziGjcqhB977H9haq157En1WEpxtfj+MgfQTKsup+RpweFiDDstLRZo/O19PCzDGJsMcEkKP6yyBxF9MMrQqd8bPcwtlLWLDEqC5xSJ2h7IuLnZ2NyWjfOcubp/CxU+n1ZTV++LppUVPxZCCc5NmqprgL1qY+ureZBUSm5vfvAWXjQQDg5tbpTceqDqo9PWlMOCj8e60AYcSBDgMjOffOIt4gm1WZGfD68CVG+7NF7jgeepQ==;20:cUN9l1lvMfDKzddYdwP7WfQPsJKC1rX3KUswGU1TdOFLrT3O9ptk+mAn9T7IQO8tQ/XTJNDRNJMsXDHvWLzfy5BjEav11eVlcnVF9UeZCmqylzsB7fGYB8INZjcqd7KrOFq+TnqocVsLzGFMPvOp3YfiM89McSyoJRi0XW0Jl8U= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Jan 2017 11:36:42.9212 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0801MB1740 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 01/17/2017 11:29 PM, Andy Lutomirski wrote: > On Mon, Jan 16, 2017 at 4:33 AM, Dmitry Safonov wrote: >> Fix 32-bit compat_sys_mmap() mapping VMA over 4Gb in 64-bit binaries >> and 64-bit sys_mmap() mapping VMA only under 4Gb in 32-bit binaries. >> Changed arch_get_unmapped_area{,_topdown}() to recompute mmap_base >> for those cases and use according high/low limits for vm_unmapped_area() >> The recomputing of mmap_base may make compat sys_mmap() in 64-bit >> binaries a little slower than native, which uses already known from exec >> time mmap_base - but, as it returned buggy address, that case seemed >> unused previously, so no performance degradation for already used ABI. > > This looks plausibly correct but rather weird -- why does this code > need to distinguish between all four cases (pure 32-bit, pure 64-bit, > 64-bit mmap layout doing 32-bit call, 32-bit layout doing 64-bit > call)? Only by need to know is mm->mmap_base computed initialy for 32-bit or for 64-bit. > >> Can be optimized in future by introducing mmap_compat_{,legacy}_base >> in mm_struct. > > Hmm. Would it make sense to do it this way from the beginning? That would, but mm_struct is in generic code, if adding those new bases is fine, than I'll do that in v3. It will look somehow like: : if (in_compat_syscall()) : return current->mm->mmap_compat_base; : else : return current->mm->mmap_base; > > If adding an in_32bit_syscall() helper would help, then by all means > please do so. > > --Andy > -- Dmitry