From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754228AbdBNQSY (ORCPT ); Tue, 14 Feb 2017 11:18:24 -0500 Received: from mail-eopbgr30120.outbound.protection.outlook.com ([40.107.3.120]:46884 "EHLO EUR03-AM5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752826AbdBNQSO (ORCPT ); Tue, 14 Feb 2017 11:18:14 -0500 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=dsafonov@virtuozzo.com; Subject: Re: [PATCHv4 4/5] x86/mm: check in_compat_syscall() instead TIF_ADDR32 for mmap(MAP_32BIT) To: Thomas Gleixner References: <20170130120432.6716-1-dsafonov@virtuozzo.com> <20170130120432.6716-5-dsafonov@virtuozzo.com> CC: , <0x7f454c46@gmail.com>, Ingo Molnar , "H. Peter Anvin" , Andy Lutomirski , Borislav Petkov , , From: Dmitry Safonov Message-ID: <4a52cb7f-f915-e9d6-7e5e-8672164f1614@virtuozzo.com> Date: Tue, 14 Feb 2017 19:14:27 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.7.1 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset="windows-1252"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: AM5PR0901CA0016.eurprd09.prod.outlook.com (10.164.186.154) To HE1PR0801MB1737.eurprd08.prod.outlook.com (10.168.149.149) X-MS-Office365-Filtering-Correlation-Id: 4d7d98d0-4dc2-402d-3e23-08d454f5122b X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001);SRVR:HE1PR0801MB1737; X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1737;3:5VT/calpZQziscRDQZz2oJnUHz6AaNyaeoa0R+M29IoVgUHt+Kkeil6o+FSGPSn3OfIQJqRmPfJeAsfiour2axROdned3WA0FrxX+Bq2jctFpmloJmmVUlmtBYPf1DkMLMpkKOpdZu2cDg2T7KneMY+r2Azl2vYY0NsAYqJ8p7e0d6kNdFvK7pWRR0UVvO80d8etENRX+eMrMJtME+Tmu6mdPMJecbrOLrRhmjMPgtTXtWvsPoirBFwOi2VS6SFPPQLW1BLMNVx2iHnI016NwA==;25:qvwP3uagTiB9qBpIWrm9ptavoFqkZXmu5ssFNU4RbaphUJ+H1sm/sFB8Tv5STyRpNwiQRA4Kw+wm2fg7lRkt/ff0UGn0AzgYDLjawoxYndbgTFioiqBxExOVWiA1AbBWogMUpNWoz6D0aKodZMbLfcHRnprMqsGFfI1nTiHtuuHwacmWUi8UDF24rXnrXu0jQauIr5l6wUIqeHbKX4exCRaUsA/JGwsqHgu/iYCT+8AYIIvCLkJ9zkiMdU64/2Elh+5XdTKvePOvcER6Aki+r97f1PPoB14GuK210N3mRZXLatJzvDK18m7iNhi/anDjY7UHwp7dNWRdY5pHCGNOyOVgKCJLgCx4JoAN74vGwOVoSH0wugfz8UrR4gDQkA37cvTAqTniydru3qER+x5TIadNpiMFSTjwtvbR8zJ/s1nMPaxfeUciBGhNW+lRAm3Bq+KYPtL0ofJAQ3ZdIhtSvQ== X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1737;31:a4FVTXZplFO+4nSaR01WeW2P7yHBwbcjje9LXa4oOPFfE5BWdS2ibpeO6ZDNjyoDHk8Tae8OyoXSccbU7V1ILaa8LMlkjKJW5B1C/QYVyWM/7cweBGK5oMkZ31hglucbo0V+bmJerfrpscQd8LMAryPZGjLdh7+3cd51YNiR9R/NWR28Lb2qOPz8TAPbeSJx2XpPSnuxJCuzeDqKZrven1abF8Qfrtljgwp6nMSnlbMb+9hEFimAPWwWD4ori6i1;20:ZwLXqAsC2z5QCPB7vOYjr4oLtv6GRbmnhcbEck7A9vAFNVVxNEeM9cKX2ahemscwGtUrJP6mYp9KPNUg+PCWO4U1AATzO9kidHdMkeSzd9rQjhKDjvesmMdvm5+P/k6ThU0NLcwHpa9p+Bwj3+sipEwHcL+ICmft/OfgMVDSYH2ZnKB0mjDqHo6CEMYxbrv0DGF0/QSBdddOCEPTnQoOxO3EpkQiSLRRuEaD0DOqpjYNDQyU6ikfPS9xb8HxlbhQh6ZFdiIxh0q6yFlmxaHsznJ75fbkxb6RNegrkJsvVmHKIAkn+SOQLjDEavmIQM43wqYN3wlTSjXudyg0W1oJ0JsWPDUV0HHSJkvl/+eMcRbp3BvoE87CZNIAwFvM7IA4wyHAnUDSmjrrZSCDBGE9KBB0EWIMJsKiv5bywNfac6g= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(788757137089); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040375)(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046)(6041248)(20161123562025)(20161123558025)(20161123560025)(20161123555025)(20161123564025)(6072148);SRVR:HE1PR0801MB1737;BCL:0;PCL:0;RULEID:;SRVR:HE1PR0801MB1737; X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1737;4:IRYsL4+OxEYaw3Qcb10mmm+s/XxP+MJIi5cjrkcBMXMUvWf+1BobvISkoQL9utSqZerkQQGSBPGO+GsdJheBARx3gWafu3nZoGFtO3LodKac1Yl9PhvHWZQ9DjE3VwfTF9fXTYyM+K2u3iNeqdl/3gy9lR98D0WEUTJtm/ZQglL/3ADkTxcOOLsUKUlHUmpdykpUiMBvcuJI1H3lr94x+ZIkqB1C+w1OKdBTNAVJAg1D5uOEPPj1UgLJJ/GwnJZJhkPRW/6n0uOvF8WdY+hWiV5BKp/Ay1ftDdiWB60qbNcv2v04TBnXPP7GHJsuWmWmnAqzsmT6ltA/uqfdihFtht2QmkjyuGXiZXQ24wNBkfKAAL5pwSHqNPUGrNfDcVRts5T6AZIXEVZpbfqQlFj+CBlwsSeNqKsXoFH4fpccUtNljJk7TdiPuefgeLT9ShQ162taz7HapYB6BQqkVQ4hSJCcvXkmjHpsnJq7y0tqEMzM94mVwj3k4RqhkzlWSLsdRN1NEHb5F0jSMuAn0u8j9k79pWiCCt6AzEVF6+GvS/N1A5MNZrQRKcsgrR4tcWBNzoklHX6Z9a53amk9BQGXChuJPAWprW9LEkmjSi1U6XrvU1rlju5yRDiWO6eSbHyjHHeW0MPiqP7djN65rYG3KQ== X-Forefront-PRVS: 0218A015FA X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6009001)(6049001)(7916002)(39450400003)(199003)(189002)(24454002)(377454003)(2950100002)(6666003)(36756003)(6916009)(305945005)(54356999)(81003)(97736004)(64126003)(7736002)(33646002)(92566002)(76176999)(101416001)(83506001)(68736007)(230700001)(50986999)(23746002)(38730400002)(65826007)(5660300001)(189998001)(47776003)(50466002)(110136004)(8676002)(3846002)(6116002)(86362001)(31696002)(93886004)(106356001)(6246003)(53546003)(53936002)(54906002)(65806001)(4001350100001)(66066001)(65956001)(90366009)(6486002)(77096006)(2906002)(31686004)(229853002)(25786008)(42186005)(4326007)(105586002)(81156014)(81166006);DIR:OUT;SFP:1102;SCL:1;SRVR:HE1PR0801MB1737;H:[172.16.25.13];FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?Windows-1252?Q?1;HE1PR0801MB1737;23:bNcI0j4dBiEQ3hQRtefwXNaqRj13TcSxEVe?= =?Windows-1252?Q?QMn9WxqNrnVTgLQ1G9D0ohXJPC7uAnou2dUVPElxQE6XwDHM8Sh+YhOU?= =?Windows-1252?Q?vRI0u+HbrSvnydXA9qITUlqxgjiRSq5chz/RV3I7HUoOM/p4HJC5fRWM?= =?Windows-1252?Q?p2hftOy6HlHO9Bgy0jzFSzUyXTsBYGXlOp4DnRumE5ZGQnmTdhmCAQDh?= =?Windows-1252?Q?PalO2JGP8iipyw6kC8fsVo64gOX78Xjlq3c4X+35AIC1AS8lbmO8iLp1?= =?Windows-1252?Q?EDiIA5wo6wZG5fVGSQq+DaSNLW1x8b39a/G4V04J4uZg/+04TDK3GUEB?= =?Windows-1252?Q?MfhMposW0ve8CH7HcMRRJhiez9QebgqI8mNbS2OfIGiX4rnQ7WEEq/eQ?= =?Windows-1252?Q?ZML7V4fVo+SpPuxHSH36xP/M/GIIFEZSNSwdHBjFhjOg11tY4OefLuY5?= =?Windows-1252?Q?YMK2F6zYi7vT0FZ42LkgBPi2Fw5ktDs9lrk8zBm5zs6wrWvBNiJw/Mvp?= =?Windows-1252?Q?5I6tiPisPfF9YeaUJ4El5UORtVbM4dB4o8t9OMpWUAd0FN1+QLQwTI9n?= =?Windows-1252?Q?6EkQV+B92yksw1z5U2Uc6s++dGld5T0fHQuN9ctDoJMTgYH8lEIBXVfr?= =?Windows-1252?Q?4KlydzD7EgheYCDFLD4XhNnYKFaqGJLyw9xkCJw316jZQpRYAFIC1Xz6?= =?Windows-1252?Q?yEW4mTMe56mRqCEG7j5Akvi9ucuorJXViZ8elLTYAPKzpdVLVPp0NAWb?= =?Windows-1252?Q?OYnNMKDspGYdr8fUHwf5ijFyeng/4sggAnsG2xHtdkLDkwqE2lgNFtDs?= =?Windows-1252?Q?Lqeoqm5xQZYrr9/zsHskrfu/KCECjWqal7Ung40q7n8lXCT7Zb02Qq17?= =?Windows-1252?Q?PdKnn+D1wgQ/fSEGjIXnNs6T3VApuSsqO55WpsLRVBPwwEryxXTApAHi?= =?Windows-1252?Q?1md3d1dQc+7vas0KDA21b9i0obgl/IqUzgGvJo6Z/jytX6rsZl7QSaRI?= =?Windows-1252?Q?8UOEvje871/gl6BfFc6A84mJSZCEbl0mB7AtZFPuQFYUsRwn+e4Z057Q?= =?Windows-1252?Q?7YO/iPOoB4txelH7yW0vX87limToZga0Mg7JrcT2Nr2i6R6QsqHCQwSh?= =?Windows-1252?Q?GgbbL6LfFifmXKAueDSGeLJ2UfQcxsCHJWVxlzSbIlINSXKLHmNnslp4?= =?Windows-1252?Q?VnZ5cfyFEt5JUd/GBOd/SYo8OHDB8rEhmNtgytI/kjnCFwuO5RsKxPtg?= =?Windows-1252?Q?1nqiCUhD0/kF16WeWgQ+1X7Kc/r7jT1J8KlPF2F1Za3G363NHeQPoLyr?= =?Windows-1252?Q?wQjDJtUgT1ph3Se8O8AflpBvszzaRCfEwL4sbpU0i9pxSDqb+sVXTd+a?= =?Windows-1252?Q?kwyeirQ8Ne+CLs78pi7Kg0gYBjw7Dy5d9KB06UWXRDU7R+C1esk9pojN?= =?Windows-1252?Q?K+5TuiyjNKqjYp4kxicpNUB7OhWFtNIc35jzfGqinGJLZl0MnSQ8jkgD?= =?Windows-1252?Q?HTX+xHbtSwPg0yPaTIBtWWpobWe8JRqGvBQtQ/6MyY4DxmjVNT7UE1nn?= =?Windows-1252?Q?kbloc0Kb6s9O1LGnCMx7StoqZHAueBCH/qhYL?= X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1737;6:i7gK9Pps6ELDv/ZA3PhCy2L/HlFA+3+JIszApjQby9ZvXH8ruBr5+jzsBXQefrHXDj1nQ54kj/aJfeMHDpzoQ2hzKs2lsPUBEi7So6ig2OB0uzN4aVXk0m9gBoZxKdYjcVOlZba8BZ/sxVQA7AraaPRu+rehlGtFSKg5Cy6sNRXDMNND8dRvAXzYy8B8Z+fm2WiijPtrH2asynupQEjkzX/LInJ15yLEyKghmJR9/BDMq1fx0l5hluOWnjCbpSbX+H7aEzi+NIt0M/08DRCRh4SJt3bq+eCrcm7rtcrp0F0u+GFdP+hcH28PuO3GoNdg6tY7o33dUmmTEYe63ko5mPZker33CszuGe06W8ftxj1Gb7mnoW+g13egGwugMxSBRQVF9a7QwbvbOoi7xuzD9A==;5:0SMEW1Yu0ZVkXyE8w6csk3dQrfY267g4uPmipHynPoDhJG53qnZhg9+H3g8qrtf8/v+K9tyqDTDGF1pwjvRyA//zzmr0O+1GwnriZQ9/GQAf+nj2mxztWuZbOjA0VTJ+JYKsB9myICYIYSZ2mu5zHQ==;24:UwR9Vq4zKugTMamlFyfCJciz8kyaB1VUktEygjHn8kaPYrIdkkI7HLc5TjkWZpuQHHLCPPze/mxfCTasu//EVd4yWLGxJeTNYB97ec8g3jA= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1737;7:TiwFt7j2IH8pOlp4VpjU2APRumct6H2NBnxKix7oFCL88XcVAD3hM2sIu63aLR3hRZlf8hK0iefKDNFNi8rHJt0QpgDarSQT1VCuJeAu97sdJ/xpzUXDCFET4YCLqtmVQgVHSM0bU7+NfF4iK0UB2An2sNcMka5JyhgUHmF2lUP3YGeO+JIRuzO98CUtO6ybjdj10GNa4voUILI52OKzhuf6/85wU+KCokHHpn6IHRf5V6RMOtNAJydY/93xJIRPih392B0X2vu2eW2PCyo+NzE8EgEE4hNoJxim1eVOazVw372H2H5hglN/RwL+12ld2K9INMUgG04wrHlm9q8pnSh0OgqPxCWRKW4q0z2kJStizHEYDVHjiiO7jDuw6UNM25rsVD6R8b/W5WjQbazytxF6qykjD+UyPOcTv7XFjCltXnv2qC0kScUEMsYV7rso5zUFzXKsxpLtQzKLitLkuFoe6Cj7CCMpeseNRVlZWFYbN9RMzzpv2ghbSVh1j3QwjDkmY+/a7FJgt9gsQjv8HQ==;20:/JQZpVuX36YJOB3ihFB6EWYZbPWGX6q34vpq/VbZKpGmkX8CL5JGBVSVE8KOPi4BAXPR9X3jmfFtcjNOCKxVzbaUEkoBJRwhCPalQtTrwsz8Ho6a2Pp4dkQ65dFVg0V02aUcAapBq7rcCuLYZnOfhV50vvOQhCLwbaP0gtu4Y1E= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Feb 2017 16:18:10.4468 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0801MB1737 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 02/14/2017 07:11 PM, Dmitry Safonov wrote: > On 02/11/2017 11:13 PM, Thomas Gleixner wrote: >> On Mon, 30 Jan 2017, 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. >> >> I really have a hard time to understand what is fixed and how that is >> related to the $subject. >> >> Again. Please explain the problem first properly so one can understand >> the >> issue immediately. > > Ok, rewrote the changes log. > >> >>> As a little bonus it'll make thread flag a little less used. >> >> I really do not understand the bonus part here. You replace the thread >> flag >> check with a different one and AFAICT this looks like oart of the 'fix'. > > It's a part of the fix, right. > What I meant here is that after those patches TIF_ADDR32 is no more > used after exec() time. That's bonus as if we manage to change exec() > code in some way (i.e., pass address restriction as a parameter), we'll > have additional free thread info flag. Oh, I lied here: it'll be still used for TASK_SIZE macro and etc. But, I don't see why in generic code we can't use TASK_SIZE_MAX, at least at this moment. > >> Thanks, >> >> tglx >> >>> @@ -101,7 +101,7 @@ SYSCALL_DEFINE6(mmap, unsigned long, addr, >>> unsigned long, len, >>> static void find_start_end(unsigned long flags, unsigned long *begin, >>> unsigned long *end) >>> { >>> - if (!test_thread_flag(TIF_ADDR32) && (flags & MAP_32BIT)) { >>> + if (!in_compat_syscall() && (flags & MAP_32BIT)) { >>> /* This is usually used needed to map code in small >>> model, so it needs to be in the first 31bit. Limit >>> it to that. This means we need to move the >>> @@ -195,7 +195,7 @@ arch_get_unmapped_area_topdown(struct file *filp, >>> const unsigned long addr0, >>> return addr; >>> >>> /* for MAP_32BIT mappings we force the legacy mmap base */ >>> - if (!test_thread_flag(TIF_ADDR32) && (flags & MAP_32BIT)) >>> + if (!in_compat_syscall() && (flags & MAP_32BIT)) >>> goto bottomup; >>> >>> /* requesting a specific address */ >>> -- >>> 2.11.0 >>> >>> > > -- Dmitry