From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752868AbdDCMgw (ORCPT ); Mon, 3 Apr 2017 08:36:52 -0400 Received: from mail-eopbgr50091.outbound.protection.outlook.com ([40.107.5.91]:33504 "EHLO EUR03-VE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752336AbdDCMgu (ORCPT ); Mon, 3 Apr 2017 08:36:50 -0400 Authentication-Results: suse.cz; dkim=none (message not signed) header.d=none;suse.cz; dmarc=none action=none header.from=virtuozzo.com; Subject: Re: [PATCH] mm/zswap: fix potential deadlock in zswap_frontswap_store() To: Michal Hocko , Shakeel Butt References: <20170331153009.11397-1-aryabinin@virtuozzo.com> <20170403084729.GG24661@dhcp22.suse.cz> CC: Seth Jennings , Dan Streetman , Linux MM , LKML , Andrew Morton , Vlastimil Babka From: Andrey Ryabinin Message-ID: Date: Mon, 3 Apr 2017 15:38:08 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.7.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset="windows-1252" Content-Transfer-Encoding: 7bit X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: AM4PR0701CA0009.eurprd07.prod.outlook.com (10.165.102.19) To HE1PR0801MB2057.eurprd08.prod.outlook.com (10.168.95.22) X-MS-Office365-Filtering-Correlation-Id: 088cb6ed-97b4-4314-7d2a-08d47a8e178a X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(201703131423075)(201703031133081);SRVR:HE1PR0801MB2057; X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB2057;3:FsDj/ErJYWI+WOiQ6BnQ7Hr7GdMUubPYaAWqh+pfQqrmMySZWJwZIzv3UDfM7qQPDMBgHL12VdoRBS4vECzrOSkiEh2H38X8/Z9Vo66+ZUp9krWVguDzOFuScYOrkrEoY4WaylTEtSS+FXeORX07H3HC3TmM8vpd79oFnHM6uDqbjkkfXycbDcyRLLNICfohMBqLD00+JtV6xJ5R5Cv4SOqPOs/g9omzjxwybwuOGv6JXVcfq3fbT+NYj9N1xdB7U8hGbpTQ8sHK1EDm/+7B1CkekVtRccveRP92l5+XHenFJIEBg2L/s287Udx65WWUoY4LKCCburNZuv3LhbM2tw==;25:iaurH/Bc198bGnl76gbfnfYS4K/6p6d2QrmBr9jHTpSU+L/ABCudlvOn6hqSFQFeQAs2a6zsTuHv0lVrCV9JbAwO4lh83HHRIj4V1ej80PsXyjoXVVCvKMjHtpM3N5tXdSdsgYpzmlHbSn/QEXWgCuf8BdQD8tJKPERme/TLYOiZrkwjEmFBP/YbsMaQCLXqsT9nanPZkeLqM3k24RVr4e985bp4+wJDoE67wm2ZQhgkpK0sUDAKtPfmfnzfJ4rPupIiUj8yOyS7Uo9O5LbAzacCiY8fEuWpHIYz8995dLY8kw20HxCerTAA/HRDdSszr6sjm2fGK0+xILKEJs8Xx9mm/15ewL6+stizkPeSIDJxtUb1qSZYPgPQ1rPQO/xrVBxWGPUascF0Guiue3sCz9nMuCZHjxArxACGgtcbrRUY7RqBVPPCm1htHYph7ykcIYXHquF1mSR8s3lty/pIfg== X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB2057;31:dgCGlJFzSQTC8A+m33oG0eXRekh0LU1ZjJ/zqwAJliQVQOrxPZR0wwxDBgKScysuuMY/l0pH2+SZlqQynkI1W1pk4U+takjF6tE1Zg/F9H22Vf4+4PvJ8iBoFl8v1TleSYvldg0GRsaOpVyn8sys/VIFe04V38NPJKonmBXZMIc5BL33JCln7fOVbu4ynoTzHm1q/Ka5/x9M8MrYpXtKIWmCESBrVrszLbjc8UjVNoNVnW1y2pZ7G84L2e/n4FDve/KfdE1P2LAvyUAG40rbwA==;20:vxO8HYK8Ad9H6uVb/dquIeHlBBf9nkq4WZN+Z/8M6+iJtbseQ0TPonUV6fDnCBdZYksrG/T4gY006rOvfThB7Md8aWh037ZNAJ3o78XD4SIydFNsjbU8rc3d4P8swBqJ6kvv+zkBVejOjtpAUtswB6y2QGvJ+kD+D0rjMNBPm/RwPxuuotW92fGJMqG4dnENOamNPL/Xqj7hfZdsConjvT+GeG0eM32mkTs0mYTRO3rPIzdVKnFcyEM6P1kB3Z1qsdknaInkiYmpVrlLvcJQUHEqUwxT9lIDWKvmHJP4+4mxDI1O0a87XiHV4MxEKuHOpqxypAAO2qB32/u1sh/t9iCrNnl2NORjU+R0PH9CfRGUYYjlOQ7hKMnDuVIwxz3+BZTpv5rVKo6m2t5gHq/f4ZejlxVya5wwmJDxvoYW+uE= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040450)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001)(93006095)(93001095)(6041248)(20161123555025)(20161123562025)(20161123564025)(20161123560025)(201703131423075)(201702281528075)(201703061421075)(6072148);SRVR:HE1PR0801MB2057;BCL:0;PCL:0;RULEID:;SRVR:HE1PR0801MB2057; X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB2057;4:raX2p+3/MrNzRprQ1/Mm6XCquHVQIYG2j8FAVUiChaWHpu0Q5wECsttr5hn6XfCZMGCl5Val+0OyfvLoi11W05UbR3X5wJ+S8sKnwOxxXV8FuvAvAsSsr6+WWVhK6mjHTNJ62xCE44V7+d3WRFrHlUvaUk+H29ErqkpwPgwaHpAuSDq2O0S+yFLsAo3re1XNFmU/UKxkdB2nUo65Pr1j3fxCE+1cBnvDs+N3gqQP1ksPVSe5/wyOzUPk2hXlFSucRfRUoW/8E0nDpf4zRyFgzladFnpY7MiiA5cxE6EpfV0qXya/n1Y+SfIDZSwn/IbAnofLAijZEudnbF3KxlUnckTy8860GecbJ71yKoBhLLqJ3WmtPzFZAHlUM9ETi1uFPmy9IzXGMgOmrZWSiITYKm5x9R0COE9wVqkQ4vt6APpHpCHbkGyhfJz021Cdz7u/OyAmq/yLqb2reYW3uJUCLTynH9DZN+Vatls8imEKjZesIhgdNm+l6z8TZfRTbi81pi4nCHobBs9WeCzallMrcxHQgoLZSx4nHqjRge0QQ32xiGxlBs9EPcFpGhCfMTcKLdn2ib0w3kdkjaf+M6F5+aGx5B8KbP5mRGr0qBxIe/KWPjnp5au01bcw1zEiievnTw0erOEkPl3YbUWkZq7C9wT3SGxo5EZrBbkh0RSfwgvtb7jjW0V6DSnS4SwWbm/ITh95/DAZebtuSSsQh+K9Bg== X-Forefront-PRVS: 0266491E90 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6009001)(6049001)(39830400002)(39450400003)(39400400002)(39410400002)(377424004)(24454002)(377454003)(31696002)(53936002)(31686004)(42186005)(23746002)(50466002)(54906002)(33646002)(6666003)(76176999)(54356999)(53546009)(50986999)(2950100002)(25786009)(77096006)(65826007)(6246003)(6486002)(90366009)(4326008)(5660300001)(229853002)(8676002)(2906002)(81166006)(189998001)(47776003)(4001350100001)(66066001)(230700001)(7736002)(3846002)(6116002)(305945005)(38730400002)(36756003)(83506001)(86362001);DIR:OUT;SFP:1102;SCL:1;SRVR:HE1PR0801MB2057;H:[172.16.25.12];FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?Windows-1252?Q?1;HE1PR0801MB2057;23:pQuioKKv/+h7uzOMsYp3Egmzl+ccAf2s889?= =?Windows-1252?Q?672C4XhQ7RYH0bYt2HjCVNp2I5zzqlw50Pu4HGBMswqE6YjHMafCDj1U?= =?Windows-1252?Q?b7NXMwwyR3QOc5szkfT/cQY8P3SiA5Fmh7/FhiVlXOF+83deuAV+mG0x?= =?Windows-1252?Q?r85iq1yjvYigrNBTncy37vH76ook8n6rH6bNcHByw9RNDPoZJk7x+1bI?= =?Windows-1252?Q?LwH0Tv5cwWOsTaH4Cm5acKUD88JP8nws3bJvObxjVhY8Rw90ZqC/u342?= =?Windows-1252?Q?wVP5OdKHvVsqhpAeNfdHR7NL8M2NvZlA1XlAoIWPG3sTlj6ihqPEyuKT?= =?Windows-1252?Q?ZvqYMp1x79RVaiLdu0EdvLJn8drt7CBU1q4Q69OQymFsGSLC247v66G/?= =?Windows-1252?Q?sB+Y2RJ7dos2NRc6Na5Ja1zlF92MkQYPo2DArneHuEUO3DMDqetGt6iq?= =?Windows-1252?Q?hcwOh7aj6oi3RDYPX3RdQ3qj8LEcVD5x0XxXQCyz5K0Sb69Mkxp3Pbwn?= =?Windows-1252?Q?vaTJarIBfwhJ/MTXKiX2qpBa2arkZioVxoxTtTviEtJ0cxJxnpIVAiir?= =?Windows-1252?Q?q+/Qg/6Hqx0TzvOeNWK8hhJ9FUr/qnwc3oyEaVSDrCrmYfCeUNgjcdGI?= =?Windows-1252?Q?VftrmPR4B1MTCv98s2TsJCh6UxSd5GdkYkyqPT88nDAZmxt0Xfbae7/B?= =?Windows-1252?Q?qY6nErH1Nx3BuD4OASzIXpshFZ+cTacBgKlOruJ8R3hBmKDRYLSleX8z?= =?Windows-1252?Q?AUW3YzF4WXQ73O9Bm0Hzd/yHloXX3iERHvhC+EG8mQoyhnzcN3gyfTEB?= =?Windows-1252?Q?oCiwo1nwudp6suDr02WNxYSDd80IOnQvHPJsh59vPFR7jwsarhOGgSI7?= =?Windows-1252?Q?WaXPpH7DTGZ+3xI5H1wfOGEVUGkSHsxGxffXOaA+G+VSRdZAZLo6RCW6?= =?Windows-1252?Q?/8YjnQJ5QSKyw/QdTW53bDWdpz/YFs5+At8o8lEKOBk6blC6Jt2FWBoQ?= =?Windows-1252?Q?Umu+hGq+/CoUTrRZ2upNQCNbYmOLToVFdmHsEUIhJtLjq6ML/HLg7gHo?= =?Windows-1252?Q?5akfWmawJPxY2lE/fFodTY452ZiG5ghZheV+fX9SUiGEDFDb8tXWNgsS?= =?Windows-1252?Q?8PhLcejx62gCG8jo9Mk2SJcYDNDThk9lPHlw6FR3l96VxLHVNhn1u/JP?= =?Windows-1252?Q?2HMwKw8Acxzz8EanJdrX1M2ivW5A6u9PjS8KfQNxbrDkZbO9WEkmUBYz?= =?Windows-1252?Q?3dGlW6xZ5E5x3Ak//uBAUGiz3ZSDDmMdTUbnu3oSZj1aCgFI/6DAr1NP?= =?Windows-1252?Q?Qnv0zTS4DEGmTnijqzD7ldIF1kA=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB2057;6:ztUe+f9dYu075GS0XGnx/AK4Vv4EDJUbPnxPE3z6aihuFwNn3/UaZE8Bcd/+IO2QXJrLD4w00R7znUdhHWj8AElb7u5fVydqKm4O4BNOqwEd4DyMNAjAIz5sd1ZNbweShrBoaBGw8Wk1N5+NroO+Tz6ZgM5koG8bwBnDsFp030m14PBw5oFvjYKDRpCVmdz/+JJqlOdGul3l2N/gxs1PFiES5KmbhfpqgzTAH/oCRB9074VSXWMnSRjnCtLOvbC5de+Mzu+gRlwDqVQA158qRn0tcbvg0PwdeJv5KWZp9HBDXWdPHKvWTqoOx2qNmjXHbOQ0G7HcwYuG9bWQzlQvUWl8xt9dKRIjRNjc4gUJZsbWm2aNbHQukmd9eLBH/uA9Z05f8HBrwMxllKv7NTFYqA==;5:IIj26g8ULzOEGn83Rf7a/K6VksWSOYze+JAOQp/Ozs7K/hNWQ6ThOh78ox8lsC5pn33vTwkCBJMi+/T2OXu2cTbVJsIcBDMU/2N4nRnGHGqnV2Hi+XKU1qgp07ATOzJ9GHq5bRCMHjwMmOhvEKc7RQ==;24:X6Wf7TzJiRGtzdsk+F/4oSvhtErih4nYxTE1IQEK9maF0K2f1ZbNjv4ljtV7F+w3gNvDy+QStjDkqdNUXr0AvMN7qAhAVTDspiNK3YF3A/Q= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB2057;7:1dcac5mPtYPFL9NECTnok5hLHeAZq7XVB8/Z7Y720D+opC3OjLwrVMVDcGkyuYOs35TLHkmKsRLS9asDAlA8rC68AaXMUBwGN2cd0s3vK+VcaHlYy3MBuzK/Qh1MnAX7zJMDXfLdILPCN5pXLfRvMGDfG3stv3K+7L5ScP3WLs7nigQF1qFcYFA8vnJCxiBqR6BSU1le/AVbFQ/zjHzfz/FhvbPlgDPS5PTP6q6US3KhqI2iRvuu7ii0CG6/+YYTMEy6AmUKcZV7hYxv6q7NOOQFmTCeCAJMD9Ex7dC7b1ICzblg0z4LTwiBGHfKiOT+8OnmH+E7dON3I/olTpjlsA==;20:Q2Ul9h7t0c4A7aBz/X4we41R9UbbA9eBJJEWaYQM+gluOn7tChUrSwwknSrB5ceCStMzSHqDlrTrzxQ2vvbDuwgEKKFpFctnuV5HTQ1wwG0ogah2tMuRxQeojeTZsrgc3TZhPQv2w65rZ4Rdz4N8jbC6P7mvxR/yjTtlQkFMlAU= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Apr 2017 12:36:45.7342 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0801MB2057 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 04/03/2017 03:37 PM, Andrey Ryabinin wrote: > > > On 04/03/2017 11:47 AM, Michal Hocko wrote: >> On Fri 31-03-17 10:00:30, Shakeel Butt wrote: >>> On Fri, Mar 31, 2017 at 8:30 AM, Andrey Ryabinin >>> wrote: >>>> zswap_frontswap_store() is called during memory reclaim from >>>> __frontswap_store() from swap_writepage() from shrink_page_list(). >>>> This may happen in NOFS context, thus zswap shouldn't use __GFP_FS, >>>> otherwise we may renter into fs code and deadlock. >>>> zswap_frontswap_store() also shouldn't use __GFP_IO to avoid recursion >>>> into itself. >>>> >>> >>> Is it possible to enter fs code (or IO) from zswap_frontswap_store() >>> other than recursive memory reclaim? However recursive memory reclaim >>> is protected through PF_MEMALLOC task flag. The change seems fine but >>> IMHO reasoning needs an update. Adding Michal for expert opinion. >> >> Yes this is true. > > Actually, no. I think we have a bug in allocator which may lead to recursive direct reclaim. > > E.g. for costly order allocations (or order > 0 && ac->migratetype != MIGRATE_MOVABLE) > with __GFP_NOMEMALLOC (gfp_pfmemalloc_allowed() returns false) > __alloc_pages_slowpath() may call __alloc_pages_direct_compact() and unconditionally clear PF_MEMALLOC: > > __alloc_pages_direct_compact(): > ... > current->flags |= PF_MEMALLOC; > *compact_result = try_to_compact_pages(gfp_mask, order, alloc_flags, ac, > prio); > current->flags &= ~PF_MEMALLOC; > > > > And later in __alloc_pages_slowpath(): > > /* Avoid recursion of direct reclaim */ > if (current->flags & PF_MEMALLOC) <=== false > goto nopage; > > /* Try direct reclaim and then allocating */ > page = __alloc_pages_direct_reclaim(gfp_mask, order, alloc_flags, ac, > &did_some_progress); > Seems it was broken by a8161d1ed6098506303c65b3701dedba876df42a Author: Vlastimil Babka Date: Thu Jul 28 15:49:19 2016 -0700 mm, page_alloc: restructure direct compaction handling in slowpath