From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751776AbdBFQrD (ORCPT ); Mon, 6 Feb 2017 11:47:03 -0500 Received: from mail-db5eur01on0128.outbound.protection.outlook.com ([104.47.2.128]:55267 "EHLO EUR01-DB5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751154AbdBFQrA (ORCPT ); Mon, 6 Feb 2017 11:47:00 -0500 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=dsafonov@virtuozzo.com; Subject: Re: [PATCHv4 0/5] Fix compatible mmap() return pointer over 4Gb To: , Thomas Gleixner , Ingo Molnar , "H. Peter Anvin" , Andy Lutomirski , Borislav Petkov References: <20170130120432.6716-1-dsafonov@virtuozzo.com> CC: <0x7f454c46@gmail.com>, , , Shuah Khan , From: Dmitry Safonov Message-ID: Date: Mon, 6 Feb 2017 19:46:55 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.5.1 MIME-Version: 1.0 In-Reply-To: <20170130120432.6716-1-dsafonov@virtuozzo.com> Content-Type: text/plain; charset="windows-1252"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: DB6PR0501CA0019.eurprd05.prod.outlook.com (10.172.232.157) To HE1PR0801MB1737.eurprd08.prod.outlook.com (10.168.149.149) X-MS-Office365-Filtering-Correlation-Id: cf42b6b5-ce49-437d-fe1c-08d44eafc394 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001);SRVR:HE1PR0801MB1737; X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1737;3:lsAn45VByLDlrUyCsfn1rh9tMLIyfNRTGYaGcyocFNZlypXUwlCPO3aevKPNrcJFUBKLAE0oOp4wZeeEt3P7xeHosm/TZJRvr5dZDp4ImnIikzjh3NgcGQIcOLP16EOMazNCODVsrll0uD6hM8C7X4+bhVlXpGD/Bq5veB2282r3KeBXHTwBr+GgKjPaTo8bc9bqSedSSY7hR8Tz8jEhKbUdMZMFHzKIlVuPMjT1PI9twEVfs9NG8tGz8GAQotw0gL729a1vVLa29qdEgoRYbQ==;25:8rgvt/+hA/+goIGygT2RORv2emdFeJAckOhI/5jWxszPktfsqoKOv8MxWzVvjR0rdMSBO1OIRxeicN+FGoHTEs4hYFWWAr8vuLy75XzXpZKPsI4jtLvikte0NJIkVdByxlO16fzFa57HRWUbcm6FPvp3F4FuzFPLcRdxLnkltgnHpWaNOj14aYgVWgAJdQV8NYeRxA4Z81W/p19wEv7EYbPsGA9xDNdVCNdCjgPIkNbN/9vNWy3u72wbND2myLlK86SFH1hDkBQW5K1yXreVAegYKZ4t0lyAWkfs5T9FjPhQsBBqRv0zaHGxFHjiqeuN/v/D+yqHume27qOjy+lutmIjeiEeS6QgDPA/p1RWouaru33/kIAJnB1AOsIHmtbzaOvpAgW+v6pUDMDJEUdSTrs1TDdamnFEoaszKkvjvVu9XwQyJ+BGbA721p/FSijXXmtuhMRxm48Zu3SzIoMIaw== X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1737;31:BIRt/Kf+tjKe+NA4ddhrJnJQFG8wtmM6SzrW8dOxlMIpdFdC0pbgQ+dMo7opOpLB/jRhovqgg5MPRJLf+G73NEyJOV+6u70rpy5h5lYydktAj3oXxyszRahp0fhe8jAZPeI7Az3/qTb30Qx5lfZL0wE+B6I8prYqPMw0tGIRN6OXbdQLPZYOllW1hXgTdVVg1E9ZrgwqvZnSLebgD4sVRkz8tKKVhKZg74Oo8SaMGeqZEfnAU6iFD8M4YqrP/6AqtysRNhR4KzdRQxk4XptYUQ==;20:xJRfatIYMsy1BckxHlFN5wkOMo6IGs/e3jkurEAeyzay+TvFV2+ZKGAIss5tp3Yl06k1PPZY9uyA9AshGAtO84lsHe0FDYrTMOiDcPDbTMQCk/sB9LryE7u3FtcQI3kcdkGRqlq5W4QAM6m+gCvsUXndQ3GrieKh86U48XJ9tS1jqRHs/t+V+jLmAEB1UhpIFPvVr8mfxgIDmqeQqsThTKk57TFyAU9GmeuDo9N1LCojQTjSlfQYtRsfQy72eOm0WMlHfMrsl8HKh4Dk/+03Mt1ez7GTw2sS59VDql1wKkErbTvx+ZpqLLoXWhUhwepIQgIoNUXc9dIhQW4tQLqN5pPPfFPDG/nFsr3WfWaXj3DPeLq3hsFqJ+r5u+WQa7Mr7nG4GcOQmYs+o0taab012gSEMrU7bKG+E3yGaRuTwvQ= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040375)(601004)(2401047)(20170203043)(8121501046)(5005006)(3002001)(10201501046)(6041248)(20161123555025)(20161123558025)(20161123560025)(20161123564025)(20161123562025)(6072148);SRVR:HE1PR0801MB1737;BCL:0;PCL:0;RULEID:;SRVR:HE1PR0801MB1737; X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1737;4:tqDXRvcqOAG+F71E6PxNVKU6fIirhxWNbqH5mzcORVQLNcNwFKgSsDC5WsZzj5UooBtK1xxgs+3RcHQj8ClFwUleuyiLoSmnfdoCmzQZigaydYYLXr9NQ25J15gMzfYNtGXRM/jHzlXLFI0onzWk8so+4KS1GTW5scKdxZme2lszZll66fWQPe1Vnfb0a/Z9hfVeFE5q+QcFGklxh/2AAqZnhH6Kx3FDMU4eGulDGwHSm6rI2oDIHLITwM5wdBHQTSJyvpQ8es2eAtM4Mp8EEJAGZHtwcKQmEatw6FmqpzKHEhv4RNhFtN+SQAurUaFg7T3XeAYpOJjh6DRIF7lN5ISIgNYH2Tghc9Mo7Sko/PPGAK3CP91y+f7vC+O7Grkh/nmzwZJGXOWfdvGu2b4En+/lktuAe9KNoms0qsG/NcU0AErDd6r+tXYWVBqQARssTc0jDopBmS4ZXWvBJsv76JwcqEwCPZhD6WPMz5jPDZCasF4xLVCOm3pzfLCaLIyvIQnCn7oRbF7e7CcmJEjUDJ9EScGeOILmFBQOvUKbUKCcDQYy2VVz27DFBsSmFkDlY2fPmvzKOOc+hclG3Ya/5qyMYGXdcv2CSvxx8pm+7WNNInsxcXY2XQEcVNC232eeUo50CA+VZyxA/yDQQN3AAg== X-Forefront-PRVS: 0210479ED8 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6049001)(6009001)(7916002)(39450400003)(377454003)(189002)(24454002)(199003)(305945005)(64126003)(83506001)(189998001)(4001350100001)(2950100002)(2906002)(50986999)(36756003)(53936002)(54356999)(76176999)(97736004)(5660300001)(230700001)(5001770100001)(7736002)(65806001)(7416002)(66066001)(47776003)(65956001)(50466002)(68736007)(65826007)(4326007)(6306002)(6116002)(54906002)(3846002)(31696002)(81156014)(23746002)(229853002)(92566002)(33646002)(6246003)(25786008)(53546003)(106356001)(42186005)(6486002)(101416001)(77096006)(86362001)(38730400001)(39060400001)(90366009)(31686004)(105586002)(8676002)(81166006)(6606295002);DIR:OUT;SFP:1102;SCL:1;SRVR:HE1PR0801MB1737;H:[172.16.25.13];FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?Windows-1252?Q?1;HE1PR0801MB1737;23:7VR1B7vRUP+H7MpZdy+TBFnf+2Yqz24Jt7s?= =?Windows-1252?Q?0FskL3Ze153nHqE4XUbWpORJLBhcdmplJwhDYt8zsj0a4bslQcPWh3qQ?= =?Windows-1252?Q?W2vnVmswhg9ytxSo1cUhgurq9XeQx+WGwVFRKT9cjFiWnt24pcgBEHMp?= =?Windows-1252?Q?fm/nYUgHEbqboh3Fg+SPqCcbY4OBOXmqBPXbiU+L2LcbOnRE0zQkJkxh?= =?Windows-1252?Q?1lvRb/IlfvmvIJklXvdGNNrOyEIRTOiuvUcvtXbe2Ord2uqB0CjgMl6N?= =?Windows-1252?Q?nRisU6GBKuxXeJGsLASvbJ/MwTItu9QMZLsNk9bPbDy5S2vifT1E5W4h?= =?Windows-1252?Q?xqdRBrlabR4AeMZXjzCZ9qeXpym7ixosnmXfYV7E+j1Y3uzEkj/NRuaB?= =?Windows-1252?Q?DKsT/ypLuHmC0YTRAWaU6EbqjapqeDWoOTlSSdXNBbQIJNw5JWipAzzQ?= =?Windows-1252?Q?Sha8Un2Y5HLnmbA7hDFWIzBPg4dHYsy338SKkn0yLV9D8fpIkjzxRVtu?= =?Windows-1252?Q?gv60xm1uT7/OjRvVH0zP0qUUv4nxeTq6XhSktWIEfKJzGHI6Fs9hpBOO?= =?Windows-1252?Q?GoYU86jREfJDEXGINC4aYlJP4kGcfUbxMjckD772EQbgoywBsxsnXNj8?= =?Windows-1252?Q?/L5CVl2YsQRD4PFIDBDAM8Hl7uYlYGdE/1PVNSwX6h3seY7IPYxZ0VAG?= =?Windows-1252?Q?KySvKmjvtIvRpZaUZhfgwuBYNFjEuBC1WST5npnzam5kA2W/Cu3did7r?= =?Windows-1252?Q?OLzKGVitZ9J3wRYsAjMqQUdhpvOU5wnxmN0rYU7D+7Y3+pXTKPDSnxRY?= =?Windows-1252?Q?Dh1pPhR/R6YzX5aKDVxx94fSK2neXOb05m87WZOR3G6IR9/6sXWkVlnK?= =?Windows-1252?Q?41xyxFNU0XENR04HbumYiGo5YxYVZuG5CP7RD3Ho+2k4pjbHftBdXt7T?= =?Windows-1252?Q?/DAwcU1YtWz/WTBSobaOTCBb7MH7b4ZUkYYNc6jKQCDuJe5TjzGdCHE+?= =?Windows-1252?Q?UMrtw+avPYfCi4iuxVbd7Bv2Df9mw+L707eHUbKhXLERjZu8zfi9fEvJ?= =?Windows-1252?Q?f/NKR/ZJ6KkYWK/jgNG99l4Xf4o+k4W5Ra4+z5HLKnJM9WywFPiYuZQ4?= =?Windows-1252?Q?BMkrSgDLYRmgOzgr0Drvw/vN8yvMzkwnZmRGfhsxMLb/3ysDbyXREqte?= =?Windows-1252?Q?7+fk+zTFSLShep5Nut3lE6A8s+1aqT6gFOD7hQw24hd5QyZT03x3VZMR?= =?Windows-1252?Q?N/ji4LsyQyJPacvSqJa5R9rDnj7xjyVumVjaGqX1aWDWaIzlZYyThrvS?= =?Windows-1252?Q?/fkLQuf4790+7td3fbFjQfj/53JtSFD4wJlZten8B5nrHvEZ8HUNrZfj?= =?Windows-1252?Q?gQEh27//DvBBLU5ncIiBEs5YCWkb6DhmgImuVovB2GU6DJQb25VvKEz5?= =?Windows-1252?Q?n2nqTj8ZlgUKrp6Y5byzSOcJaNweRB60oQkyp+PSTVSRNbX7jIGNVJ8O?= =?Windows-1252?Q?01ETQyIIDl0efKGYy9jVDOAB1qGZWcyrIRtVcGZ3IsStwCwd/SZ/Owif?= =?Windows-1252?Q?kkT01pSie94hlC7W92USHCI5Kw1rdomrh+4Cecm3fd1VHSFyFWmxiZGp?= =?Windows-1252?Q?k7A=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1737;6:/SZfLDz1x+jtkFOnHijdEuJYm/uGY89a32sz7TfemwncuFctO4YI9UwUwWheY7KqxENlZVj1okAp7jP9uqdJVD7n3VxBnfUgi8uFugG+Yfg9WyvCqFLWcZ3UAcNLLaAlARcALLOC1x0UfNMk9YMSdsSRXugsp4Bx9+AhCR0pQsKhJfZGJj49bJUKlBty+9T7UF0VIwo1Vc4e1tf4kdVEN1Dzy9okLbg2A8cbetAtrvdJKWSYXdAG5Y0STIbio17Sn6GzCwTE1dxJyx4jqDuwHSmvKgRoGEOOZPwStLOYHVs2mglZo1XbkxKFBAx0/xRh4EzPZUlo4IDeTRFrTSmZNAm9xbaDpNXfQinWpTDknAYhlh5dnQoAzzdSpuuwxgH+vlqODEu1ro47NwFpeqTMWQ==;5:jcRWSWXU+GwMMr5cm2OfrX3avwerk1H2DcLAngJ+y/RIhQV7cD2HW56BnRfWM1HqgUFHA7FOcuAWtkn93hGJ6auT/hm4LZ5uSTw1OZyLkP4t0uW78Su1cGx/VirQRC7YGkpMOd8nK0/2ElhMaNxE+BFwmXFc5Eb6CICxl+x/efo=;24:tcw1TNk8sMIAnQoly+91uSpfop+83cAo65fnOJMwtKF7Lmv7zewC1xb3cfV4K6ZKK+4Y7epYFo31XAMopZUlXSREmPFKmN9k1hFU8EqkNIs= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1737;7:oYBAUOaElKZRs0IIgtRnLe877V/cVRyhdl7ZuJuEn/nUyhFGfCo/iBwheZUiK8dUQEr80JjJWUmW6iJPFMtFRswOV4xEivQH78rMONHsqoXvsGwHhe+h3FWGR+it3t8J6jej0hN2SNfLkkA/7bVuTDjcDwvxraSYnGdKtMTPCAsxvY+IV5toCcAsafnrKobjg0JmKZ7PRUc3Pz1CFdFx/p8/Ywi9ze44IEt2xZ6ZCXXqkQIxCo1zkC2LuwNMabDkixlpMt546aab98Vixo5Ve7wn+IUfkMwqB6a80nTgwkr+tMpR9ojIQKg3gYFPR5bjjfCfj9eEWXa7FDcwG3be4+emBsKxZY33OdVYr2kJsBX5gna5s6HOE6XMWnGg9eBqOb/M0WZdVWb7jZK3awM95uMpoPS4UEoRzarWkbWUdWdbXwme1Tc4pYrFQt32bLWyj1JEkGpQ35bA6IJ2xLarysB9F1r9JV7nlkQ00HULmPJ8T0KSYIEHMFIf/5DqJonzKKOcwHqcXy1/7lM+aONhng==;20:l4Acixz1UvQLlV6c/BwdYUNo6h1b1D8SvhSC9ejQSd8Wr7eA2mnWOOZ69BnxHUql6inyqU8K/emwR93uFSDpH/ILTmL/+zxA1ACB9lXhtv9pqjIop5T51r28yHbcr4jbvbQLjLz1o/6AhxVXDpaylkUSz/9O6QzfDHH6gg7IWDo= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Feb 2017 16:46:55.8064 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0801MB1737 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 01/30/2017 03:04 PM, Dmitry Safonov wrote: > Changes since v3: > - fixed usage of 64-bit random mask for 32-bit mm->mmap_compat_base, > during introducing mmap_compat{_legacy,}_base > > 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. Gentle ping. Any thought on this? > > [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 | 89 +++++++---- > include/linux/mm_types.h | 5 + > tools/testing/selftests/x86/Makefile | 2 +- > tools/testing/selftests/x86/test_compat_mmap.c | 208 +++++++++++++++++++++++++ > 9 files changed, 311 insertions(+), 40 deletions(-) > create mode 100644 tools/testing/selftests/x86/test_compat_mmap.c > -- Dmitry From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-oi0-f70.google.com (mail-oi0-f70.google.com [209.85.218.70]) by kanga.kvack.org (Postfix) with ESMTP id C848E6B0033 for ; Mon, 6 Feb 2017 11:47:00 -0500 (EST) Received: by mail-oi0-f70.google.com with SMTP id w144so83498101oiw.0 for ; Mon, 06 Feb 2017 08:47:00 -0800 (PST) Received: from EUR01-DB5-obe.outbound.protection.outlook.com (mail-db5eur01on0122.outbound.protection.outlook.com. [104.47.2.122]) by mx.google.com with ESMTPS id 73si495766otu.116.2017.02.06.08.46.59 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 06 Feb 2017 08:46:59 -0800 (PST) Subject: Re: [PATCHv4 0/5] Fix compatible mmap() return pointer over 4Gb References: <20170130120432.6716-1-dsafonov@virtuozzo.com> From: Dmitry Safonov Message-ID: Date: Mon, 6 Feb 2017 19:46:55 +0300 MIME-Version: 1.0 In-Reply-To: <20170130120432.6716-1-dsafonov@virtuozzo.com> Content-Type: text/plain; charset="windows-1252"; format=flowed Content-Transfer-Encoding: 7bit Sender: owner-linux-mm@kvack.org List-ID: To: linux-kernel@vger.kernel.org, Thomas Gleixner , Ingo Molnar , "H. Peter Anvin" , Andy Lutomirski , Borislav Petkov Cc: 0x7f454c46@gmail.com, x86@kernel.org, linux-mm@kvack.org, Shuah Khan , linux-kselftest@vger.kernel.org On 01/30/2017 03:04 PM, Dmitry Safonov wrote: > Changes since v3: > - fixed usage of 64-bit random mask for 32-bit mm->mmap_compat_base, > during introducing mmap_compat{_legacy,}_base > > 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. Gentle ping. Any thought on this? > > [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 | 89 +++++++---- > include/linux/mm_types.h | 5 + > tools/testing/selftests/x86/Makefile | 2 +- > tools/testing/selftests/x86/test_compat_mmap.c | 208 +++++++++++++++++++++++++ > 9 files changed, 311 insertions(+), 40 deletions(-) > create mode 100644 tools/testing/selftests/x86/test_compat_mmap.c > -- Dmitry -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: email@kvack.org