From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751380AbdAPMgv (ORCPT ); Mon, 16 Jan 2017 07:36:51 -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 S1751074AbdAPMgk (ORCPT ); Mon, 16 Jan 2017 07:36:40 -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 1/5] x86/mm: split arch_mmap_rnd() on compat/native versions Date: Mon, 16 Jan 2017 15:33:06 +0300 Message-ID: <20170116123310.22697-2-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: 78b747a6-23b9-406f-f046-08d43e0c5008 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001);SRVR:AM5PR0801MB1731; X-Microsoft-Exchange-Diagnostics: 1;AM5PR0801MB1731;3:7AYxdABTUQxst1PFhqF7bOM/ybbyU7JuT3qz5x7Ds2NxBbJ0KQYbgLYqJQ9kaPBiXpQ1bDUXAgth6mF3Jfm1KGMV2uUVx91F6aBvJ6MsMuelrkWt5qMk9OGnpiwa4B8pjyNzV3tk3HnjxatAi21XQ7JmK1u+6sPGIhDpNXceBagibhixWtzEClrgEIZn+8wn83Ux/c8LaDGhq6lzqL6atu2Ns2ka/g0tpmATPhSSRDJXFUG9vgkF5r3hTtV31NG81nUcNm5PDtHygnPP3cZHmg==;25:r+mh84zfu9BpvLyXzcG+i8WcHPL0E72TapOBzJLzo156WBPJe8W0jhmRowMHXAqGsK48yixmaQeq1YM6DwQEC5mU/PjOGgOZqt/VhqH62+vFHtl6RN445YbDtl690fCkGyYxWKJNZFwtOWTUaZp6qfqVg4IyP5MmrMLQIadsmFf+miLvcNk/LN1x0WdfO9sHG+QkY6HOY9uT8H7avInGeNIEnQXrhYoCy93H1K+95q+Dew6USCyhXjGnycqevMjhA16zinnuEfSJUGkAUCpDg41zXW6dfVX1DuIHwW8dWdTlquFiE1X9a4VjqeAj+5AJe/Z8AWJvCK7S3Up9mcSEWAgqsR5VNzqkTMVf8+Xp+EZjsJuwVD9jADEAKxjPrkm2TUZfOrR3DOqf6+KA7I76uADKKQJPWAaz4dxzBEKNA7Cl84wOzAI4p/hhZ4EedGGB0UQTYgbW3+vRzfQggB30GA== X-Microsoft-Exchange-Diagnostics: 1;AM5PR0801MB1731;31:DgbWXD1FMBnpn2FXhY0YQ0F41xOwrCbC34WszIjvK9ea4w+VcxTAwgeTABsKQg85wsTJ6KNM6GQrWYTfwzLrXHboBtbBtuWs3uqi9qK5GD8fcc9MfScXf+QQYQ/MMooC3kJiVKOx55T2LYKarf72GeYJNqUHO5EzfrAqguPbw7N7/USqbJY2sdnZO/8L8w5TXJOkoSWx60uS8n+1VFpnbH5H4UgKTsf+Gl93xPq5YlsqbvR2Oy3ZZix/ai/lpNDW;20:JoeqDVz6cmxMP2TrRdrhXAhyqpHwk9PYKXkhOoqAsrkznOHv1CLuKvj3nQNZXsc+C1AiT3XGubEJQmRM4E1JKHG/myU0yymhdAKO98K3JgmpXWpAlULka1Q7PelcorL+hQGgBLxkDnofG8vaDYj0OVT8bOMRwK84SXUmEGfu05Ipq8y1S4f6RXKmLYTy0NTqQVtKdN3YezXnUWotASadGG98GNkaQfKwIaKgXL3LH3oZn9vzdE9KM1dE0z70+kWw 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:U6tEV5xIhcWIj2GyHwVvb18jupO/7K82WxMKtziCJZTXZfGN6s7PcLb7nGl5O5f2NmDumOJtgbiTOKe3zAKdUjaEEGUjosDKybEis2jDNmtfSJh/Ggr2asIpGBM7PrHDSe/S2C0rfFO6JLUJHRSX4uPctSfNMPRUlRSN8nys2QQ1JKe19+wovM8X2gtemE7I41GRrmiao67B097j/JKV4bOGaPuq4DpNv4GMhq8+mJW2HpM6IycX5KHBsygHKdc0R0TKlLXewEHPHVbRNuaQvZ0RIqEWjK9XEjhV97tIf5doYfuAAuGNxRQAnmw8xy2VuQ4nmGqlXOI4Z9M5Gt+BUueChn6EiPs2gZBqMycyhYbe3jaoSqS7t+r9Hz7wsSgh5Osciry3KcggHhlGTftHAdmGhrayh/m2Tx6iNjD4tKKagGo3pZJypxFwVg3tnSPXFkJ+cKqoUMkn1UfFhQEry3XhaYaEJGz8dEIcEJO+dzJbndnZahoyhmzbqBtapA1r65ZUcPulOPW1kc9euDH3ZyQUKgzoj6JZWm2IIA+y/oUtWeWWYegwY9beMumKHpU47At3G4QXwIQiethwgPl4+zBBo2oX4UBvX5Tc1lN08u4= 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:5Fe2lcyTnQlXJJA+yBc69r8SSHFo4kHu+1gX8VY?= =?us-ascii?Q?HKbDBzORE8y73AOsZn+m7IpK4w6NnqPKKtzffdvKoxWn+oUteOm2gXCG1uup?= =?us-ascii?Q?H5/Th8PVqdgPt8yuvRvG5FQmQdQAtUy7yOvi59wo6/b8qn+6CeM2SnbURqHI?= =?us-ascii?Q?1FfoJznInGuxmxfcBLFuKl6xf6CjepeRz6b7elKQeXg+aSsWrnsCPOouuPNI?= =?us-ascii?Q?492Vug7o0uIXwTRW0GhL7Zs81QdxfShU2fFTXHC62xwfoSV80EIGpn1xUpLs?= =?us-ascii?Q?XGWxLnFKRhiMdkb0N2UV+k7LMgDIooiHmvPiVEEGkBPTgIo7kJkxWvT1uYg/?= =?us-ascii?Q?vv6pwjIDTLOqO/V7W/EC5p8k405/jeZ9TUgalx5J3A8P1ycM+lz0bsBzwynD?= =?us-ascii?Q?PuE6xIRu/U6kMF1I7W2niNhKISn6mI8d40h7NzbzaLcv5U9MXLCgqBB6UNzy?= =?us-ascii?Q?TrS3XbJ4n08k7S6kHT40ph8YalVzm1UKU4U1y291T23BAm2aGuLACXgA8p/b?= =?us-ascii?Q?3/EAQqwZMPJC6YFqCfJb8RHbm1v/LpEgyviu1qlgpmYXivNrZqQWoLLLmZXq?= =?us-ascii?Q?Ma5qqKFg6WexiPVT+AxesLqU7e3LDV7iIIqRptgm3LJtnh2gjDQoPvtu6MmO?= =?us-ascii?Q?fZgC4Ae+ILS2UUs9raWGaGhcy7ySQbubvrrZZNJUN3lc/7xy/AiJgCE9VOJf?= =?us-ascii?Q?LRmmIKDdtCjaDLb1e5er1p6a8ynRCl1xL31NWmvp9n6/ereqGPZqngVbRx7A?= =?us-ascii?Q?crQB1qP6Dk/eErUtQW7w2ozUzkWb+zkbLYmSLRKMbc3s06x85gCp41+jZWtM?= =?us-ascii?Q?TfgMBvoglmmfu8Aw+pXfZIWeQdNX/5iGn5yrLWJNoR+MQlqe+CYIEKijLtRL?= =?us-ascii?Q?KK4M3JE/cz47Znb66p4flNoIrcr63Mh1sPJ47d2j151O111Sje4hRz+ZEg2o?= =?us-ascii?Q?qhaZNklsoZ8l4/ZgmtHvTJKqybkFoSlbSIZfae69t5QchrPmWTTtcyA4QRs5?= =?us-ascii?Q?ALNBFk7N72vIhx891mfKJOk63SIdI0ptvEoIxGFCY6mJAyNSm4E9BRsRieMG?= =?us-ascii?Q?AL/QbGEq/X1X3CJQwW3SXlPp8PltAZG/aNLhUEimtVmg5V9l3CtqI0rEADtD?= =?us-ascii?Q?Uv1PsOKApxqAdZsEdhFPj9Sl1OaN61oUPsj6WrAwgsrE3zB/IrAvrPoFE0Kc?= =?us-ascii?Q?zNAbgz0Hs4wqIcgFwTigRUgJeDwe094x4LxEmm8jnMzv+qnqY603dhn5EPFP?= =?us-ascii?Q?F/38ZcKsXQ//ofsxJSfsVlGbZz8vRFF2fnyyQ9cOZ?= X-Microsoft-Exchange-Diagnostics: 1;AM5PR0801MB1731;6:H4faSeW3MXMqS1xcaane7STRWd7/m63AdRRMcqirAzP1Q8CpDgl6GFcADVIrho3/fcxK3J3jo+DdRBpY+CrHMICkNruj/0eKL01VciyoBts0j3jL3aewV5JGgTH+BGPEeAsP/yNPjRkgeMViu4BBjD34PGC+peb3a2gQ/Tl/JlgT1E8At+7EIOSengJ2rZvR1qRW307XgKlXGxL5MhPq13M4Ctful5YOf7K8l/MmPLCMs4+ddHpM7JwgPjcPiK3v/qsfNw6maTYGm2AE40TwDU883FgFNyEoB5NJKIeX830jqN+vNrw7+27Ieac0+dFxR/4YIGhiH6/4xAyphj2p2GT4giZNsaCTBpXKdGp6pwRcSG/ztQwwDBFUcJaNvydSM8QguIGlgKfZ22bP1vzY4+zgSKwZIzDX3EOXSY5WJS4=;5:qM2Qp1jz6lZv1dlAA+E2tfahK3tW2fCt4hafV47AB0i0kQggGKQTlyDu4iGV6XJRUwrpyrvE54IVJC7TkMJrbmxwEfzAhSzKXA5RsEBL3EV/YQt34FJIDuqfGFVt2KN+uLu/fIv/gnrueJnCO7ECLQ==;24:ChtGQ3jXfYGiTgjRIoFMVmxl+Xdi0SF+uMpA3dFdHwGv2Q811HH33YN/LUQIfn8ku0PVmOpexE0pah0QL7pBm9PvvRehAECKGekY/5mphrU= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;AM5PR0801MB1731;7:FihULJo0/ujNc2nQ64d8n0CgCwRgUt82DNZL2fK0KG13VQaiiuQR3hSc8WcQSpojV3DEELnsW7qrr7Sk91Z2y+GSdBvfleBIBuAfxR/7WR3WBXuOWM4XRMc/cJyI2EDE30TnGiMrofek6aXMRe47GF/a+5Zxuh/OXIZnxwwx2dsoBaJ5AU3SU8QsbofcfcA6BhyIESIqcIdMHdz/lg4InQtqe/pwpGJ6IKf47PaX7alpXZ0GBFh7278+7sedRSNpGCH97YX10KIpjUashXBh4H1qQW6asuJSPJaJmgrnKRZktTqM2ga6sPAWr073ge5SMclniL7/Wj7Tsz91Nu5zfmNp8leOWxpDg+IWrzTePS0d/4wFIAqcPgeYBoq5i1BJyBf/iPX3MZDiCYIBDZIOKrds9BbfGIgSTjdWIo826R30qStkhyF2AEUbcPqD7WEcKW8Og3aXXCUIYd7jSeauFw==;20:vMK5YZJdSL+1uejc+cuVDKTAzNUv9wQk4uJO5eZYph2Fu5iJiq+D8Gauqq5BS0p0P8Ggzv5sNoqPHeeC4vWJWm9i2XSSkmsK2Y+jdITELtXe55XN3FdnB709bhOBbvdw9TCeeN/j3NIxLl7CLKkH2SbyjK9ugXFOMntkCWCRnCI= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Jan 2017 12:36:35.9857 (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 I need those arch_{native,compat}_rnd() to compute separately random factor for mmap() in compat syscalls for 64-bit binaries and vice-versa for native syscall in 32-bit compat binaries. They will be used in the following patches. Signed-off-by: Dmitry Safonov --- arch/x86/include/asm/elf.h | 5 +++++ arch/x86/mm/mmap.c | 25 ++++++++++++++++--------- 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/arch/x86/include/asm/elf.h b/arch/x86/include/asm/elf.h index e7f155c3045e..ee1a87782b2c 100644 --- a/arch/x86/include/asm/elf.h +++ b/arch/x86/include/asm/elf.h @@ -349,6 +349,11 @@ static inline int mmap_is_ia32(void) test_thread_flag(TIF_ADDR32)); } +#ifdef CONFIG_COMPAT +extern unsigned long arch_compat_rnd(void); +#endif +extern unsigned long arch_native_rnd(void); + /* Do not change the values. See get_align_mask() */ enum align_flags { ALIGN_VA_32 = BIT(0), diff --git a/arch/x86/mm/mmap.c b/arch/x86/mm/mmap.c index d2dc0438d654..0b2007b08194 100644 --- a/arch/x86/mm/mmap.c +++ b/arch/x86/mm/mmap.c @@ -65,20 +65,27 @@ static int mmap_is_legacy(void) return sysctl_legacy_va_layout; } -unsigned long arch_mmap_rnd(void) +#ifdef CONFIG_COMPAT +unsigned long arch_compat_rnd(void) { - unsigned long rnd; + return (get_random_long() & ((1UL << mmap_rnd_compat_bits) - 1)) + << PAGE_SHIFT; +} +#endif - if (mmap_is_ia32()) +unsigned long arch_native_rnd(void) +{ + return (get_random_long() & ((1UL << mmap_rnd_bits) - 1)) << PAGE_SHIFT; +} + +unsigned long arch_mmap_rnd(void) +{ #ifdef CONFIG_COMPAT - rnd = get_random_long() & ((1UL << mmap_rnd_compat_bits) - 1); -#else - rnd = get_random_long() & ((1UL << mmap_rnd_bits) - 1); + if (mmap_is_ia32()) + return arch_compat_rnd(); #endif - else - rnd = get_random_long() & ((1UL << mmap_rnd_bits) - 1); - return rnd << PAGE_SHIFT; + return arch_native_rnd(); } static unsigned long mmap_base(unsigned long rnd) -- 2.11.0