From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756054AbdARLnc (ORCPT ); Wed, 18 Jan 2017 06:43:32 -0500 Received: from mail-db5eur01on0097.outbound.protection.outlook.com ([104.47.2.97]:22432 "EHLO EUR01-DB5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1754062AbdARLn0 (ORCPT ); Wed, 18 Jan 2017 06:43:26 -0500 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=dsafonov@virtuozzo.com; Subject: Re: [PATCHv2 4/5] x86/mm: for MAP_32BIT check in_compat_syscall() instead TIF_ADDR32 To: Andy Lutomirski , "Kirill A. Shutemov" References: <20170116123310.22697-1-dsafonov@virtuozzo.com> <20170116123310.22697-5-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: <09f45e26-951a-ac10-0749-1bce8639cfbd@virtuozzo.com> Date: Wed, 18 Jan 2017 14:39:54 +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: VI1PR0501CA0003.eurprd05.prod.outlook.com (10.172.9.141) To HE1PR0801MB1740.eurprd08.prod.outlook.com (10.168.150.7) X-MS-Office365-Filtering-Correlation-Id: 5e8f6295-0e74-4155-7b49-08d43f972ec1 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001);SRVR:HE1PR0801MB1740; X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1740;3:pdCMqVNvoVAfV/TqW9CF0lKubL9A0YW7aSbmdayv+w+kCQy/tYgSsGKtU3rDKkIZqxYBgR5fDVozHIOoWC8o4EDIlOxRRqgnuRZBS0Ckq8HAe/bpvj30SILzeQ4rXkV6tXGXO9+4kIP6LTKXXEswTMgnvfLWxv3vz3L7RGK3Xet8CeZPpY2VQcJk0g8ioq7VLLCCCwNmmr6ExgwMji00kWN3mgJIeSHQc9ChZHV+j13weSkZu2avpma7Bg3AkZ3zEefzP0PMxgG2wByUJ8SFkg== X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1740;25:NhkqsFslpE+OXdewmlOO65j/BkBjuBMDe/N9vf4QpZFuxOhQqgs6XiKxeegfVlSgAenp97VXnk1Wnu/gvf+jyV4swRQLAuK+citSoDxK+XKsAkOcdpZ1IfozmIiHEy5/BjgV+aIuruisUic8/vfKzdLp10iRgSmdcgkVoL3eBsKdgJguoHGKOvZukb1qwW19mZnGoRVEnz1rbH/1WR9/XAyFS7suBYvFFlnN3MpHik83waZ7NpMWK5MmWR/fwn4PtyE6jFQI7XhUlZxCbZ15mj6Ocs7admJ2JpMyEVb6VzqqduvCay5MLt27cGzSLFa+O5wvyZ9IGm7qgVc8gVF5SQ7ccb9pFGrKuiaR/BqeiMxbvTfcy8SOxhDwAByNyQpZqmJFos3xVQ3OplXN1rIrCYde+DS9kCts12jcDxRMwlnUmWhhMtvCuVmeCtUnfE5Imxsb4Yl4Vyjj/aHMpx4qU73q9VrlL7jU7l0jN6cxl8RKJvBROXnytEifl2lQDQJjor14cisYybS3KQaVn1Xfnuv2fd9Gql3RY2aMEqn5L9o2fveIxg15MuQicilX4uJ6lWUwW0Y4J/fEizCssOJEYNTyhevrWWTyFkIcbQ6QmAmhsfqN/kUPZrG2X2w5sjOFOCUoI79BS3MdeAW/WeX0vmNMdaGcvP6q6U042Kp4d92AN8ex8+/uQgl8ViPvqyG9xPEe/q8EO1T6h27KCTPZa0jXJ3UeeLc0UCVy7/0XfMD5VE4y+BTAig45CXzEFsY5y+0CjBQxpCFo/7Jqi137cA== X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1740;31:DSCmWTzqoRfJ9wgYzpdpWrd+rbw6vN5pSL76yJ+/Yx4lhu9DHvncVS4kFy9BiLrCK9xr5dXqjLX6oLad7x/swr58MPpPuNLzndyoSsYZF58qaRLFiDGn5fhfZ4ZAc/+vZtEbG1EZzY7k+52JzJdxQLfBVeTDPichsDyZEYQ5QLXTdRcTCfPyrrbodKlI+1w838m9jF4WwcWgYK8eeM6UXvJTokxrzSaZm/hp1ocTNtXe9MSNUj4ru0qm8IVhv5l4;20:cl1jwedprCCF/vIJC/wr31FoZea0YMt/Q+p+ZpsxjweYycbjbJjWLqncoVZLtCRmzbztYF5hqfRCl3OLPxDGoOT7lss2Ot39YzHplh0hGDephO3f2wSKmPf0IQPfLCI1lqE+CvRp9z4wkfEA9cOBUuC9jiXCkD2sCVI534csXCVFg/biXs0MWBbdHVV2GxLVvWZEDEORxakubXJqm1ELOH6NZ6Of00DWAo3UlZHaf/zVPBl97y76TRcIy0BkS36Y 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:tIo+pGcQLT4w83cncU67OP9j+26fp4k9OvBIt+zv4CZYZkkm+zBTwvHfS2Wexv7j+sZxCTsYRav/tfaSgwlEMW6AfZBo/cHLDLVEZLtntsBX2NHjPghpQp9zzg3v979CbpEqT3VADkUFNso68Ndpzt9yvdwr88eFJQ72OzItIjbKFpu7FcYlyqRkVmgCP3DZiHDcWZavOoE83A+OvM96WzgmrQl5kzFWgyqeX/QNuG5pj3BJhnxy+4aCG4U3TNrrUz4GWv8Z1ovAUnHDyoCTxcU2M3v5AhHFNf7EmAAAIWvfAlnTxSJasKBV3SJL/t7vLZCVOtTQTbBzh0hZ3No6wb+1hp03FOmO/mLzLNmm5OMIiNyPsnf5PAJ8iJ4wLg74lPZK0BKAFSihD4DB5CpoPWlGTC01UqIwHCkerK1XlZol7uSj9dKer2UFmcEUevRECCgcXAflxlvzmsEsQqcF7LKyoJDGCQEoeSdV2J8q98yYUHfE0U6cidusduPqVEBx5QVefg9nrvxBDT05SAeUpocJm3Ad/Fo7diQmNB0R/tbpJRWYlXpsxnq3uz7DMyKUSVv6F+EMULeoTzDa9HY0IgwdWlmqQ9oQKdj0vGy5PlU= X-Forefront-PRVS: 01917B1794 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6009001)(6049001)(7916002)(39830400002)(39450400003)(39410400002)(189002)(24454002)(377454003)(199003)(42186005)(47776003)(31686004)(83506001)(101416001)(33646002)(76176999)(97736004)(106356001)(105586002)(5001770100001)(54356999)(92566002)(5660300001)(65806001)(50986999)(65956001)(54906002)(23676002)(25786008)(8676002)(81166006)(2950100002)(81156014)(66066001)(4326007)(90366009)(65826007)(6486002)(2906002)(64126003)(7416002)(77096006)(50466002)(305945005)(39060400001)(7736002)(36756003)(86362001)(6666003)(229853002)(68736007)(31696002)(230700001)(6116002)(53936002)(4001350100001)(38730400001)(3846002)(189998001);DIR:OUT;SFP:1102;SCL:1;SRVR:HE1PR0801MB1740;H:[172.16.25.13];FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtIRTFQUjA4MDFNQjE3NDA7MjM6NEhndnQ1bW94d2gwOEszRkVXY3BIcmR3?= =?utf-8?B?WEN1blM4Vmo1dU5odjU4YWFFQ0Zya1BrT3RGSi9nMVIzNEd2SGtMaWI5aVdl?= =?utf-8?B?cHdmQzl0WDUwMFdtaWppYlJmYW8yU2RZenkzUExtenRNNnZwVWZZUjc2ME5v?= =?utf-8?B?WUxKWGV2S0cwS2MzeEVkUWtOTktsUzB1dGZ0MVRnc28vYU1tNEZMRDZuNVFW?= =?utf-8?B?SkczcFBGZ244M3YwNEZ1RlRTQWhwV2NUMG5WRVVFdzcrOUh1WE1oUURuMFNT?= =?utf-8?B?MU50TjR3b1ZuZFVIWnF2Mk5VUExDeW0ySjhvVlk0dHlDSi81M2dpMzZDNmpw?= =?utf-8?B?T2d3cTNlWEl4L0R2OHQycExLQkFQbEtNWnh1dzh3dmtOeHhENFVPdGJzMTMx?= =?utf-8?B?ZzczMWxza3hJb2V3bDB4V0tIL21jSmlrU1JHeTdoSTU1ekFuM1pUandhS1dV?= =?utf-8?B?bTVZT0hVNC9oczZGMWF2UFY5YnpJRXFHcUp0S29vWXpYVGdYZ21YR2VGdEtR?= =?utf-8?B?ZjBLc1RnR3gzWkdNMXZ5NDNyTm5CdVFYbTBMWnZBTExZd3JCbGw3VFhNOEZ6?= =?utf-8?B?cDBTYlZ5N3ZSY3JBaThmTVVzcnJSYlk4ZmVtU3l6ZmJEeU1jWGNTWnBjR3hY?= =?utf-8?B?eDFUVVdpVDYrZEVvazVYb2dNQk1tendkU1VUOHJLM1lOek41TXptM2NsMTB6?= =?utf-8?B?bkZKMjQyV0poV2ZJWVpZTHJpV1BDNTZKQmc3NGpqRU5KWmg4ajMzbjRnZXBG?= =?utf-8?B?YS9uVXRhaWdrelNDVlVFLzZRQ3NidHFJMW1GTVN1Z3dVc3FEemZiK3ZGMkcr?= =?utf-8?B?SFVVbEZlbUtkM1lrRDNSeWxqZEtadEtxUEpieEY3ZHdyc3F5c092Yi9NbUZn?= =?utf-8?B?bndKZlVMVkNTTGpBcUR3U2FodGdEUXBPZlBMNzY5Um50N3daTjVwMW5GTmc1?= =?utf-8?B?Qk9yQ2dydmlhK2RRazBhWW5IbkhZbm5CMURoTXB1dVdsNmVBbUl5Y3A4QnlH?= =?utf-8?B?cUFMc1lpdXp3b3krNHNFMG9zbnNxcmZDbWRiSW5DQUJBaXczYWJKcjh1Tmlm?= =?utf-8?B?Q1JMUmNyR3hJelBuazBpRmFJQVdmdnFlSUZ1RVZWaXoyelNZbHVpdXg2Ykxk?= =?utf-8?B?V1dPUC9FUWZQZVllaDhtd3lLVUtwTnpWY05VWXlEMUVaSUhMUUhUWlhrMHJP?= =?utf-8?B?Z1NoajNOK3ljRmpCeU8yNGNIUmdFdkprcVVQcGNTOUxEV2JkUFE1THRxMWdo?= =?utf-8?B?cW5iY1ZWUVlETlVVcVJtejJyb2dudWNvTXJwTndVQ1o4M2VhSmhKSG12WllK?= =?utf-8?B?Z1EvaGV0eTRWSFVYd3M4V1NPRVlNdTlhbi8wejVvTHd1L1ViS3JtcjQvS05S?= =?utf-8?B?SkYxd2hobXBOVG02aGVNNjRGcHczQjZ4a0FEeisrai9OaGR3Uml3WXRjcUl4?= =?utf-8?B?dm1TcGcxQ2tGci9ObXpObHliRithNDNIWkhzUG0xRnJDanQrM0NFZW1HWDhq?= =?utf-8?B?cTFvdHFUZnVIWmZiSFNjaGNyM3kvam1tNFA1cTk2QkpVV0Z5a1JsclN2M3pI?= =?utf-8?B?MUpyRFppWFY4cGlBWjFZZVhoMllWNHVjOXAwQVl6UzVpSGkyL1dWUE1vZzRL?= =?utf-8?B?MjRtQXdySCs5MCtLekRISEdIbnl5dDF5SmRQUEFUQ3QwQTViWVpzVm5uQUwv?= =?utf-8?B?eXZYU2FWVUs1dmhPa0dLbXZHNkhQY0cySXBkVmNLV3NHbHNLZFNTS244OHhy?= =?utf-8?B?Y3ROekJ0TWpyWHgvZVFTeEVnc1crQ0hsUVVJL2N0dU0yb3FiTTVKTVEwOUhF?= =?utf-8?B?aE9DVFYxQUdsNGs4dEhLY1psTTd3QTRrblE0OW9JenhUc3ZOSkdkUDI5ZnJp?= =?utf-8?B?QndvZURjUlEwaHdoaW8yODNlQlJBSk5iTmxqTy8yRVk3aU5jdTZVYWNtbVAr?= =?utf-8?B?Wk9SRTl4YlRwcC80N1F1UmFJQkJocTJGcFVsS1FqU1V4Qm5pdWVXQ0tqRERh?= =?utf-8?B?d3JTK0dUaGlqS2hLc0w0Rkt1Vk1TQm9SdXhEcmR3PT0=?= X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1740;6:5jVuN+obAdjqKZzX86rhe1AUlPwE6WzXzeoIk42eEYRpR3JPCX/0c9eZtdeepsYbCRVn9Xlm0LltF6DRFza6KqzRJokHyECGExTyhwqMTa1mIqHMeWupwFo4u5fd5spttCzpNrIeNxXPNb01O/AAfaNpau/1+rYGMHegYGe9MCYAnVhn54UWKONHrx1IV9mM7rvDIn3wtFKEWh+vkHnKJ6tPKOxTWNAWUurj4KaZmWTHjwyDLyum94/ih+gNs3kYMewDAzWNNe7UlD3YuTWF7eXJXL8RKdvOwwcoCvA1XBMpmgCOehb1u3sVg+bphTjVxdda3YhlBiKyyMVGfTQsWAd+IJ4qpnWpVTTCjnob1bsoxRxseqs6keB5IeoJBQ2bUz9DwTAkWm+g6qGDPc8hYpdH0cpiWScEewVNGHLhnj4=;5:yB7ijGq7ym8WGsTX6lHKnlATPHB1VSEsQHxwbpjsFiIlvyMmAcZzO5VSXaLQmdQSLdkcz31Sw5akblmyAxRzdMl0whRqnJY7957HQSngB4+yrluk48udnPTqJx/6KEJcYb+9CfO9eNFxm9cBv+T5Pg==;24:QfFR8uf5xo76Dco2a7XSSgBjsiZDWylqlAQHCKfUJRXFUHviZGsKFPavtnnsaJR5Wwc5YE0N8OObNhMqekzuNU/H8zjnE271djU58jCwebE= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1740;7:x/Jo6Wzpgggf+oEgQ1BHEXPHnsUml0Nw+NSvCc9Paq2WFvAYgF8O3FKahSCBC25nA3XcNvAm3Y1gAG+ee8J6NnZdlqaEEgmU0U5EYDvyJDb2FZ0jJ02VA8RCx1s9ZXM/Z1ymlbhdc2MYU0GSsUCuagecujkb646V8mkdsNBf4G1tyz9SMpJqePBNjr/CcuwTpLCGyesheyOTNRK6TE06BWFDq//ZQ4oRMKi1jVrIdIOpArfPBfiAn4F6kho27AuTSI84D8HERSafToRqMl6mNpaIbB3VVS50r9tsyFi/swI0zEq5TD3iYCW4Tx7sTT+2PM0rMIp0e5h0+yrtP4Fgp455aeC5J6kn5YUaDQrAg9DPZbB8ZgNZSm/Oa3yN0SXZke7KcsXcckUpM4nk65DZ/96c7hQ5D6oPmDvrTk5iHhO8x2h8ydhQhvzo/UoARzP/u7N18+E+EfcCBXs4U0zRDg==;20:oXdyvyUCcx40dNF+QV1d2oetFe9rbsNxSt7eXc8z6k9aGvxpJfyymXNZSygn26MalEhSwWAxWUh2FlR0ptvAbSjr3UDdsRwhFGJ4RpgmFIotv12qNEw+GLTApr/SkxEcopstR9XtZOXkxSh3hD9p1rDCm5Z/TfdAEhrLYuJUonk= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Jan 2017 11:43:11.0025 (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:30 PM, Andy Lutomirski wrote: > On Mon, Jan 16, 2017 at 4:33 AM, Dmitry Safonov wrote: >> At this momet, logic in arch_get_unmapped_area{,_topdown} for mmaps with >> MAP_32BIT flag checks TIF_ADDR32 which means: >> o if 32-bit ELF changes mode to 64-bit on x86_64 and then tries to >> mmap() with MAP_32BIT it'll result in addr over 4Gb (as default is >> top-down allocation) >> o if 64-bit ELF changes mode to 32-bit and tries mmap() with MAP_32BIT, >> it'll allocate only memory in 1GB space: [0x40000000, 0x80000000). >> >> Fix it by handeling MAP_32BIT in 64-bit syscalls only. >> As a little bonus it'll make thread flag a little less used. > > Seems like an improvement. Also, jeez, the mmap code is complicated. Yes, but it's intentionally 4 of 5 by the reason, that it'll broke the second case: >> o if 64-bit ELF changes mode to 32-bit and tries mmap() with MAP_32BIT, >> it'll allocate only memory in 1GB space: [0x40000000, 0x80000000). if the first 3 patches has not applied earlier. (because it'll allocate not in 1Gb space, but in 64-bit whole space, above 4Gb). So, this should go only after fixing compat mmap in 64-bit binaries, which is done in prev 3 patches. -- Dmitry