From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751447AbdAPMhF (ORCPT ); Mon, 16 Jan 2017 07:37:05 -0500 Received: from mail-he1eur01on0092.outbound.protection.outlook.com ([104.47.0.92]:45234 "EHLO EUR01-HE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751415AbdAPMg7 (ORCPT ); Mon, 16 Jan 2017 07:36:59 -0500 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=dsafonov@virtuozzo.com; From: Dmitry Safonov To: CC: <0x7f454c46@gmail.com>, Dmitry Safonov , Thomas Gleixner , Ingo Molnar , "H. Peter Anvin" , Andy Lutomirski , Borislav Petkov , , Subject: [PATCHv2 4/5] x86/mm: for MAP_32BIT check in_compat_syscall() instead TIF_ADDR32 Date: Mon, 16 Jan 2017 15:33:09 +0300 Message-ID: <20170116123310.22697-5-dsafonov@virtuozzo.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20170116123310.22697-1-dsafonov@virtuozzo.com> References: <20170116123310.22697-1-dsafonov@virtuozzo.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: VI1PR09CA0071.eurprd09.prod.outlook.com (10.174.49.143) To AM5PR0801MB1731.eurprd08.prod.outlook.com (10.169.247.9) X-MS-Office365-Filtering-Correlation-Id: 302f48d4-d2fb-48ab-ae5d-08d43e0c5380 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001);SRVR:AM5PR0801MB1731; X-Microsoft-Exchange-Diagnostics: 1;AM5PR0801MB1731;3:DS5BKYSwpLBceqVgIRi5lCG/028fKY56vk089PFxwJSfA2Rcjt5jLtyL0mh5BQImOXgSGUh+8VTiGhl5noUR0MDqFyHANIzsM8L2tcgqZe9UXXYE3aXt/WAKY2NW/MVvNwEAqLX2PHxsZcMD5cXMTWbhvNjHb56W1xrPn5wMZN9j75UN5tUIoZaRY/15uBiMpLvcqmMzdioOYLgsOSCxEEoHNz3tNlLc5HlZ44ENpZ2PEDuQU0pLFl0ulnSW7XQ61on962H5hfsopikYRu1QHw== X-Microsoft-Exchange-Diagnostics: 1;AM5PR0801MB1731;25:vQyVlmIV7d41uC3zshMada8ndbknAw0mNU0xz3u/8SsP4t47UppySkF14a2SHn5c4ikAovVG886sQ5S2ug5re91BTrFNw4Hrs+5mtA7Zyob0J+XGSdz6dRC0ONsOSbLpzXs7JEIMGZxvpCycc9WvxCQq3TnfakyJKbocNpcFwb6/s/wgdiut6xEg+fBWzOagTba1RikqWlKnjFuZ+shyIcf2KdzlVzclbUeb93BzLDv2Bll4HY4vNVfOEN6g7tWG7VHuBsj+mf4VgKhOUPRtIhIGKFLSI1oV91TsWg519MsRojDSJoB4ANenGBYgF1IVh7VxUEGOACud7h+I4drK+dT1TFP4/qaAsmtpSEj1mfHREPDwNDfcfhTUB7h8MqUWvJ2uaZHr+qn3n+QSTCXGb8KqHLXtuT04Vb+QAr4nsZX1XNZGKSNr5nSJAd2Djz56ut/WL6p80w1+pAaM6m3rHYL1EOa45KuXLBLlbDIZsBY7VaKjFwPFQZIHJXK4sM/lCowdWte29o4XTBZjwAvGuffspQxRDYrB3w33b4MJk7WWW0RFOp3enilDWbgXFIG4GiP75qGX9A1SemcLEfY1MelRoGr0zYYGs/WzQt3M2tPyUtw0HKJMk0OnSlBWag+j7dP3NZ4vkAtxapQcbxlixgDViN09/Hob9r8txkQC9wHWJz7wmFmacDE5Av7qJuahv04jx4knpEifg0pC+9JiJYSsSrDa6+efdLXhnLs6TLmWsq61AV/bvxaiXDJehmLu X-Microsoft-Exchange-Diagnostics: 1;AM5PR0801MB1731;31:IbWYpeG/P2pEGpV8uQ1CckYHf8VRjcsIbhr5Ouf09JyDMapjmEbrvcGJgQjjvT4Xz4h+hQ3OPhy5e9XGBpIfId4LP1Fl8uVgThsyBiKSJGVheEA58JB/HfAF7griLjEN3giwJxx3QtRNt13TdM2t3fuKvDKyPWizswsv2quhhNI8yT5PfjqOA8YFxp6DnFIsyc8rFg1s1o7xLK/0yAxFUAZ+vo8dNJNqStn15MXpJpPaJ9Vm4qbOk8dqPYLMFMUa;20:muX4OMwBA04/uH+bBl0/WQBPSXaouptWHooY9HbvuQOb1UshvM9TsdENeBqCLWmpEksfs/bWYyidbOVhFrSqjl7laghlZ+GQXn8kbML9PO0seJ03sQdP2pnrmUcWImHZdovXxlI6P1u3kyZ1L6f8Go0pTy3/jPDVAlmQmeoTSoI3K1qzaLQAfpb+MuYuVlRRJ3ytG3H9dzsG5BV/0rY6M4gJCWT4Skoxmby5AT5TWBlCjmsiXm0WkwFPIOrj1Hns 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)(3002001)(10201501046)(6041248)(20161123560025)(20161123558021)(20161123555025)(20161123562025)(20161123564025)(6072148);SRVR:AM5PR0801MB1731;BCL:0;PCL:0;RULEID:;SRVR:AM5PR0801MB1731; X-Microsoft-Exchange-Diagnostics: 1;AM5PR0801MB1731;4:YHy1Ml6BqmfVPFGJN8J9IdH9LdVXwGm0+PzLgVD+n3TQ8gm8spuWhxLRaxV+DNltBt0QKGsD2te5EAmY5CFEXg27iDiMjYGGoIjWEGZllCFri4JpHWXLt38AkUI4q9A2kdk3LbpBnJUSLPJ30IwD9io1qw+9Flqn1r3DJglY1Osp8Zmpe8kq6qVCxX1wCdSsR7ntWD6uM6KC/Mx1dJ89lpi95PDeo+a2P0RlCauMbQoDnMMSBHGtE9WZTxqu1cSBkL8K0xrHqupQaXSZVnMdBOOyiE3wGPHHkfyJVCQbmhvRFDUzyjFuwCsSV3XRKtz7XKwwh32JmsKQieWSQU1BnAe0fls7ITxj2+ETRGsMndXD6Sx7aSDH9OPQgPfHh7SC5ZN+fjtH9zaJ64oErjrR867xbkrNsLCnoLnjAX+om73UgzU39XWsKG9ji23cBV1N5AH3X++gKvcvSrC5mGc651/t7df5+visshWhEZYStas9k4AVntoe5/U5F4zdKANX3CTpaZTljbpBfDcU/CDcjBp0K/AxpVyLAC8eAy9b8W7QZxfk+1D4Wnf3222Xq+iK+CNhi0GUeXuGaOPmtngIZ1z8IWCrRtgaesx7gH0yxp4= X-Forefront-PRVS: 01894AD3B8 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6009001)(7916002)(39830400002)(39450400003)(39410400002)(189002)(199003)(50986999)(76176999)(47776003)(50226002)(66066001)(48376002)(5660300001)(50466002)(92566002)(5003940100001)(189998001)(101416001)(68736007)(97736004)(6506006)(105586002)(6666003)(27001)(2906002)(106356001)(6486002)(8676002)(6916009)(53416004)(2950100002)(4326007)(6512007)(54906002)(7736002)(42186005)(33646002)(69596002)(25786008)(36756003)(86362001)(6116002)(3846002)(2351001)(305945005)(38730400001)(81156014)(110136003)(1076002)(39060400001)(81166006);DIR:OUT;SFP:1102;SCL:1;SRVR:AM5PR0801MB1731;H:dsafonov.sw.ru;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;AM5PR0801MB1731;23:G2ycP4evhT5FExoeSnzL+iXMosnY+o9+NVEh4GU?= =?us-ascii?Q?JjWE2BeMfmHzLDcDLn1NVaCS8ltbWp//MvX+vqhtJTeM+UbGDuBqSMWWs5/7?= =?us-ascii?Q?VGnP7VL2Si9KfSGiFkaLoie2EmGPD3HiFzgrNHCFvaf+u/vCrEENG2cdx39I?= =?us-ascii?Q?sI00h2ekh48+WIeglMAIXAvaFQtglMfwSKpPhj81NYXbDNayORG9FOQFTGDK?= =?us-ascii?Q?pb8w7mbbu+SEYrjxIu5yj9rVbY8EgVXIIHoIwb1v0yWXfQYNY8W5E5FQP6NV?= =?us-ascii?Q?/cLn2fKrmyewISF+PzewlSuAWRqeeFeN3al5WpADUcBKRymH1YEGDOL6LUlQ?= =?us-ascii?Q?eNGb5D1/p5iXhdpVxXC4bo3O8moqkkyxapUQMhxNv1jPxAPrWO9tTZC59PNr?= =?us-ascii?Q?HNguPcv9QgJh7JRIzfDbKRoRQft+EekaAFc2/5peYyzuzIL0amr5IuqbIsll?= =?us-ascii?Q?Cdx/QRBiZgwVMHpWo9BFtq2+k5eKzPZa5hizPZ+8F813sOxw+Cz75R8FWRkQ?= =?us-ascii?Q?xb+bEHKH8cp++BHtqklow6xyaKJqAq3xGvuLTROTBr51n+LjDIgrCtm2XuCs?= =?us-ascii?Q?oPe4S/+3wsZiZAhXcN6T8VoZFh1WJUcEUVOo+tzDgizTlX0gSfKokxjYbtc5?= =?us-ascii?Q?BI0YO8jCU+/04xBc/UFrynofmjnomHhXrU45kYTQOCa9SbFiuVqcFMjd9upB?= =?us-ascii?Q?jCaVMDWD+VjxCXaD7P49GgKwrsuwbcwyX7Rvalu+/J7STKVWjTdIxE4TNesa?= =?us-ascii?Q?PtmOBCbdFnH9PliIX5WcfGJkClAiJgqEhT36a3M3kN9DpbtM1/qT2XbDpbyp?= =?us-ascii?Q?w7wrPOL3E7p5QfEvUAmDRfGq/sesbWRglQlFv/fp0CZynFGCWaH4Jwa+a9wM?= =?us-ascii?Q?gByS1HdGXV8vYiD80MAWT0hX3wvG6MaHUB+PVBtJ5/uj40RyByEO+jAaYK66?= =?us-ascii?Q?r6ytvB5x7bNn+G8ODCTMCmm1z/r2CM9Aaxj6v/1nNd/beTZNm/3KZnE2M928?= =?us-ascii?Q?9mO5bn2yHMQoS6RwEZUxjWvRGQRig/f4hRFFAALlID3f7b0TujLUfvQ/6eE7?= =?us-ascii?Q?slUp2bRhRxtYHYPXkR4KbL93xY/K7IqxK3PBkMtTOnCqOXjSN6x6Pu0boA3d?= =?us-ascii?Q?VkKOrBGbmoLzf9r1mOnCZKE7JcWtNcy3idagTWQDmjTQ3gDGmkbowenc6atz?= =?us-ascii?Q?pFQYnfdvEq22JPcckgbWuLYHgLmJ9uLNI0cTSENXzi4ChCEEMDgn6wJcgMnj?= =?us-ascii?Q?QT/uRUgpVyZ/jUKqfPcBKobWhJNvox+/DkBvutDzR?= X-Microsoft-Exchange-Diagnostics: 1;AM5PR0801MB1731;6:f4t2sJ1Yli5HVPJRX6TvHROccFBpGLY9nAQLxOBz67SGiGLWk7q1JFpqZHNEarXaMhlQxUU2QTGWtI1gjMfbX8IoiCjL4TS6PjtS07xw7IMRsJZ92yHsriZ9KYQptxFc9hoGMTVdZ7/hmqsgKE00CbOPqNyVRGVdChN8UdPEMmADaAMv015oQQ3BBtsWHjCkYX4B/nT4JNmYNUEJedJz6bZJ2veOq8xxbetcj3JjBNZZccWIoIMhXaZKmndUCnsKDt9wvM/xaHJj/0n2Wd6GGYyrYA7a6SLuzu7Hg9Qb6ZEFIDQCoxJYugBz5WEd1BrBr4HOWxtBJu+YPe/QKfw5LagC2l8OtTMEUcNRZsesxUSg+Kd+1Bkf1zUcZ3Nd3lsueFf9xDcrM8bo9TkpI3HcI9uOFQcE+ZCZM8zlmPsG1Mo=;5:Qp8TAWlAWq2fxEc0dnJ+05VQEukHC/vPmIoWzRughIYIxLKe4tFzDaOcyRCCWzKw2DJkiSfpCLne9y9CzkZZbTshCRggDdZfPBu83kb+4Dppui3q/QMqZqSxQZUQIL3qePMxF+zH2Zb7Gf2ClSMMsw==;24:IQ/ttp3zZMHEpE4hNCtfMVGej/McBZfLZftNF64qK5xJlfPQIZvmjimnDsJIhYXR6GluqhEQbiY1FuylYj6FWXbN78YEMf4cem3RS0dE3Zs= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;AM5PR0801MB1731;7:m7qgYnGKe/pWWLQs19qcXtq2T6IIPdcswukUFcnCJEP0zQG8KphlyK4IvvArfXLKWZDionDpgDffNcXts7IlSnGS65Vc6sgRYdsJQC1MsejMgTNIzkdtVCC9w3tmFQXyzXlaVxo0U3hIbAet84QqTCeEvyIqWsbGMNwBJDbStuVhutr4KwQiXB7id8QZc18FTNc9c6Uf1Pqc7WsAbhzc8zcG2wcELXtSOx9iAqKEplI0WkVuRSrU9uiQI8ql1bKt27JJfHikVd88SXBnqp7HANRj4xoSDhjPJHmNUg1DWqA0ZgA/yQlrxUyHUKw5tEAFdip7xDwBBhEyIMB2JSZkwTFtntkW4JNXh2csbJHPbBpRDB7gfXEoFs9NP5InsZegCgEJeAk7suG3iayGkO+5U8M9i1MGaXIrCnNc2M3KIsavsm8bcESFMsUaQgGgJwQePpJq3Vp1yi1tO2REayRSiA==;20:vSdqWmDjRby7R4IbCJo9bIRLh3547qsVtepXkPAPjWfK21Yrn9QWwsSAPrgp5ETdkoNS77ejQGmT90/4iTRvMlUt1//2QNRnJ0ataQ6XMlkl39yFGPkz+yBSEq5g57/9QJ158nZo8S5AGXbpf8m2/AM/2uYHzEgBrPvRh144aqI= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Jan 2017 12:36:41.8026 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR0801MB1731 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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. Signed-off-by: Dmitry Safonov --- arch/x86/kernel/sys_x86_64.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/x86/kernel/sys_x86_64.c b/arch/x86/kernel/sys_x86_64.c index 1bf90cd1400c..e7d4bbbe6175 100644 --- a/arch/x86/kernel/sys_x86_64.c +++ b/arch/x86/kernel/sys_x86_64.c @@ -100,7 +100,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 @@ -213,7 +213,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