Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752390AbdCMOA0 (ORCPT ); Mon, 13 Mar 2017 10:00:26 -0400 Received: from mail-eopbgr40111.outbound.protection.outlook.com ([40.107.4.111]:9952 "EHLO EUR03-DB5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751150AbdCMOAQ (ORCPT ); Mon, 13 Mar 2017 10:00:16 -0400 Authentication-Results: virtuozzo.com; dkim=none (message not signed) header.d=none;virtuozzo.com; dmarc=none action=none header.from=virtuozzo.com; Subject: Re: [PATCHv6 4/5] x86/mm: check in_compat_syscall() instead TIF_ADDR32 for mmap(MAP_32BIT) To: Thomas Gleixner References: <20170306141721.9188-1-dsafonov@virtuozzo.com> <20170306141721.9188-5-dsafonov@virtuozzo.com> <35a16a2c-c799-fe0c-2689-bf105b508663@virtuozzo.com> CC: , <0x7f454c46@gmail.com>, Ingo Molnar , "H. Peter Anvin" , Andy Lutomirski , Borislav Petkov , , , Cyrill Gorcunov , "Kirill A. Shutemov" , Michael Kerrisk From: Dmitry Safonov Message-ID: <4f802f8b-07a6-f8cd-71fc-943e40714d1b@virtuozzo.com> Date: Mon, 13 Mar 2017 16:56:31 +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: AM4PR0802CA0021.eurprd08.prod.outlook.com (10.172.214.31) To HE1PR0801MB1740.eurprd08.prod.outlook.com (10.168.150.7) X-MS-Office365-Filtering-Correlation-Id: 1e3968c3-783f-4c25-2657-08d46a1944eb X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001);SRVR:HE1PR0801MB1740; X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1740;3:C1s/FfPnV9bB8OWPgXd75Oc48q6C4x0m78wMsZjWbY8dOEroKpWpeEyy+H1JEoFMdt3lOZ3js9iwWMCQVq4y/DqhhHYzhxVt8FELHDkRzDRGp6qSf31GwKHVwIBM371jzxAaXlCD6Ez37nLtaALTFny2TJHaF2s2Zl16DX0VuiXaDVD8UZbSZJAi9Aam7sqHGAuFXNfpSfw/NbnQT/NM66QfYXQnxiQV403TtmIPYOdmtZthBJ7u6+Tow1ljWDuHZrO+ZRCpCPmsYWIFqNfYUA==;25:T+b86LJAMsq5MZ1DSYoGdZ/4/x+GJJDiUAhTZg3GqRjRTgEINf4y349XtPumT8GX5xhqtHwC5Lu57V5N8ezX/igwREbxpoG5RtYXw5Zq/4bCxYjPlU37jKMv+4mEWjoSvsTd6pzOCPgdOJuSA4Zg2aQUrxy++DiaFKO1dYoz8b0B4qF3EKwL6uRQjuQymc2zvCg9lweH8PWd62iza5gv8tsMYqT4oTG03E92eJM8PqV/4FwYzeE7DpdXVJxN6vlf2gvEzyIxj9o48BRUpdOVkl5mP8QznTHVrX+x6sN7MkJ61hRaJV7DTLWzgDT3kQaXM3twlht+2ow8LXOoLys/VTvQk3wzM/jJmd7oTG5Grj9T+DFy3nrrhkHqOUJNFPudKUW2ngGbzbZuFYxFgN9l6Ll6vuYDwyEv/trs9DbyachkcUSCjbNniJDejZsM3w/AoFa288IyXGA0Ed4wrGRcJA== X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1740;31:Fsek5M1ADklt1Kcrjhx1KNG5hJy0ritCljoSwXcGH4Xpp71goHl+xP2dBGwLvOFLLBL9Y0qdlfHAV9rQ00LI4EJl8Jwnea3ID+jumosrJt+smSLzzUKbMwTGkisAtfmmUHWLY49OvAVnhJK8ixDBLSCCB7JHPKsiU0Rx7b/vEKb6OkMwOVGHztnipqF2A6euqzxHO7fFfQwZCxnTVTqclL25vVo7vTPQk0hu0zOwaPA=;20:ee2cukC7uanqA6fZL3AH+Ny+NhDNcU7CH6BVm/anQfTHzG6hCj27uzyJt7z6Xg27E+YxsQREASFrRt5mUB1Ag2XIdXeeL+RbcIeDlBVlnLgBKUcVBWzuhuQSoVkjMqgdURbrO6Tg/TUBVlR94u4/73IW8bBgqn3aszUCITaITZ7o76kZp1BYUApW6ZpyVlKE+qFzkVOmfwmy3LrrznmVuVyrR5fQ45UGM2RmySafBDdVLwu91v8ry0+E2yR6lAk32H1kmExKsvAR2PIEZZfgg+je7sbJ3NtJLSDjSfNyl3BPjFbbOlM8s1blR/lsg9jcGrd4Koe/cE6gUjC21/pHsRoetRTm9Dhzjj4Lq4kelLudBlbCN6xbB/5Ng843nhO+1EOQD3aSUOu801+y/wf2o2yU9aN0YmAE5mSy853Hg8Y= 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)(5005006)(8121501046)(3002001)(10201501046)(6041248)(20161123558025)(20161123555025)(20161123562025)(20161123564025)(20161123560025)(6072148);SRVR:HE1PR0801MB1740;BCL:0;PCL:0;RULEID:;SRVR:HE1PR0801MB1740; X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1740;4:9B8dxyLLLkPRiXMWA/EETpkKOFo9+L/ZIniXVI12RFb7LaTN0s9WpNFjp01lUNkG6xtj7u7o6H+US4KGjG2/NqHyet+qp8zAkTwzleMLKrZ0g+5770xfwVLB/6ZSngbPfh0pZ6p7ureWTf7ITdLRDPNcGSGAdGxy5LdZ+luNkEy7gEUxNWXRG0B1m1ofP+eQmZO+nale75ol3yof/nox3AblSGARW32TlQuNqRbDAgV90btVTMqx2+lqcuWMldjjgSyhAvcdW88mhvDHVrMxNDEnGlI8V/6wm8VMmZj/tQsTr0dVXqSc5McZqdOxIYgKx8MTCxIlNoCz+o4TSBRwL0x55D2Q7yDNuvzz6L1xrac+/whwWXjxNZCoXYZYnigNofLmymZo+99l+FD3UCoLQrkfmVdmQp61jJGU80DWOOdsQX5UYfjFseSMmsCZrg67B67Ept1lrzZXioI5tev3+8DcWu7ZoG347JTAqbeDLHH8gdU7g/+EIZJLgj9vV8mak3LfVcGfdxBYN41jG/Pc2haLtR/G2RKiFS58DYhzQiDLQLRzTAyrSAZaariF0seKx7UaqmFC2WLnq4/WfithueZd5U+vz67a9XL1NDirhgbXxTYAxsyQz/UnnVWefMrILCtr8J0BDGEltTr+j/ZJLw== X-Forefront-PRVS: 0245702D7B X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(979002)(6009001)(6049001)(39830400002)(39410400002)(39450400003)(377454003)(24454002)(93886004)(305945005)(25786008)(36756003)(50986999)(2906002)(54356999)(7736002)(76176999)(81166006)(77096006)(31696002)(5660300001)(65826007)(6486002)(8676002)(47776003)(90366009)(53936002)(86362001)(64126003)(6916009)(2950100002)(50466002)(6666003)(33646002)(65956001)(4001350100001)(7416002)(66066001)(65806001)(23746002)(83506001)(110136004)(38730400002)(53546006)(230700001)(6246003)(54906002)(6116002)(42186005)(3846002)(229853002)(189998001)(4326008)(31686004)(969003)(989001)(999001)(1009001)(1019001);DIR:OUT;SFP:1102;SCL:1;SRVR:HE1PR0801MB1740;H:[172.16.25.13];FPR:;SPF:None;MLV:ovrnspm;PTR:InfoNoRecords;LANG:en; X-Microsoft-Exchange-Diagnostics: =?Windows-1252?Q?1;HE1PR0801MB1740;23:rDor6KYG1Q+le1ZyA04YT36X868/BkOnC2p?= =?Windows-1252?Q?8lxXz4Psgy6Qdg3fSpUJCdFvNohN6FKXV2t1dM9zN7DMwVIfzYnHKtnj?= =?Windows-1252?Q?DVNFMM1FLYwZoRqmBqnpMIeOfhp6DrZgk68YSO3W5p4JYAY+EzPydP8F?= =?Windows-1252?Q?evo/3ih2J0wqd5h63V3q6niPSB3rlBT7vNqKCQJ/7AuakC6Lg1filWPG?= =?Windows-1252?Q?QIY/QpBOO6Rim1swosc77yFnq3yjoiw17+wLXTP8EQb6AwVX5LGF3b60?= =?Windows-1252?Q?FVOusX4o7PWaOFFlRmf86QvCGXDK0Gz3ax28WsUPNHifc8kxZif8D03g?= =?Windows-1252?Q?pe0/VUa/pWHJE2HzcMuEa+CURDiXZFHGF/55YsrjZcTgJf4ZKq6ltg9L?= =?Windows-1252?Q?T98y4Hylark1lQBI60lqDXmRuSGOCgPA0b3KvNQ9zpgzniU4WwpnsdRt?= =?Windows-1252?Q?/RwjX9OjUQF6oAsT8chMvxG0wbmYU89n68WIsBmPQRTOqr2NbPL8fbIs?= =?Windows-1252?Q?pZTDv4hA9fQGWuLw5qL9eTzPmnoKJp5fDfZJj1eE7uaFHBCWT27qUBjw?= =?Windows-1252?Q?leA/4HFYv5bIM2lZLz+5E14aZnBNg+t8eEa1qCurGFWfhY8TzhNKC+3/?= =?Windows-1252?Q?yvriMo+Oo3mFNnaZ5zIQTbzk5mIDrlR9qyBSJjR5RrPmPn0f7cUxu9X6?= =?Windows-1252?Q?X28plNm5gooL0DZan8B8whZTQTZHRIIMkUh+Wx0ccyl/DSSVuNeB1O8q?= =?Windows-1252?Q?P9inPJtfBM8eN0O5D42S7P/hvXrm/eho56PveMaUhAnHaeZXb87hVWxy?= =?Windows-1252?Q?dCjpVNU1cNBVeyZCfdhso5EZ3x3aPOdd9DIugLZSjPDHehAeYGqCysLt?= =?Windows-1252?Q?WVHbncP5W1E9ZZRE+al2N3U6Fq2d9IugfIaEDdqF58HYjbVL6WXk5eaN?= =?Windows-1252?Q?GulJGJc0KjzjZbCfrlrCU8XS/X/PWz5B8VVfWBW63bPX3+3Mtzt5AH05?= =?Windows-1252?Q?KKlt+pBrL55/1XAblmJicZOvcR0B47Ayka/vf7eVeOnmGflckXCy5Ik1?= =?Windows-1252?Q?UATKigQsF+j06iOaAiaa0ITykCMUI87qum09RQOUSx0DJO+paq4cytrp?= =?Windows-1252?Q?h+NLCVZ9hT0iWiBp+/niaeUC5Lq5l/alTTG95vtYIKSp4q92Ba2J/PYD?= =?Windows-1252?Q?tgy0SfzbCizwExmIppu+jY9utlqpztNQ7s1+Ug4yoegTkFnyvwkUteKz?= =?Windows-1252?Q?H3zZFc0gQnvf1lb7tQu0IEcfeZreCljz4rxfR4QFaV00Elt/oqm+7xaS?= =?Windows-1252?Q?7/Ad0W4Q5z3F2/ZCXbSph7kn7zr38gFY6jrud20aTBfJ6Ut9oxBHt35v?= =?Windows-1252?Q?fNiYE3eJQG9mmdH0DmFRXiRtULbG23J5s98ByLJDENNKZSR2Xu71dXq5?= =?Windows-1252?Q?UAluwptK1qBl5947CahdseRQvKtvrR+SWm6hmgSIFKKlrRx20jwOUnWB?= =?Windows-1252?Q?m7nf2xt9gGzFeBgVKvxPODqjLuSIbuxQOAW34mey08zjFZ2kksg=3D?= =?Windows-1252?Q?=3D?= X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1740;6:F06XHZ5iPp00wJZdu9HDKtxAb3qv2sv8PmRVEjXbG3ed6LfktiKTeu7dB5eXrBoOa7FzDJzRjuhvg0yZipJoeXgUMSBxKM/RqC7bk+Syl+UaENsgPX2wfYXmVac939aer3X5BitlR6fAaYAch/NAvOXrozyZZQREZm9d6JQZ2z533PNEbCyE8eApYTxfGUgOjSAZzanwpMqI9id4nxJAgo0iNHi7QjXJ361Y7Z4JD6lN/zMNKyzWYXHzClsp9KCqCLqQGCzs8+IGOixyVVLNAxTOpp8hbBnSkQ3e1N4B+RXX6rTGn9pUPtM+gFlivbnS9CrFY3T/1M4LU2qyCnqi+Yqpbf3EAAajQizK8vAsEv1NI0tEIKQnbGyWP1a7Dqx8ah5fCjMy+8n4yzfGVTz6+g==;5:wHIW5UHimcMj34QvWXTHhTcxas08sEqbGv0Tk0AnnIv/Xc8rU1l8skEB/FL75wkK/6+NGRcnzB2t4i12rzOgF1A64T0NuesqrMXJzcCmdFKVoyG6KL7bCCaRc2PoW93VcTZHUtk1tekXrgQ6Xj0ow3/Q1qUlo0rILax2dNzqY1A=;24:OQm2IFLbdtpced1xTMWw+fYviWgio51nLVdR7Yr/vZVd5pZkc0MuTytTiI3BhOWqACiLQKIZ06Vru0O0bmujxrNq8pdnl/eNbxzDc34Z08k= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1740;7:vA5oYY9inzWYCtNG+p6x3ejkxkz1ZjkNOwAvVL0MjgRGHYxe5nxFwlWhVPPO5PHYVkPuGckYTvsKuHRNnD8P3rayfn/+hoUYkKQ9s5uajpveaML7VoFlbCtj5qjqhnCmqB7bhtHU7eKGb9EwhV88BeIOtU+7AFlHd/xemuPSkX1ozExOe39Ky3bGHihhcwVm2PftRaSQYu/2B94NbKtd9YBxdRILip4L2ZleEUFkJGNttKU4EzNgIhAH88NnIHzuv+Xb5zd/rDOzXQt6Ie1tcHvJEiXh/k8bTF3JKdGvtQg4d+bcPgSQReD/EcBOUH9rlnRnwU6VOO8F5lYxgYRK6Q==;20:vbGH23WyBe2myLjdYTNa46rMBV5bh6FuJLftiXmCQ5TphH4jZ2fIIyfmi06s/SX5ruucdNLo1SwAx0EZeCvzdbpkC0OdxhZLxxx6ZMbOFPEdGixopE90gIhsR4WW35Id5Bk7+uMpqYSiP4mnEfkBTAbY2Iab1rSrlgmgbzoNkUc= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Mar 2017 14:00:11.7976 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0801MB1740 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2219 Lines: 48 On 03/13/2017 04:47 PM, Thomas Gleixner wrote: > On Mon, 13 Mar 2017, Dmitry Safonov wrote: >> On 03/13/2017 12:39 PM, Thomas Gleixner wrote: >>> On Mon, 6 Mar 2017, Dmitry Safonov wrote: >>> >>>> Result of mmap() calls with MAP_32BIT flag at this moment depends >>>> on thread flag TIF_ADDR32, which is set during exec() for 32-bit apps. >>>> It's broken as the behavior of mmap() shouldn't depend on exec-ed >>>> application's bitness. Instead, it should check the bitness of mmap() >>>> syscall. >>>> How it worked before: >>>> o for 32-bit compatible binaries it is completely ignored. Which was >>>> fine when there were one mmap_base, computed for 32-bit syscalls. >>>> After introducing mmap_compat_base 64-bit syscalls do use computed >>>> for 64-bit syscalls mmap_base, which means that we can allocate 64-bit >>>> address with 64-bit syscall in application launched from 32-bit >>>> compatible binary. And ignoring this flag is not expected behavior. >>> >>> Well, the real question here is, whether we should allow 32bit applications >>> to obtain 64bit mappings at all. We can very well force 32bit applications >>> into the 4GB address space as it was before your mmap base splitup and be >>> done with it. >> >> Hmm, yes, we could restrict 32bit applications to 32bit mappings only. >> But the approach which I tried to follow in the patches set, it was do >> not base the logic on the bitness of launched applications >> (native/compat) - only base on bitness of the performing syscall. >> The idea was suggested by Andy and I made mmap() logic here independent >> from original application's bitness. >> >> It also seems to me simpler: >> if 32-bit application wants to allocate 64-bit mapping, it should >> long-jump with 64-bit segment descriptor and do `syscall` instruction >> for 64-bit syscall entry path. So, in my point of view after this dance >> the application does not differ much from native 64-bit binary and can >> have 64-bit address mapping. > > Works for me, but it lacks documentation ..... Sure, could you recommend a better place for it? Should it be in-code comment in x86 mmap() code or Documentation/* change or a patch to man-pages? CC'ing Michael. -- Dmitry