From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752858AbdA3MGB (ORCPT ); Mon, 30 Jan 2017 07:06:01 -0500 Received: from mail-eopbgr40112.outbound.protection.outlook.com ([40.107.4.112]:47211 "EHLO EUR03-DB5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753426AbdA3MFf (ORCPT ); Mon, 30 Jan 2017 07:05:35 -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: [PATCHv4 4/5] x86/mm: check in_compat_syscall() instead TIF_ADDR32 for mmap(MAP_32BIT) Date: Mon, 30 Jan 2017 15:04:31 +0300 Message-ID: <20170130120432.6716-5-dsafonov@virtuozzo.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20170130120432.6716-1-dsafonov@virtuozzo.com> References: <20170130120432.6716-1-dsafonov@virtuozzo.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: VI1P194CA0011.EURP194.PROD.OUTLOOK.COM (10.175.178.21) To HE1PR0801MB1740.eurprd08.prod.outlook.com (10.168.150.7) X-MS-Office365-Filtering-Correlation-Id: acb304e7-03d9-4d47-955b-08d4490834f7 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001);SRVR:HE1PR0801MB1740; X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1740;3:IDCNeFICYVIbvSC4G05Gt7lPnJJX8UV4BmXfnPInJ6kI6jCQTiX/ErT2hJwgs3YorOTJxorPapBIwX5mrUh3o1QoVIY/Sptu2h0DizKiBHH2UmYdbMjvYxMWUWDDgQNLeISn31t3ag5nZIkmVg1NhroMah4e2IDy4VS1vJyWO9hpst8p+Nc4h9jgnc+fy2Y8UkmUkDe4iPq6zTh6anJ58tK9vAAP7mmTPjENrS1q83BbN6zhfFnpGgcWHHaAhtkDF/eAeQbHjN7QzhKKjBlEPA==;25:dwEVP29J1BbW4FItMg5D6aesl9By1NWMuEyBL2ANH+E7CWmtgQSNdGPIAT2AnZ1LD3i4A2o69a1Wcs31zlpe6VyQTvW2BsGeZykbN8NggsVstM2NcscVG+818o5OIz2zV/UfvoWmkYUtiYVLcaEcUnlZ7xqHyRPhTJ5lTXA3KnLSTK/ubmQ7ehuTxLK3gVVJHWe0tF6uZIsd4/f2LOnvwXXCOcpOfCar+xH1p1mFDuti7rcTJAag8bpgMXtl+7/zZEVByXGBtR+DXNhVUJWU1+Yva1anO/6VVTAqw6RTc1Avc2p5w64arp0fUzmXQu2JerdB+6vZN4+KFfgXlhVrmloCYyI18twoQXWZZreqWcH0VTIfg5HXAUlXrXPA8DE6/6PhPoO3ltQKe9waPicYP0bq5oaZCBliqM9q/mENQP49klkvEaShFI30mSEjJuZdPs8ynbTg6k6+HluF8qsOwg== X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1740;31:wp8GETYus5q5EDQ1gXpLldMoQxgcW9KNuZpV1UGXiMWYLPtwLP2RpHIFh1fEx72TH/d2zr7D7arIepF70fLP77sb9cH1j7239DQT8BlX1bHGNvQFx87OLpv6UU1+bRh6VRwsCc84PqnMwu2yTEyTB0602I4Chv7OPHyuMgo+9VW4KoGyUFXXusGdIm1N3G0KKG7nAkHWOiJq8esN0uwvMkhMj1A2Tq2bG2jH+8eC6R45416mZ1RBrEPl3UB3rgMu;20:LIw2vbB8ZYMfbKKRuK56qtqu9zg0ooQRGWsT9RKYXJxwQ+7cRCUoIUi/gY5Iv7mQW+gp5DdVKU4cEEetXDK2KP7JlquceSSL+tYPaWML6tY5XPIu4+agokiNji2zFChTUBJrozgki/gpW6RDbnryE7MyJcTGLDRSO5b4OKz4cJzQmYp+9vDs/JpSZQEJRyre06VcHg2cmM/hOb3xnZE3ss8R/M3/WAMi7jYeDDlTZv+UJY5WTm3toJ+XZ0LlaC1E 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)(20161123564025)(20161123555025)(20161123562025)(20161123560025)(20161123558021)(6072148);SRVR:HE1PR0801MB1740;BCL:0;PCL:0;RULEID:;SRVR:HE1PR0801MB1740; X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1740;4:SqqqOlPqoUKWG0UYGWnGcWoXocJkoI+ADGBKPLpCQv/Nz3P8QtZ9cqIGBydd3buB4ia1a12nED2YXhSklVT2E2spVG9KzUfW5R2ptxlK5tu+9aeZRjUhn23Yn5p088uNHfxVefBclH4HOPNbN9aQC1TTraKCa2XuOo42emwnuukVTRsKfVqaO4qYs3Siaemq8H5aPyDMiNKTLU94TkIwThWHeGnTADFMu3fLP2u38XqVuvzcjPIf42bXQxe1B447B9kGaaVu+C+c1J5hW6E0tWiTHez9jylHx9oPY/ZKl6pP9D/gh0v0WfU9XmfHLbvDKj/MXqE4oeV3Mp2wHXDmOinwOZAL3ApiIrN+/xMgXlCWvU0WO2aNKNCT/FFn/97cSBx6lOnFPyuOjMNmIMV9OMHwx1nrNyIFlT0onV8+bD7LZs/wofjgCHturgYNYkccLZxHA1nYuxqlG94IVjCjql9IMoA01CtPR81ItVtO0bLwkIg3Xnu2+qFfjOTR7bIYC+2gzT/bFJ58nIE05Vfbna2GpzqU7zoHa7KtYFSX3amYrPZ7o7wDH+2h9jflpr7LI6o4XHaMS4TXt1oZLil8hJnwpd2Df5ITiL9fuebQqsI= X-Forefront-PRVS: 0203C93D51 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(979002)(6009001)(7916002)(39450400003)(199003)(189002)(7736002)(92566002)(189998001)(110136003)(53936002)(33646002)(4326007)(39060400001)(1076002)(53416004)(38730400001)(68736007)(97736004)(5003940100001)(6486002)(8676002)(305945005)(2906002)(6666003)(105586002)(50466002)(6506006)(6916009)(2950100002)(48376002)(106356001)(69596002)(86362001)(50986999)(47776003)(54906002)(6512007)(36756003)(76176999)(66066001)(2351001)(42186005)(81166006)(3846002)(6116002)(81156014)(25786008)(50226002)(101416001)(5660300001)(969003)(989001)(999001)(1009001)(1019001);DIR:OUT;SFP:1102;SCL:1;SRVR:HE1PR0801MB1740;H:dsafonov.sw.ru;FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;HE1PR0801MB1740;23:vIKd9cZXbDxPyPBagSp5KTjbLhv94B4DSGHb0bO?= =?us-ascii?Q?E97c1NmsDK6fPTJQU+2jld6MTNjF8nIBtXhc4SMt67uh2zTQRVRj9VNZQtjy?= =?us-ascii?Q?Xq2xpn2H1EUvdz87ai2tLr2rEudWDIeo7AtBN0kUc048HbtpWBIPfLZAIbeK?= =?us-ascii?Q?E1dJVSSYFIHAA6TfhK5K+1H7/2k9gCljNLzGyI+7Kfk6h0Lwtdxp6nvzNh7a?= =?us-ascii?Q?KOErhO18e2phn21FXkMnpjt1HmsJZPDJDy6nvQLlrvjXrFM3XnPO3FdbP4Q6?= =?us-ascii?Q?zG7Et0DNmf+eYSiM7F+fJlzj8XDZ3ecRM6T8D5fIk9JhC1UK3GsyePQkUPBo?= =?us-ascii?Q?5/xPnqftBBubZovV2kn+7cjHvOFj13zvf19AhHd3AVht9igwt5S2rOBFfXSe?= =?us-ascii?Q?a5XANaxStcbZNUJpG2DAeFDAbDDv38OyTvGzrW1bVwe8MKhj1KJCiN07xuRR?= =?us-ascii?Q?L1v7Zsd5F0eJ+p9noSvSfQru3skb580D06FZ5aka86LwXC5OgWPCMb4DPV7c?= =?us-ascii?Q?MhQX5YjujxSlHsSnuy15IHBUmtfE6KClTYupnR4JRmabQ7A5IRmTpS+3yQFh?= =?us-ascii?Q?bJ/5OhmmUH6KBzj0Ft4lQajSCDuk0tXSfxcZZai2XJBL9dbWJBnDaPH1NZ8M?= =?us-ascii?Q?D1ynZF+WM8beZw5qKE56BbUP3IRcGbDrraHFUEPJhqPqK6hoIIjKNofnFX/d?= =?us-ascii?Q?p+XtI6SJq1IK57vqCgeCIfoWnN+kK2NuPT61kEYHzrcR9APIaCFvbDMQGATa?= =?us-ascii?Q?IjmfbfCSdSJC/NYxKcycaze90Zt2Pwr+923bAdxV2lqzQomS4deL4rRv7PGf?= =?us-ascii?Q?jJEaAcqxRLcn3yBf9p/eVGgU1tu7iMOvjswOGlw06LP/BnCtXPkHRoVcc8Qp?= =?us-ascii?Q?R5cosudtfXmqUKefl5QcNFw2VWmZ23TqFzc5XyH56KI72951KWyfAfJvkURy?= =?us-ascii?Q?XgppwRMQoGW2zlvUktDUooAJsQUh8thQQ+Z4ITpjZO49MvBr0054R96tXv/+?= =?us-ascii?Q?4C83sdLNpvpBBdj5L8OSHMKTjhQoG/iUmcDAKmapwtff9wXgYATT8aJ78bFq?= =?us-ascii?Q?p1fFsilOMxBAwe928eZrYHb8xSRSVXLSxpK/UrF1j8obZD8jajwks/z/mjvm?= =?us-ascii?Q?n8ctlRYc/8Ycy32nRmbO8T+lPvGIMadRyRM4L9/lYQXjti3SHrrcBlB0siB5?= =?us-ascii?Q?JQ6em3Fzs+acJx87v/36+HkWBW1aV8s2DH0yo8XUSruzJYmDpN37KN74fi8K?= =?us-ascii?Q?jfJ4ZvOx5xDA3KMZ5EqLd5HbBGZRl0XdngbDBBE3eKXSyB2M/JklXzeUqP18?= =?us-ascii?Q?Pt4dMg88N8V9xlDsfhAE+uHQ=3D?= X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1740;6:OXNQEWRCR+9OtYxmo0I4yE7E46N1sofBU4NdaLXh/C3DFzfvl6agCTXGejuN5JYr0sqYa83QF1k/8TNVkzGKHO3vhAJBqoWLQTLRG7/++vG4opk8yOQlw5wtant8zw0F3KUhK+9vYWumSHclOGI8HxbcG5Ooa4yegxV0Qe34tFem05ItNYZzfWsLhnQvqPqHKtDaATYbn54y2A8tsFLqUoYrTsdleKlPrIHVCQ0BttQ8CJv4RuoiUAX5FB1F7gaRTHzqmenu+OtYohq6aFWJ8aUVcCq6DjXUpF3n0FtazreLMhvmT5JwDhgfbZeM86M4FhqeqozF2NPqQvlQFsC4a36xf4zubDLWFyScS7cXYCcofuukqxKAUnqc2QJt2VDv/B70I8vLign8dun95K4UE0Y6i8Cf4NlQ7QAt6fOm368=;5:Nx2vfoQPZ96nGiX8SRAAr9RhkpGt0SX9qrou30CasuI68DTQGjWYxEgXjeV4dSnEAMynJJxyBvTC9iwkGPoJGhvbYtAMYVMepl9TQIM/xkKCYJ44A6ovvNK+Xn4OuCYZdVjQwwedO1vBmGoxQazt8W/NuJKaP+Sz+T16c0b7pMA=;24:BMP2bo0UZPLYuwgBg1ZCCZ2wTEWAvkPmdolrqepCLZJ9wSmc8isYbIotDWBIE7/H30Ml0XtVnMV/tSJ3gY/yNLBrmCAbeaiuo25D/HIe4ro= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1740;7:1gntzfTG7px11vtPBHgNR6ES5lquavgWTD39ZDL/qCHUKSCz6a71Jt1dFK07q/GvnsClBlRS/zO4W0iCs1wdC7Z7gWKPTtpq22j1fUSX6QClVAAotMbrHpaW0RpqarC8EQXUozBTpW7TEeLHWQGvFbkp9QuhBK6jqm+1mmxgbGhS41voKCePot8499qrmlYl3UfKdAdEu/mMA1fVYX0i9YBD+qc09OCxojG82FaGYdG6mIcNWVGFhVMBSNl99C8nnvc9f2X62VlTUCWmAj4JzxHH7uXcXHs72KpQSopkIDOy9JKF8XJ15GsYm5np2RxauAJkSlMFhZcFIjAeD/5/bGuevBEEorxnWbbdBTeiUBflUXx4ar9aFKs47x1k5bFz9apQ8zMb6gLpYsOF33a9HImihaetd84L+NzFG3/u5zbCdUMDx2/dyYSLos49wQnutseadJcU12sroan2NC4XIg==;20:Kga0mYnaxw64bFqikQDNKzDJv6EbIowC6YZQgON9fg5XCsP1mK8gZNssVdBmktT3oubTbn4xdNDW0xPS5NwztBuuqUVLyI0BeVcwljbpiqATCkuu5s5rT/2WecBHNnCgGCNClaIrq81dHEXMI1qXatN2r+DCevLl2fw9/tS1rLc= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Jan 2017 12:04:55.1679 (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 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 90be0839441d..533e879e9cdf 100644 --- a/arch/x86/kernel/sys_x86_64.c +++ b/arch/x86/kernel/sys_x86_64.c @@ -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