From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932068AbdBNP2S (ORCPT ); Tue, 14 Feb 2017 10:28:18 -0500 Received: from mail-eopbgr00138.outbound.protection.outlook.com ([40.107.0.138]:62176 "EHLO EUR02-AM5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1754384AbdBNP2J (ORCPT ); Tue, 14 Feb 2017 10:28:09 -0500 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=dsafonov@virtuozzo.com; Subject: Re: [PATCHv4 3/5] x86/mm: fix 32-bit mmap() for 64-bit ELF To: Thomas Gleixner References: <20170130120432.6716-1-dsafonov@virtuozzo.com> <20170130120432.6716-4-dsafonov@virtuozzo.com> CC: , <0x7f454c46@gmail.com>, Ingo Molnar , "H. Peter Anvin" , Andy Lutomirski , Borislav Petkov , , From: Dmitry Safonov Message-ID: <397ddf67-92bb-f210-bb8b-09580db41385@virtuozzo.com> Date: Tue, 14 Feb 2017 18:24:23 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.7.1 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset="windows-1252"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: DB6PR1001CA0011.EURPRD10.PROD.OUTLOOK.COM (10.171.79.21) To AM5PR0801MB1730.eurprd08.prod.outlook.com (10.169.247.8) X-MS-Office365-Filtering-Correlation-Id: 3f294c16-e248-45c6-e78b-08d454ee134a X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001);SRVR:AM5PR0801MB1730; X-Microsoft-Exchange-Diagnostics: 1;AM5PR0801MB1730;3:TY9xCm+NoinIad7PGs7nJyqMph46I6R18Vw0FY4f6OLaj0GSl2fUfRdjccj6QrTxuXcClua/Ff+039OaSd1PWqN/OPoemp31mKrBEhSPBD/2fQHhWN9NKdeJjdOhYOSnDfkVDynxnyCruZY9rhtOWc2jHv53BHSCAX+FIE4jJ7ELhqFkudHZGZm5o0xLkyYOXfokBRwYgxBCze1sp+FStg410BrkPkixQ3svaoFMZ6ZBOjErCAbgXRLSPdct4+IxvOPH85/3RYrLBPT4qQlfQQ==;25:0NiLEw19wIpVagDv54Bo57tf7kSC0ersS26xVMAMklWoIceaUMZhUZFgwrYYoY6c+bHlWuT1G/BbO1kIFPwZ/xHHuWRlyI0dLKQGh+SXjTZ1/hYpiLVpa1nfH6NRRFyx2xR7AyVMyX7pTEi/fcWxL0jbEaA8UlsQSRf+j4q6CKa+IXKCK/st26WGniEu5Wfz+q9x46OjE/SbYWbmmmG6Kj/pTP0BQFcW7qBT1telreciHVR3FXN8rA1BWKfXWyO7HJ5CXVr7pS8NJqztxBBhMtwD7R/M9RuQbNcyNdOiPh9A5VdHfwBtAErzz5WQLboEobGwclOTv7d0tsdnqTWIs1/AhJjlNuaJoa7+WgWFTyMEhwlTPT1sh9Tuy4s4mFpsXDb6oLKZgAa62e7s6kocszpNfW4MbMjOMZ2KH9Q3PskR3X+xMG1jAU81arSWhPCUSo0y9lMw3asuWokiUb2N0g== X-Microsoft-Exchange-Diagnostics: 1;AM5PR0801MB1730;31:i9UauQboJOh5AOvhSRYlXMlK7L4JpCipm87SiEDR7BfZgE3lzEyozzlK6JfnfbTsN5PYngp8wbVDwB7Bi0C7QQqvqUlGQNyDiA1OYPCpDeHHD7z/hSZ0FeSAaXbqyTM6D+unje1wJP/y4ONg9SGLU6VDxx7NrtwI5cYca5DA6NaUHo7juG44szU8m0YxKRUim5JecR5HVq8Eyyatkx0AYLgTSq9f7YM9YASuLfq2R1gZ5pBQzhG9GNQ44WZqm8g2;20:Dp3msZkJv+INK94NjntzM1XPsHrplWDYPrV8e1W71T+tqXnxTSEsVGHUi+Oq1EfXoRLAhpwm4d+twdakAWDaVjywQ91Jsi+t3KhCH0qlAJZ9/skPBBARxgE2NBHwG9e5uWzGJC2pC/IVt3wxdx65+cnEgsYup06t4NJ6zHY9LeniqMCHOlLqpprVZsHD0U7u+nv1ffl2Ex/rm2SxZ0stpPG35cm44mNKgHp1cbFC9NKdoIzGNPD85UFyfkGEV+VSLt6lmcSamkCeWkeX+vh02jaWFbEsFsN/4qjbCBTkU9TuqNrTzJbaN3cmhYastAzqIVoq24ohALnUp1mudihU5N+SRTRObfweaeIlVQk514MBORs+gBA0XcCDAVi5GEiDHVcg0Kz1RfNYrGU4GFk0h6BRzuvdKQdK+GYDJFk0p9o= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(278428928389397); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040375)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001)(6041248)(20161123562025)(20161123560025)(20161123558025)(20161123555025)(20161123564025)(6072148);SRVR:AM5PR0801MB1730;BCL:0;PCL:0;RULEID:;SRVR:AM5PR0801MB1730; X-Microsoft-Exchange-Diagnostics: 1;AM5PR0801MB1730;4:Bw8PtWghwwbbhOZL/dV5eCBuvbDgRPB4nC8j78YsqE8GjvucqiEab184YySoLVGaxX8ikwxjoNu8x32SvfipQlQZlYTXn48HlOzmY4JbbfahjTYGss/2WNQq016CuymiY5Bb18NoTLto/42yqKH0kTH3AmXfnnFpu5JFz51hgKTY0CrLD0tuSG7RtOROQ/SuFSL/n2mYKSX/utDrsM6deSFQKzATs8Iqe90WG+k1fJQ2NVA2ILO/UnFtROY3LFGIooAsQB3QCl2qgrxK6WRaBuGVWJ8Bh869POKqK54H3PhyVHy+IgPTvKIHNsehdaBrK+Ug9vJa0w3dzSiZrLu1XMOn8suzYuACdMnW1V+e0eMJjqawR/YyMXP8HwxQRoQjwOrfs6q9rcmzJWLjz8qtfdMcjvX0Agau8s1PowUlISLeR+WR0HQWBuGHKhuvOKErxqfGNXrgNqTWgmiJ/QjOXlDVmmIvXXoQ64IXlRo5vKIyRG+uygHjJESofrP3oN4aTwZk1jXyDxmO57462mro0BoxDNEy4STa5/DYbbruHxT02tp1k0oMapdifkVRuDTaFD0S/wnaJnQ19ZT9fpJmJXEiB68OG4hUT7yb/F2jGCMJrYTTyS8CjppqBydiwrBoyJaUhHHgl/tMK0tN9psCSw== X-Forefront-PRVS: 0218A015FA X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6009001)(6049001)(7916002)(39450400003)(377454003)(199003)(189002)(24454002)(54534003)(33646002)(77096006)(6486002)(25786008)(6666003)(92566002)(36756003)(90366009)(76176999)(50986999)(65956001)(105586002)(54356999)(7736002)(305945005)(66066001)(2950100002)(65806001)(101416001)(47776003)(229853002)(6916009)(38730400002)(54906002)(5660300001)(110136004)(53546003)(6246003)(31686004)(65826007)(86362001)(2906002)(42186005)(230700001)(4326007)(3846002)(8676002)(81156014)(6116002)(81166006)(23746002)(4001350100001)(189998001)(97736004)(64126003)(53936002)(83506001)(68736007)(31696002)(106356001)(50466002)(81003);DIR:OUT;SFP:1102;SCL:1;SRVR:AM5PR0801MB1730;H:[172.16.25.13];FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?Windows-1252?Q?1;AM5PR0801MB1730;23:XhegHMYtZrKgsyAGwlRrQ15ti4k+g6QOTwY?= =?Windows-1252?Q?GAZzNyBjRwCOxsmm4k/CLsC5/DhDYyPJMc03wXU0YK0wCV/gwKbiX79X?= =?Windows-1252?Q?q3XujC04UYxcQ/Qg6ykW9lWQ8BSGHUxAJz0b/dcgcl6BfwLwJ0b6Vjwi?= =?Windows-1252?Q?zH8LHnlcBMUlnVr6/W95mg6kbSqaoBMLqnWIr/iIHELtMhjNajY/s9Yg?= =?Windows-1252?Q?R0BfDiIb2rZ50IsLYjIwplAeEQoq4oHl/Obr+JbZ4KAXIcqv6Ifm0OWD?= =?Windows-1252?Q?hWeTq0reoHJCtTtnj0E0eIoJ+sfBUkGRRvTxYowtNTIMGJ7JTIWSlZaD?= =?Windows-1252?Q?4xY25ltzZgoEgfRCJkp50fsL1WBOfPsBo5lz9yh8cbCvOfVEiy69avmG?= =?Windows-1252?Q?JJIPobIRITzuap9odUm4ooPVKkl6zEGve1aJU5Kb/WV967n/oHS/Kp40?= =?Windows-1252?Q?pPi2flXgUCwdP1DKu5tke3/T/LcC6PicnB/VDb4O+di6rkNodU3dbEP2?= =?Windows-1252?Q?OIA54a8qjIpgFtKKOZ4FohZkcW43LUvTxPIsUkYf2eY9DWM+qafgKRgJ?= =?Windows-1252?Q?WbiKYoFmhl4ke4h+vu3I0OPiA094urG9SM7/9gS3VxBfgBSx9ZmCSe/D?= =?Windows-1252?Q?J3KXz8BYJZvY5+g29MfiiyuD4yIPdnXbXaFMc7d6f9tEhLg0nTt2EdKF?= =?Windows-1252?Q?aksKXLq6LQJpwdplIjLIN4ppsOLgsDZpdBKBS7GiceRd3Z4KrXejTmH5?= =?Windows-1252?Q?N3px9QxUG2rBZj6EZMnAW3KAB5tXkiJlpq1zqrskSg+hfr74VZALlHnF?= =?Windows-1252?Q?OjYNFspQD0XJuzqII+AYSZl1AgK/CIMLxK7z/7e3FOE441gSi98f6yoA?= =?Windows-1252?Q?9+M8SEKJmP3WUGYoPzyIKegyxevvkPQNzxojsXnckbBLtoZFsDZo/QuQ?= =?Windows-1252?Q?URqCL79FDgEvwE2apwFxseFYb1AGtk1JKuSWc92iDLx0JOQ2a8Q6ikmp?= =?Windows-1252?Q?gWJJT1im5kELRLC98nIdWj7K6VudCRWkrbqSEq7docFGtBQLBdN9Y2ql?= =?Windows-1252?Q?M5wKLfGhn2N/m4uZUZkv+XBBcx23RT2860KdZJ8kmTVV2EmqALEyoMD3?= =?Windows-1252?Q?hSoTZPnby8+z3RoLtDLfZiBnufSKzm6/f/9auwxU4C0EUADiKwfxucxc?= =?Windows-1252?Q?yMmQf8Q/adQ273+wNbUvEg0TRXLSxuDstwVW+r2dxiEiu7LroBbs62J6?= =?Windows-1252?Q?y7QltLFQ/HUPPz8boJt/9esbV/FELJ5ocXf13JxzJmN5QeD+88u+YEgx?= =?Windows-1252?Q?Kf3SXONzSsrNsbZ4rIWUBUodEP+N4rFTwBkkLcfDL4cDQYA7Eei7kuFO?= =?Windows-1252?Q?KGB09GUKy9Nw+QZq8SZNL9uuKvX4rNqjacbKHSLuV+gji3AQYIhdn3dZ?= =?Windows-1252?Q?mK+9gYXe/kK/atk6weaJI6iNHdwEIYtSvRfQ6nCknnC1Q1NvpFTymlT/?= =?Windows-1252?Q?x5AO1qG2tsa+I0r2rK6/+010l+oBptI5onukx9gBLgm+BZOUzFutN5hs?= =?Windows-1252?Q?zvEQQPcN6Ud5I1mrA6EoMgL5BRlfZ5UZTIuwE?= X-Microsoft-Exchange-Diagnostics: 1;AM5PR0801MB1730;6:XGQgDG0m7iQJCVBZr0BCmhWpW8EGBlY983QFCgZsEgl4dZ5Gk6YpXgbLGTNt3mI71+sVHuV/Iii1KO6Dz+7K5LQ5Afbyx1V8dn2bP8A4Q+UNvJq5XJKn8jnMG5LEqjs/uE8wyQVTQ7y/gKSUHxi/R8wNWTG1tKgbdUr1vxEdo7l8S4+0dfZXqK6fQ77xwfZWHsyqZPmHQ9M9SQ0AUoBzVhY8vZfd8HYDS+EU1Rr3+nyPWlpVqaNpEoeEtbafurlGmfjKw0g6oIoZAmntnCfO3aMVY9wjjPAMb++Jbf9IjEtajE+BLnBsa0xDqq30fQsDlB0NHjeXtDXYPtad07r6P1cm056+cGEmHcu4aMvw6lYqdZCKM5glAH/UiB2h3T6XMXSl/krfEc2B8RHkZ1t4GA==;5:/f81kQraM/vDAXHpxj5ImpaRSNxCp78a8mDagf88bWiIZ+iaFpYi/sW+nbmCg3I2wdG0cX7BCrkIeaXOGsmUzVg+GbKI1z9KOBWZQs6Of3kdVvQZQX0DcQ6zipS/ddofp7LnIFxG7Udbyc8z6Kx8NQ==;24:0U+rN7WpgFj4WZX6T3hza/YOAmFDYjoJ9Uc0eR7DjyZuxvsgiMlGip5JVZAk4Q8a75SIXwdhAhS8LUmcE/swElMyoq8JxcObl5ivHwr/tcE= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;AM5PR0801MB1730;7:B61PiiZ3ktCiHzDrIbd38sc3Gn5JwKRDFX9Rn2GC8ZsDsqunPmDkglVZ5+ufmkE1GbNpkG2DFZKR2mf19cwblpPw6knS4LNQaj8B5j2Z4GRKOoISrnc7bQb8h90I0um0O3Lwphu8t93Mcz7MhUCeJB2Pn2ojvyX1bkVAk5n5bWodqUe5HNNLT2tU6tZSiY0TdhQfQX0RYWhRTOMzcyWgyNo0+JsLbvGxIYLvAqVYdDEjf9Xcw9B7K4SKSJ6hSp/ts41ltUWAmhp7SZfve3geoNZt2Tsfkd72Aeo8VYdQjB5EEL09NzQLPu3hSUBMtsBk2HU5eSK9R3L5RKykw4mAbAJx3AvS/hcr9U2boltH98iV5BDnGkBaegtY/lUTtdysqadpeH8YDgiTy61w3Py0OHOFoFOKyemkpXaY6JksUUY3k4hHZwTb4D1DCy0Sjxmsh1mzKdsQk1B0EkpgcthQK7UPpqds1VM6joBFKgJCPgB/rL94SJ/VRBI7VCzuX4oQjWqVnbrnuURZWhe4+oPvig==;20:k6zuP64WwpzrpeT0aj9g5qMTGBdxa/1DsY6qFXbcYX8Dngj0dzGg5M3Q2SkZrZHxowgGD7oKth0o4Vl0Xu1CwMKSI/5kK0RRrig3ojBlJQoffyVdUGHo3pU1aDjjhOfMYEf9JENV7MYE26dkPdcQ9pzr5FTN683EJ8bDrnMEuK8= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Feb 2017 15:28:05.8399 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR0801MB1730 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 02/11/2017 10:49 PM, Thomas Gleixner wrote: > On Mon, 30 Jan 2017, Dmitry Safonov wrote: > >> Fix 32-bit compat_sys_mmap() mapping VMA over 4Gb in 64-bit binaries >> and 64-bit sys_mmap() mapping VMA only under 4Gb in 32-bit binaries. >> Introduced new bases for compat syscalls in mm_struct: >> mmap_compat_base and mmap_compat_legacy_base for top-down and >> bottom-up allocations accordingly. >> Taught arch_get_unmapped_area{,_topdown}() to use the new mmap_bases >> in compat syscalls for high/low limits in vm_unmapped_area(). >> >> I discovered that bug on ZDTM tests for compat 32-bit C/R. >> Working compat sys_mmap() in 64-bit binaries is really needed for that >> purpose, as 32-bit applications are restored from 64-bit CRIU binary. > > Again that changelog sucks. > > Explain the problem/bug first. Then explain the way to fix it and do not > tell fairy tales about what you did without explaing the bug in the first > place. > > Documentation....SubittingPatches explains that very well. Rewrote changelog. >> +config HAVE_ARCH_COMPAT_MMAP_BASES >> + bool >> + help >> + If this is set, one program can do native and compatible syscall >> + mmap() on architecture. Thus kernel has different bases to >> + compute high and low virtual address limits for allocation. > > Sigh. How is a user supposed to decode this? > > This allows 64bit applications to invoke syscalls in 64bit and > 32bit mode. Required for .... Ok >> >> @@ -113,10 +114,19 @@ static void find_start_end(unsigned long flags, unsigned long *begin, >> if (current->flags & PF_RANDOMIZE) { >> *begin = randomize_page(*begin, 0x02000000); >> } >> - } else { >> - *begin = current->mm->mmap_legacy_base; >> - *end = TASK_SIZE; >> + return; >> } >> + >> +#ifdef CONFIG_COMPAT > > Can you please find a solution which does not create that ifdef horror in > the code? Just a few accessors to those compat fields are required to do > that. I'll try >> + >> +#ifdef CONFIG_COMPAT >> + arch_pick_mmap_base(&mm->mmap_compat_base, &mm->mmap_compat_legacy_base, >> + arch_compat_rnd(), IA32_PAGE_OFFSET); >> +#endif > > Ditto > > Thanks, > > tglx > -- Dmitry