From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751324AbdAPMgl (ORCPT ); Mon, 16 Jan 2017 07:36:41 -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 S1750982AbdAPMgi (ORCPT ); Mon, 16 Jan 2017 07:36:38 -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 , , , Shuah Khan , Subject: [PATCHv2 0/5] Fix compatible mmap() return pointer over 4Gb Date: Mon, 16 Jan 2017 15:33:05 +0300 Message-ID: <20170116123310.22697-1-dsafonov@virtuozzo.com> X-Mailer: git-send-email 2.11.0 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: 6954d373-b5cc-4097-27d5-08d43e0c4edd X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001);SRVR:AM5PR0801MB1731; X-Microsoft-Exchange-Diagnostics: 1;AM5PR0801MB1731;3:2qPKpOLbHKLLa4fLQgcEcbFtzxW3cY/JU6y9fyM6oPXbd0Ue2CCGVLjZXbh6HU4JcaHjeZdP5pEwRmqjx+x8LY13myc0z20SrzIOic2frxY10ZR707VfxVKYa2G+w/yQ0wJUW/ANuweyJRsIFRShl16PSr4MDZ0+1VdkHgm+JRBJS5jYtv4OgSyxHTkujozTjPn9Y7ZEQfjAC4KJLmsy8xiZ8IfjNXGwNjMT38ZYm2T9v/pxOboPmZHJhpp9F6xGyNgBcAQQLnyU4d2E47zezA==;25:zXxhhtt2vOHm/OVfdgYopRKsAXPEBhy9ThBI4Z3Zs3AXqpdKxQ8lcVqhAGuIAyGlCpDkHCzEOfbhRU9XP2HHOyC17yLwhUlfZFURkiVW/AjqF79BSiLzWF4N5ux+JeoMv2jJTrd0Ake1tmvew1xO9+Nd3PWKyxDAGpq2mn7R0kuwnW+hM357645ECXWQtavN7l2p+dd/HPZYv0VOfHU8Hygn63+Ct0rBp+6kKA9zGGneij6p8/m40qtDo03Q9PIRRfR8tPnDq1dtmDAVTcmG+qSOK5uMcYRRZeLdOBQYv3CQzlCUUvIpuhycuhJsQ67bma3ZeOBH1jTqT2zyDdbFNfoXbb3ZXfPqBeIzevdi4m2pGNBukfYHMNeyic6h7HOx6I4cCSbxmuwpKLr80lO4agIFf5w0RhdXDGW/iZSE3SB/49UcB0dlNL5+hFsPg4U/rJhsLViWlNhEPlISZdEuTg== X-Microsoft-Exchange-Diagnostics: 1;AM5PR0801MB1731;31:crYocognM5f1oK9WvFO5LkGaeMKD9xN4wAQ4GGHkJfPvZLu/ZYs0nnsfQ1fuTcT2HjCMvTobFcCdvvqPt4Ctqq0LheC5BXdW37Fq8675rnTk9SSF550UN/rdaHDJ3QPLLDGyXZEntfgjwrUIcooaULYvLvSjA7oyI1sKr8W/xmUloSu0ANYarxoJ4wSk8EWYsSAu9s5br8hgcFvrgkezV+l04a6LGVk9YJFFivU3Y3oAjM1OwM9dZezZicEeEdeV;20:scLyP5iU8T9R30KYqqEhh5QyOaLI/gIOjgoKkmjoaxw8FCL1+skOf4jjZMZEyWwUsyi4hr7/kUSIfuvBQT23jTdxQMP5MA3ZhWjPIpX8D+8a3oOqcqlKMAbyqTLdI8b8Ov4T1wMK2vnM95ExZavsD074/NdmxXB7XCjlk6oAY6x1mxsfUkiHiVxLAYUsaQu2QwJGFK5E7Y8IcN/0DEnCMBIL10b2ZGq8Lz3zHIlNtkLIY20CHm+YGIMSwdNrNxqE 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:QRrTDlAEE2xHe+ywyyR47Yimp9ZjhYDwHBucf7qDCCJH0QMauIDI6Bn2Rq6KTktrs2fBTEQ3K7gjqB3YoUSo1IhpdAN3kH/DZYFl4amv0exfSt7uSVcuqM0SzCcUTBqaz2jn9EKCJmBErAdMSZXL+cbO4Wm/RZs5Ond3ZAUUOljHzleloO2BBgJoTL+dXRzimOu/zs31mu32taud+fdyum0mZk6USdLZ5HIclq3H7ZW33lXL3dDN99D/SkfQ/msVVI5wXWA4trZMrsyM3J5+EfjG3U1sZBrS47KZdyGdfh2rpR7FFx3+IVf6B8rQ7pqlzIEjT21cqjITnxWGd0oxPRdc7TpAQn6UKEFey3RCLRs8i6AMguF4Aalkzee+3+WcpmpQ9a+Hsw+25YrmpG316R7neDlKpOMDxPGolxO3PRcbSNW4cejV0WffPe2ztnfPUZFyMXNfpFWrhLZGn3VBr8FutPcZyhq2ZEDvHGzLanFc11NI+dG7XzJCLWwffLFbjUyJdSifKVXoNTXESkQhkomu6pEUk/r3nCyQRAt01yn5ZuJzu7vdr8i5nuaS9fDRQ3xMYzUBu+kMN8LCOjV0FM5Ou3TVOgpHsB8Jw1X7d7c= X-Forefront-PRVS: 01894AD3B8 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6009001)(7916002)(39830400002)(39450400003)(39410400002)(189002)(199003)(50986999)(47776003)(50226002)(66066001)(48376002)(5660300001)(50466002)(92566002)(5003940100001)(189998001)(101416001)(68736007)(97736004)(6506006)(105586002)(6666003)(27001)(2906002)(7416002)(106356001)(6486002)(8676002)(6916009)(53416004)(4326007)(6512007)(54906002)(7736002)(42186005)(33646002)(69596002)(25786008)(6306002)(36756003)(86362001)(6116002)(3846002)(2351001)(305945005)(38730400001)(81156014)(110136003)(1076002)(39060400001)(81166006)(6606295002);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:keqlbaAzSgtgLEBuxtbP1syCffEOkSJz5KtIOFr?= =?us-ascii?Q?D/LCIa9js6aRN78jXpmJJaB+QoXq8CTglDa0WkNDi+q1/lVxjLkSLsiQSk8K?= =?us-ascii?Q?2o3e1oDdvR24SU6htyl/9J6rLkwiVOhNP3pibH1iOcH3ocGoublIc+sLX3yc?= =?us-ascii?Q?T8r+acUhRjWkaBz47W3RBozwzKEs90P4YZrModT1WXqDyLzLYYTBZGyzmZkk?= =?us-ascii?Q?iy6HB0q86n1fqleWkHMZOkXOjrQTP6wSxb2yzZu5Unkbh90dYPmIb3Mb1Hbj?= =?us-ascii?Q?gtpmxy4dMWIc5Z7o6J5lXzfbnU0397HxPQ/Ad/rJWZTMD6+mQbYXNP4sfyf+?= =?us-ascii?Q?9Ycx/TMSzUsEakf+Xt/sJe/iXf8GkryKn71e1UnoUOOInTXYnPCg/w7rzFaf?= =?us-ascii?Q?dyQ4COcDBnPQOIoJlIRrPZ3dfN1s/dBd6+lEWvJF/R/4llxSq0lnoluAq4V/?= =?us-ascii?Q?dwfhREkbvxHPCnP1ggGHDVUfxZF3fmo00gxKXTW43AZTVVo2OccVsFRS28R6?= =?us-ascii?Q?pT1gaXw6IO5ENmarnW02CqXRXZA3S+zfLJESz1VYjPeBGVlbao/DZRuX6LD9?= =?us-ascii?Q?1LUmDe72bYp69vx8/kULjiEU9VC6B25Fm+WHEM4XZtlFqZaxuibfbuiJ8Gg1?= =?us-ascii?Q?jZ1OgKduUL4eNxlVqsBcvCb8X3kWnv2v3bIIGAiSBtg+Pps2Hok5+/ZpQpO+?= =?us-ascii?Q?vN/OS/oMklV1wZYpL4F1GQrkWFEAUPPLRruPMB3uZVoZW8BQJ1i1k0PgIeen?= =?us-ascii?Q?ngRnB4EmmHZvExqbiLifqGw8pXP0Lq/Vt9LZ9/cEbeQjRwTb9FNJ4uWaNWBr?= =?us-ascii?Q?oCnFUK347FYD2GuUjT8Mx/RpBDkAywiuvzgCzuu2CUeYn/JC90lFiO5ZEF2t?= =?us-ascii?Q?voGAV3gMIVLvKMBYlSnlQdjSM1GG2/8+C7rBRN2qRT14N7K3MHCqITAIg1RM?= =?us-ascii?Q?yBfZPQ0q5PzbSMOKRxHdJYJhGRVsO+cL+pdjTEDdtpzbUylR8M/J0A3ljRyu?= =?us-ascii?Q?e/KxAhQXCzD+aHuKVA8ddozb5MqMFiZOrzK1jEJxM8AErAUucDUCh/8WsYQR?= =?us-ascii?Q?dMdFSvJgvTx9D6rvZul/rLtvHzo50Ez3ga+DeQ0UFDxjeofBSMczttpeQ67Q?= =?us-ascii?Q?WhARDYMyajWcQFcYeW+cwT9Q0lUfnPWoIFmU2kxU3cP3vOJotp1b5aRKVxv1?= =?us-ascii?Q?iwg2anHTys73tWwOo5YwDxMLUuFojyTFvDQc2BDmjJj0nAyicJ+o0IHL3Pf3?= =?us-ascii?Q?ueaF05p2gS9xaA8AKndd852eT+feFH2SxvhybQ/+v1QRzwx7nnmQoIat89kB?= =?us-ascii?Q?eLA=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1;AM5PR0801MB1731;6:t6xBiqbib3JZ7p7KpSmsM3/+VKfSCHXxicSIRQktZEIKVYJhQeIokuSogiijOEuQ1L+owRn5+sHCsQylGuC2bXGHRRoWkH3bQgDDEaZhwvG0q5Xlh07NStgKnqz1q2li+dKmZLd78LqFdCGRAhBuo5QqMHvxgdJIblwCIm4UdIIVHCSvBTcUxZMydglKGxMfWq17aCujIbCfge2hvoTdjKRKVZjmQhz6Gyzc/n1HSvjDaH9k6LBXoSwUpgdImQK7zWUTD6ymxmSEt113bazjp+OgGunOrFmy52TOQGMFaGlEffBEWIwSzxjpzl0ElQ+mBXqZZLvRuGn/fewXS8mhsHAuXAx6TMRpkFatTDgRdnp1iAviEGepCt+2Uq0rnjJUPvOygLGouQOtY6O+6llD2nAUoW8qd7OXp/16xCfVYnc=;5:oMDn0iX8hNKPsajVgaK+iWDVIJwFzlwtY1H09fKrrIq9YkSP2fuiKAxPsx51t7HxvINJAKP9UeGDHFTYz6uq5wrJnecpJP37hWZ7zK8d/aoamd8V90v6k1hHiF8Fr+RINPBk03F8H1Wy9C0i+bEUzg==;24:PFdDWLiiKGTAEfeO3xQow/1APLLi7QDF/qNRH4UcdHGH8P+eJX9s9yEW/nNVOCMOJ+cTup3yEiWWyfkUU7V9urotwiP7BUfqr/j3hunUTEU= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;AM5PR0801MB1731;7:qEPx/CNSJt6B9pYYl6NzFq13aWICJuXOjl5oyYLnJMxA+m6AsgI/PLKe5KL16Vzg0DTzmcvsCiqs2i4NtN4n8Yb8KqXi8mwyg3XZsr+RIKg2tVFCtGzUFLYXDMS0jzk2lXM7ORdU1ir5tZ27wN3CNTqv6X6fdzO9RRWjET6jSMGjuluqqVh7ZcW35c9qR1WvEsT7M/3atw0UXs9olxqnOlLxPe9qIs0pzIFVITnEplktOJ6/BB1FoEqPO7+x6NrWHJ6v9kGZVqVvMIzY2pPv6Q35k1pagVujVhFVA3G7LVl7VoiBl3MOskMhOCaUXkFzquH8UJUDLZ/2pi9Ez8/OFr3uQKr5MxtOXcjgMyGQroKrceO5oczKUMhygmeIBbPp2oSfvmJB9xyLX5eWzDrFh3X2lAcBv/hU0zSxMGCcsJxhF8wSnZ73/0Bp9HbWujovMjOCPqH/+CYpo7I8onQ6yQ==;20:IWWv1VzrMYYiSRx5e/8t7+jkBJ1QgMwa0kojvSxs+EscX2UqlJ4y2140u/lB3XT5G51JkTKRIo7j71UHMH3lmiCEpfvz0OfDZqkP6gsi3EfyUg8tjCZ/jPW7KIV62wxjuBdEvrnYL6FmbiMZvMo65dkyrXOJ/ikgV52yUyHTe3A= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Jan 2017 12:36:33.8629 (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 Changes since v1: - Recalculate mmap_base instead of using max possible virtual address for compat/native syscall. That will make policy for allocation the same in 32-bit binaries and in 32-bit syscalls in 64-bit binaries. I need this because sys_mmap() in restored 32-bit process shouldn't hit the stack area. - Fixed mmap() with MAP_32BIT flag in the same usecases - used in_compat_syscall() helper rather TS_COMPAT check (Andy noticed) - introduced find_top() helper as suggested by Andy to simplify code - fixed test error-handeling: it checked the result of sys_mmap() with MMAP_FAILED, which is not correct, as it calls raw syscall - now checks return value to be aligned to PAGE_SIZE. Description from v1 [2]: A fix for bug in mmap() that I referenced in [1]. Also selftest for it. I would like to mark the fix as for stable v4.9 kernel if it'll be accepted, as I try to support compatible 32-bit C/R after v4.9 and working compatible mmap() is really wanted there. [1]: https://marc.info/?l=linux-kernel&m=148311451525315 [2]: https://marc.info/?l=linux-kernel&m=148415888707662 Cc: Thomas Gleixner Cc: Ingo Molnar Cc: "H. Peter Anvin" Cc: Andy Lutomirski Cc: Borislav Petkov Cc: x86@kernel.org Cc: linux-mm@kvack.org Dmitry Safonov (5): x86/mm: split arch_mmap_rnd() on compat/native versions x86/mm: introduce mmap_{,legacy}_base x86/mm: fix native mmap() in compat bins and vice-versa x86/mm: for MAP_32BIT check in_compat_syscall() instead TIF_ADDR32 selftests/x86: add test to check compat mmap() return addr arch/x86/include/asm/elf.h | 14 +- arch/x86/include/asm/processor.h | 2 +- arch/x86/kernel/sys_x86_64.c | 48 +++++- arch/x86/mm/hugetlbpage.c | 2 +- arch/x86/mm/mmap.c | 56 ++++--- tools/testing/selftests/x86/Makefile | 2 +- tools/testing/selftests/x86/test_compat_mmap.c | 208 +++++++++++++++++++++++++ 7 files changed, 301 insertions(+), 31 deletions(-) create mode 100644 tools/testing/selftests/x86/test_compat_mmap.c -- 2.11.0