From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753912AbdBNQPi (ORCPT ); Tue, 14 Feb 2017 11:15:38 -0500 Received: from mail-eopbgr00104.outbound.protection.outlook.com ([40.107.0.104]:31824 "EHLO EUR02-AM5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752826AbdBNQP2 (ORCPT ); Tue, 14 Feb 2017 11:15:28 -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: Date: Tue, 14 Feb 2017 19:11:40 +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: VI1PR0901CA0054.eurprd09.prod.outlook.com (10.167.203.150) To DB6PR0801MB1734.eurprd08.prod.outlook.com (10.169.226.149) X-MS-Office365-Filtering-Correlation-Id: 665dcd2e-22d1-4874-e66c-08d454f4adf5 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001);SRVR:DB6PR0801MB1734; X-Microsoft-Exchange-Diagnostics: 1;DB6PR0801MB1734;3:FNzpLbDzTYT8KRFV7qQHOz3X3iM3PSKu8A3AVJx6v2q88y7j9PUzdt4GVUWNAMbX0aaqbxYMtIK7YLVomf6GKlagaXg0izbAAuZBr9O+xrQoyjvQjY50PifeebI0/NeGAwu6J/5MtHu1p+uySw/I3CIZZd9VM/ADtfqXyoRiXL+vZfNCCYmXS/aREV/UbW3tCEqZmdupOG5eL0bmztcGsqpDrLtrfSyUyzDmWvwxl3YZ9D2JAHXLZmVcl03wPah7C00NEsdq4am++feGZx4TkA==;25:tuYrAp31GwYk1S8ovrg4d18OTyatpUC+d6sfjGnoOAT0Ue0lhkP5djAu1qsTkO3AB//Xu38gf7o2CuhsJQ7mVxOKcPVMrAvQ4tLkGylxfkvK9e3yGIcTbENItBFCHfiJkXHdXjFmV0+QQT58avuqfPDf9IhCMrpDH3Tl5s9urzdj4NafY10DbvXKnJRcnsXT7+3N+q8sgrYAiV6HklW3VZUfRrrC9e3fCM0qgEG/IOT2eDhWoSSfUlNwwgafvQTRPoMzboOZu9+V/noeNlBMU5uYEqHnb2bLID1n0Sk2ufpyFmCeUTZ+gSvQt4fFhAV8Dy9e7Ls7HF3OT9uhr3oMwPkq79Unj4nPEp24Dv8SIUPLTYjbl5nY2tHARq001MiAINlbuWSZnFCRfSuJN+f9DVGh08p6uADOXnml/E2U5xOYWufku99kTeogSp0jbcu97TNnvKX5uTdb+cISm1UTKg== X-Microsoft-Exchange-Diagnostics: 1;DB6PR0801MB1734;31:AdeAeiqTbMKU4ktG3h2vWK89G2bQPwzCSjCfcoM02Y6PxFY9KhiOs9e3dv/fPpF18+MbnEQ3DiJGiSyerO/Grb8vFvScn5pxU/NWJqr/zNahuT2pfsKtznqCa6ncGY4xECvH5bQViKko7t74pdCMtaOtX4jBeGWONd/JeTojajl751snqVa0tGtbX2wmTdLZdoOaDSmdT9if4bqscMG/SENwGtmB48h7+QKr+FpwrQ4=;20:iYAz3rJ64ZM6Y4ZrGVWKGcc9tGV9C2WJNeLPxLDiDfu0GEwKc3+TPVqRV8pXV7YTxRuTvkKg8kvXWQW0JVf5WR1LiYMmPCPNXvGlb5qwQEQ/adAoX8cHGDFbdHl/4OJ2uzj85VCaSpeSOC333viHqWadV6ipPugoSNIlAR7uMTbFuusE2YqHzzpcGEbYeKocb6TNCDKgXiSNZ6XWKM+j2FsD5QlM+jFVSp0zPLbqnSqQwx4iAQPw4s6rpqEGLc6vmsrTj8bwKFFbK87nE/YQZGMYnSNemhbgBYJi5MsZYpLl8VCwMd1hndj+xS8hHwAmk+eKuxmI5lb/cBW2MbbTf35shSkAvZiw8RbhHSLASyWo3h61JVC36ofQHXSCarugBW/MA66nRU7N5zNTXVMrkkwPnEluF1KmEiflcc/mfbs= 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)(8121501046)(5005006)(3002001)(10201501046)(6041248)(20161123564025)(20161123560025)(20161123555025)(20161123558025)(20161123562025)(6072148);SRVR:DB6PR0801MB1734;BCL:0;PCL:0;RULEID:;SRVR:DB6PR0801MB1734; X-Microsoft-Exchange-Diagnostics: 1;DB6PR0801MB1734;4:NtgigxU4QmOitbmFZSiWQPVrETx/QsKQpruoo8eoVlcSRU2A2wOr6IkR7uSXqGZjisl1rsYchHrYv9O/pmvFh8ee6vTEU79KQZRh7G9lvu0n9or+tIAu8UkbowSi9IppadjSlINa8koRvAeOKJSNRmScOj7oNlBl4eHo8b9m6k6qkPcTWN5q7fUKybyw6i1n0WAcrRsB/i5Amumgl8mHehNHns7Z+2QXtl4eohY1WCmoF7jwAee7BEa8/CMXcRXFHztfDyEKYIr7mE3c8coaeAE0LpcHjLUoY9fm2wOOfLqtmtjDb+eTTJmqaYcIhuQynvELSF9C+qDQY68D/1YY70ERUa5tdhJ8BppkDdYO/Z6Re/XQpXB6kyQMTqMbBpfhSgffWzJkptNJCmOlVhczVdnKuOxcZCE8uckwzf9hhnkgtI7fKkHPWSiv0AAuGKZ9bmE2vm5P4KoHtZJSqTsOgfKGo2SIAub+IvJPaG9iZXL5BJFJJrk0z2H5zym9ssQVvj4nskTrlydOR21nba303tPJCub0NDg/79oEoYfzTZEZoFeuObMVUFk877lBf9jNscnW4XvdtIxY/oI+h3xAtcIMqNTjv6ZfUTS0I78cabtfcHFgtwUb++cbMsMGf25vJMQU3TB7MyWI+hmMkEHM1A== X-Forefront-PRVS: 0218A015FA X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6009001)(6049001)(7916002)(39450400003)(189002)(377454003)(199003)(24454002)(110136004)(3846002)(64126003)(92566002)(33646002)(6116002)(5660300001)(305945005)(50466002)(53546003)(38730400002)(81003)(4326007)(6246003)(53936002)(7736002)(2906002)(65956001)(65806001)(47776003)(66066001)(229853002)(101416001)(97736004)(81166006)(81156014)(230700001)(50986999)(54906002)(4001350100001)(68736007)(6486002)(31696002)(77096006)(65826007)(86362001)(31686004)(36756003)(6666003)(2950100002)(105586002)(6916009)(83506001)(23746002)(189998001)(76176999)(54356999)(90366009)(25786008)(8676002)(42186005)(106356001);DIR:OUT;SFP:1102;SCL:1;SRVR:DB6PR0801MB1734;H:[172.16.25.13];FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?Windows-1252?Q?1;DB6PR0801MB1734;23:ZpeaLYWl/uKZpW/81AtVIbHUOSrtNAZuACV?= =?Windows-1252?Q?joEpQuYgRzfhXwjRn1BkT8mECtjzPpKDgkSuklUsxSJu9JliNNGrSKoR?= =?Windows-1252?Q?3wgMyR0wDtbtJ7hUmE7+U1RbfO6Zg1wId2stalaiRFVZfSdC2UqR+6Eu?= =?Windows-1252?Q?N8otqG0xeuodsAWKPWhK3+QcLt3eD2QVJjYKF94itHxn7EkaaxmSUYx1?= =?Windows-1252?Q?DTwz2VbwcDE3KPD0UQ9Kpy7P/RJ2mr+iDPdqUbDFe74nQYDGoH0D7cpe?= =?Windows-1252?Q?Nd21tMnW+dAjB6gUavmawrrJQtOHT5kOWdfl12VKorbL0RcQ8WmEgVeU?= =?Windows-1252?Q?zpKvAwbA7EKh+wCj01I1YeSgblatjYXzTSiBBM0OZ8SQTIu9GZk084+M?= =?Windows-1252?Q?JBGymNntrQuGeXKzo44q3B8+Th4W8/s9YCiMHZTghzAMfuXT7NE+Kdag?= =?Windows-1252?Q?ayJ9idHIsJD+KrSOytJ0ZXgj99vuvwTInby43cED1ipDP8cC1TGfSCyH?= =?Windows-1252?Q?IGKFWqksHMPfhA2wlHqu+ntrF20UIAhGs7cK76F9iJ3VHflfvG9DwRRH?= =?Windows-1252?Q?/PM8wyQmyS1jlx5F5MAfF1jSoYvFsOB8ToF0+nU/0ddZ8mw2EXOduurK?= =?Windows-1252?Q?pC/urt5ysSatPRk4sTZC08q29Ii0XzVbFtt19Yy4iz5CWS+WUqFxpe4Z?= =?Windows-1252?Q?Ot0lSwwYNmhDN2rVF0IdfghavxgJYRPRSIyMeqyo3SAF2JeRA7zwsLJW?= =?Windows-1252?Q?mzp10IeWN7rRX0sy+yWTJph9508XsITJLzju9qtCo9jdq4Ay576N5l19?= =?Windows-1252?Q?iMfguQ4ySSZ/sm4g9n9rv5YZ1Tp99Xb75oLJCL8nv8eRG6MmV1MH3pfx?= =?Windows-1252?Q?B7MgohCNyFDVoLJSpGpdzWm7WDz9IYhkjiP/1G5d/TTjlnGu6yRpsDRp?= =?Windows-1252?Q?q/pJmlxndS6ICyAdkf7qhD+SrBlzDaxCkGe0tsAblg1npLwrjTy4b8gN?= =?Windows-1252?Q?5InhiUAg0B3F3HAws+Nb5VNMZ8HUUk46+lubBgD15V0FwAF3uhsYZJZM?= =?Windows-1252?Q?0H7oP0CkxYs5GhP1BV25OAggK9aWw9Iey1N2krKs2fL2LLjHO+itlq45?= =?Windows-1252?Q?bhPibj6vibKUlODdkvMuShmvN1Xdpp0PtgBIDU7SKGVg0V7v4OLNiKdv?= =?Windows-1252?Q?wvI+f3WJHO2YW80u6EDOW5g3sATqXF7fLdzKvmobrTgBWNURf0Fdu48n?= =?Windows-1252?Q?Z+zOcxWWoNMuL3xmSsgltsU5jHri6ZviG5HfX8c2kIk0BC5uuZYFfArK?= =?Windows-1252?Q?WznHVCbHIntEJvHbUB7XLef+Fx3d2jKX9RnwK8U4SfYlN4vIc9y6DYgA?= =?Windows-1252?Q?k8OKFM8p99J50YkxvNJcG98unUX2GXYc5RgaOO1GCG+ar78n7/UCuIXn?= =?Windows-1252?Q?GkO4h1HyDfAY67TuykZI7BVRTHpDgLgJGUJlaNvX7tfFUS0Y7T2fbEdI?= =?Windows-1252?Q?80eIm5fAzV8dPh3ER5hn57JxCd3hL1szqWqWwcMkF78/Wp0+suv5faKI?= =?Windows-1252?Q?CPgqC+5C79bE5B2w=3D?= X-Microsoft-Exchange-Diagnostics: 1;DB6PR0801MB1734;6:faulMGGdZ6CdfDIzgPutPwQTQCanxYB1MCFLN0CLbnBCfPVD5+1uHI80eib6Kp18Gy1JQSEYXXtIUv3hxkSP6Tf7yYSKkXohIKDmCEdnaU9oU4GH3W8r3Vxvax263Z5412YO7slD1s1XlXBcdwUXVdC7FhZT2815ktyuvD+VqlX+qdK4TnYpMui8F4/Z5EtiA8PH7S4hoJqjKvtz/IB3pAILe0SfG5ex4R//U4EWeUG0ygGEim4UugipAVgDBCRGos5nfwNPdAlbOYJjh25pvsuFCxZoYJhIOSQeHd5fXUxv96ouBjzigw5h/wZSjFVr3eaytyqbxMSdJWNbsvEnYO9vZHxqBt0wsygSEL5HgkRrFHVGmfF9f63PMaG7JACxqxEa1FEfsYon8SEg1jfD2A==;5:54o3YxI17khjldYdQEuDzxs94VZGgCC26C49vdy5YmLqbgns8AIALmubZN4CwQW8Gi3E2ijZcTVPI7+1X2vJVgmMj+p2l98+TPnuY0HN85m6+k8eXVjLNqTT3tZeimxBYQuVMiReCO1qM8CS6omJHg==;24:ZuXS/Q+RrxfZnfidjJmCyvkGoCS6VZOIPaQymSzLOKe7t3Ea98IAxuVlhdiauzy5pxU7CLJ6MYK8pBuCAZ//Aj/g+72Z6ny4XzIK9ZEEdbQ= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;DB6PR0801MB1734;7:o3oV4gF5oFHCuxVy5XL+jDcVWjAN+TgWvEdV0kML7Tx0NDpiFLxCqedif+jfIjEzLmKh5suBXx1YcqNUK2i/MJqZrBn/rp16iG9voYun4cMXrFy5R4X9o5O4SpvNyQ6F9frmRIBfmRQOEEl8OLB277DbvEG5yuVKWTZYpzolfjzG7bHePFBPfrMOsGjbg+5vb6lK2uUsttNQC19VbrNsUzjnnAD2t8eNpcQw32duBRQHeLjKhJ/kxS1/iZQeFYUZE/2e7BGMDFpb3I39xqzd8/58LmqcXWOyJodCyvv7Hqw5/YBmdQNXYYxd1CyZE9LmNsPbh5mAhrM/7laoMdv3Y6Wa9+eGgUB3AM/nhTqwJbWqLyPd1RPSs71NJ4tAjLHGudgzm8/aB/k9FOmLQSUj/JvJTeOg/o8bUxNSrnL001qENvC3u2pUhmqM+6Y/rg/dqz/2jRnlvMfX7X+BBjfts24nLBtqMUEiHMIxQjEkfJjCDa4gv6OUqTkKZgdiIC02W7+quhq5fARaZm9LuFvBUg==;20:EwfF0KRunugkyvh2Mu9hQzn/6rFv0QpykMmjg7y+8NezBm145lepnnr1rfOyc2gYnE+78uGmN85kWzKyh69bm1PqhuEyEsSOFWRc2gekl6Xu07z8cazVCqwtKfAoj1n2ZCjrXk9hzgdxHkkQc8ABJv6gkxdzYhlmvghjYzIN30Y= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Feb 2017 16:15:22.1669 (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 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. > 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