From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751440AbdA0VBF (ORCPT ); Fri, 27 Jan 2017 16:01:05 -0500 Received: from mail-he1eur01on0102.outbound.protection.outlook.com ([104.47.0.102]:22122 "EHLO EUR01-HE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751292AbdA0VAo (ORCPT ); Fri, 27 Jan 2017 16:00:44 -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: [PATCHv3 0/5] Fix compatible mmap() return pointer over 4Gb Date: Sat, 28 Jan 2017 00:00:24 +0300 Message-ID: <20170127210029.31566-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: VI1PR07CA0097.eurprd07.prod.outlook.com (10.165.229.151) To DB6PR0801MB1735.eurprd08.prod.outlook.com (10.169.226.150) X-MS-Office365-Filtering-Correlation-Id: 6d2e9c0b-8d28-48b0-2165-08d446f78d03 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001);SRVR:DB6PR0801MB1735; X-Microsoft-Exchange-Diagnostics: 1;DB6PR0801MB1735;3:ZaaF2IWAXLdc7dk29nroW5yj/VfUN97ZTWHqHv4uS9bMakBwLBhzkhqk+FSLCtUbFAXUu+LcPe6chNg6LYl/jXX+KofHcLVYuyERlVJlevP7bVhn43thTMfzdaUz41Pgsjf0gtzi7uMcQPt4i89jLDE/25vG696uq+d8gv2tkdL/y4O7JtyHzz+ssKBJ8qiD+kJyJOb5cAJYiA5rObvGKgVyoSsyOszVHlZjsN1eKYcdrML3E0t4WCm+kTl2BleRnPEL4HRzpJxBDNUY3j4Sww==;25:D9xXaf8tyRuIBRBFufyz+ovIcHUVEabNI4Q+5V0+RJ7yb3bdzA1BAHfScAtg9XQOSBp9MHwcdE6+pfSfuA37I4HoaztdFFuhMeNbTSDeVSdB9d198HMHH1WMjwskIwMXnZufm660oTlFJe13vhwftT3nPEnPiUbqgeRPuRAE9ZgPd3Et8ewj1+AeGYPx+0oPNz8Z13aCjbmIeAa72DD1X9ePmLZLzRnQ5BMlvVGFJrYqd6BK+dfnBJf/irVLO7N9GF3OPKaLdiPUJnCxOjNALE/IlN6UxpTJelXyPfl/wXGRfHfjviMpA60M5WcZ+PS7tJCiZtulg49bPDOwDVUHim5DIhl2pbgDSb4NXPQJ8FLUzZzOjjgU299BXFHZ1aXvMZuE+OY893o3vHJo257BLPvHPPW/MWq9VJE0WPp5GuWWvnL5MtiDAdRAfCtQSPXcil+8WhMnXTvLJE9R6c4Y/Q== X-Microsoft-Exchange-Diagnostics: 1;DB6PR0801MB1735;31:uwAJ6q48HSmcjmh6jlqsxl+BK4r57fYU1aQniKn7ifM0tl9k+erZRKO4mbGnZg8XUW7lNmS4KeUwu2hgpyyiXedpHqERVBRvdap5GytTGTy+tvgMncdQZnmW9o7zS1oLZ13fJraWIGG/tSQ0BGgqGgqYSeFATso55NyZni869epSOf0vjPHsuCtnuIZl8ACIxBzwzPoVAHtXXbg8SMejVpriLnRN3i138Wfzq/FSuoKfc2koPEP/2N6DLBLFzW/D;20:9KOgiKINvdwujIO0MvBFGirdS/qNZmSh7MYC5eRTjpURws5a+3IYV+qR6qwN3rJmHjruRJJaku86dbEbDf/bAkeNwh2qrvesq+nMBa0qBwkGT/rGpntLfqxzsK+gzi57lVk5Q6dm7my5EEcmOnGqKWQ9kjaBO/OI+oQAoMuit3lFNW0V3dR+QakCuH1TChQbgqyCeuHn03GALQfsnxkUJpu6pVOns5jsIqpNoyaRUswv2N8Ph/wDFaZMaIPge9NL 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)(20161123562025)(20161123555025)(20161123560025)(20161123564025)(6072148);SRVR:DB6PR0801MB1735;BCL:0;PCL:0;RULEID:;SRVR:DB6PR0801MB1735; X-Microsoft-Exchange-Diagnostics: 1;DB6PR0801MB1735;4:Lh1rAA+Ly7DXPM/gu7jbffUVNCggyWZa6ksmleK15xP5InmwL1gvTC0pbnCYJUDUX6eUfyT/wTnhDRW2JrTgj6gcDg/tYLNbHShqxK9zOac5O/vYLJXxhwGfIN7lCwjY2DYiCAQrLKjmDC5uW7Teg9jA8lrC3vylVnJASW9AxsRWMsZIYzp/VBa0+dP2BFRkwktmoYJHVdtGrh5PKJxSvmY6/frm+3lqacR5Abuh/xtPl8dyZNBLSbXAPnsF8FAcnr00nvmvOkIqSv9BsphRRgGWlWdLJmC/VZV0l4NBfhN2N9+elAnnAg/tEbODr/i9J1rcl+uGXXvXZqOVkirIKYEjBA8BSaX6VATwrXRX++qNXwsPwy30G4N4F3iTgZkiZi9cQKIHnLTQmI6+PK83noj96aa6n9qgKo0OMif6/UbDt1ynmnWgf8mcObSsl9XWv+Ll6Ke2YZFiObm8e5qt0zo09wJPLTw37FTM5Fr2uo0Jkk+3PIBSejOPjjIuBwgOCPiWCpl/8wyGzwPiicooW2HH2wPyY5r/5GVQkIvODJjwrzAKOH4mU0HKiiT2QdouHksaAnCgMbg6XEFjBfgHYw== X-Forefront-PRVS: 0200DDA8BE X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6009001)(7916002)(39410400002)(39450400003)(39830400002)(189002)(199003)(81156014)(8676002)(81166006)(50226002)(5660300001)(69596002)(3846002)(5003940100001)(68736007)(6116002)(38730400001)(25786008)(39060400001)(53936002)(6506006)(6512007)(6486002)(54906002)(6306002)(6666003)(6916009)(110136003)(50466002)(48376002)(36756003)(189998001)(50986999)(97736004)(42186005)(86362001)(101416001)(53416004)(92566002)(1076002)(4326007)(47776003)(2906002)(7416002)(305945005)(7736002)(66066001)(105586002)(33646002)(106356001)(2351001)(6606295002);DIR:OUT;SFP:1102;SCL:1;SRVR:DB6PR0801MB1735;H:dsafonov.sw.ru;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;DB6PR0801MB1735;23:xuzFOXogDDTEoDWAg6wXSGehJdJdqXETliUe6pT?= =?us-ascii?Q?eRYoq4jVQwIPmxD/4McNeK57uMV+iI875I4ir7ZB3L3tBoeJXhA2vDQ6e6R/?= =?us-ascii?Q?ljInVTutpQqEg5cedr0LaRaLHIqEycsC459aa1JD8HCw1hBg44jzkkLRLg5I?= =?us-ascii?Q?LwHvITICKTU1WOnewUXARLx5tu695Xojcxdzn0kBfuZKsov4WTpfh4Hro6Mw?= =?us-ascii?Q?vlW88eW7b8jFvHnYqerozH0tMU2IxIqtlQTZwhqMoOTHIXoZ4r38yW8+AY4X?= =?us-ascii?Q?8smzvUJgjf/ghPW31DSjvJQtXFcG5CYWzKKtLeHiFD7qo239W2yC+AeRFpry?= =?us-ascii?Q?Tb0I/JOgHyBRSNv/AVyIm5P98REscETutpKa8PrqYldDKFHFOSXfNg2ETYgp?= =?us-ascii?Q?ogJ4AHuy9eOrPcxyasovl4OKMB79kojjBdwnSeB+fU67uwcuGMPT5XOvMNFr?= =?us-ascii?Q?VPdDPEImasZbx9vWIDV7jUHzNzNZML9ljx8I548Uud7vk+Bzwk9NdmIuR+Lt?= =?us-ascii?Q?6CHAfzmqqIxqRs8CARpnRkULnd3xiulWK0zQmFmFXuR5qBJtclMbrWoyiF6u?= =?us-ascii?Q?L5PnY9C/YlVRRNnnOHkrOM15dF596mhFP/LPxchsLjQ7EI4tRpnepIVhmwhx?= =?us-ascii?Q?2BW+dJpwVFl+KrwdH3YHzZfL09gsz6+7L9RCtY8f4RK18wCfVMdBEp5SJSdr?= =?us-ascii?Q?Fh+bJrY1fGuRmX2W8JjwUMOxUZkN7dzuPBwTh3vjnjW/ybfC7XSk+SaGlkVg?= =?us-ascii?Q?LMC0/5dNxIK/As0i+rk3NcG/in5BBx3gqdcBy3cSSoBE4c3MCInRp/N0wUUU?= =?us-ascii?Q?Pjh7FtxPnENdYjn9JHogO25h+chxipz/z+oIlqhVTNQGfBxrjAeYCTCLiB+o?= =?us-ascii?Q?iMFs0jcfAo9cTfKrBlwVpaL0kxUwVob25PeWdMcOthLd0DDDPThJbqXa3mie?= =?us-ascii?Q?OP0G7tpWdIoW+brN1sBGNd8Khxn71TAY68Oa1yJwxJinN7ip+rBzdFX0XlVf?= =?us-ascii?Q?fTf8np8tINdvqAoFoOL59CAVexoDVTOxgtLizfWGyzPTbLMXAH5U6LsjZSnR?= =?us-ascii?Q?NkJGwwD8gqS10c4Qt6UVSyuYxC8e4dedEWy7yMdTzXOTDhUlnl5ChhEnMUYE?= =?us-ascii?Q?Qzx1nFlRIPRipODLyikg4VC/6YLIjBVMbve8HNdXF46k6/SYazOGbByggm1L?= =?us-ascii?Q?VVSkGrlr53X+80tzRYBqGnNnPJLxGm94iR10mwSikxRpMt71an0CcB0WFk9p?= =?us-ascii?Q?90AzxWcJru4IJfwaKIRUQlqHobVqvrRzf9sC6/8ajMPWCj69SSLV6nYKWxB5?= =?us-ascii?Q?4oA=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1;DB6PR0801MB1735;6:xOmMgWUPrDvKQwQzkFkNd5qSAtbGUZ0iHpbdmPRh83nbro9PenO08RDnTPFq0Mvh5WysOwHIwFX7QE5CDsiQV4v6gTVCgMq1F5hTtKWIqSAkUgtDnkoWHpRoCGNdDVvw7Dv4xYnLd7geC1cl9Z9ClUyL3DbNgkN00BvqOt5QvuMCfLD/a9uOjNrHdpMfbyNhtmin2XRcIev9tPFbim89/118DxOJfM9hsfsTMhDWCufEFbjv3CzRGZ6EJnhxKt1JALnwUjpNrICG4gZsWGQMk8SXo2SZgkcDbhLQ/tbAQSJ04tCb9w2p95fcFZ8R+kxNfY+zO4JG4UigD3xn6UNkV57bqY5+ZbrKeZbY0dGxv/DoBBqiPMXYXMDDnZuKIcyX+o6rOwH2GWWbKQ5tDgqIWHDBd86neDmdOKUiY0+Hk6U=;5:LxbbFTGa8sTgbrw4UE5H0Sq1G69ZITU4CV32OZGC7CKIojLr6FzTCbWoMmZShKZkKSH2ToX5qtBGK6kezNi/tar5X5w7FqXGX6U+ByuKTILdIFfZAXDv/El4SLBKYSSQ1plff2CZTKGpjlKq+jJPNQ==;24:2T+r3sBGtwD6wyzaalBDXORAa1xjFLipL9WjQSFLR0uJf1tnDVwUB9W+ylenB14pGfakKzTUw3DVfwONULkn3V4DKGGTP1sYrHThnjhzSnk= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;DB6PR0801MB1735;7:201B5XvTSKZmGjFihyoEQI533bTby79L+e0To27F9RpQfzIZOaPaxKHTiPb6YQIB5vuajUGYi+0nHSmbYSZc9nIUefgdQBDPovqZIBz3TZrm5mCA/8lTEZm2UyGSp2Pvp0pug23zVUVTDtwPasblVPVRa+Xl8VKkM0Ix11R70glpBaPhHgmfOGxH7kpQZ/q4zFBCc+y8Q6dIMPMFwqHmB/tK+KISFXd7Y5a17OszzdzxvnkuuubY7pCbs/aj/gWJ3VWkS8bYEA6tESJp3G8GW6fDSMp5+NoGHilmuLEQpQO59kNd9cckZkzNiMy20YUiYy3p1rQKO38gU5Abj9xKcOWkcnU7DeTMY9hgmS2RzazQ7VRadgC0p75NWISO2M3HZMacRWRB8iKeqPQct4vfFVIqc3udDOA4oKaAs78jcRp1z3qnGS6a3mD93gOkauyER5rFTMWasTFH7bjK029gog==;20:rwZRdpxkb1NEN26ZbuDrmPnLPBkMqGeJoQV63EgQQtcpD4GuNrS/DWU/cHaHrcgMVwsug1b1rOq+ggF/Nseiz2I2D0HYHFMxx24LjVhETpNn+GMVGlLd4zMYZmfgISpGdS9U5JPYCX0KRowRJk5YcSH5UR1SyYVCk2CqyJ89UAg= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Jan 2017 21:00:38.9760 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0801MB1735 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Changes since v2: - don't distinguish native and compat tasks by TIF_ADDR32, introduced mmap_compat{_legacy,}_base which allows to treat them the same - fixed kbuild errors 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 32-bit mmap() for 64-bit ELF x86/mm: check in_compat_syscall() instead TIF_ADDR32 for mmap(MAP_32BIT) selftests/x86: add test to check compat mmap() return addr arch/Kconfig | 7 + arch/x86/Kconfig | 1 + arch/x86/include/asm/elf.h | 4 +- arch/x86/include/asm/processor.h | 3 +- arch/x86/kernel/sys_x86_64.c | 32 +++- arch/x86/mm/mmap.c | 80 ++++++---- include/linux/mm_types.h | 5 + tools/testing/selftests/x86/Makefile | 2 +- tools/testing/selftests/x86/test_compat_mmap.c | 208 +++++++++++++++++++++++++ 9 files changed, 307 insertions(+), 35 deletions(-) create mode 100644 tools/testing/selftests/x86/test_compat_mmap.c -- 2.11.0