From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752715AbdDCMfs (ORCPT ); Mon, 3 Apr 2017 08:35:48 -0400 Received: from mail-ve1eur01on0126.outbound.protection.outlook.com ([104.47.1.126]:29856 "EHLO EUR01-VE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752455AbdDCMfq (ORCPT ); Mon, 3 Apr 2017 08:35:46 -0400 Authentication-Results: linux-foundation.org; dkim=none (message not signed) header.d=none;linux-foundation.org; 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 From: Andrey Ryabinin Message-ID: Date: Mon, 3 Apr 2017 15:37:07 +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: <20170403084729.GG24661@dhcp22.suse.cz> Content-Type: text/plain; charset="windows-1252" Content-Transfer-Encoding: 7bit X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: AM4PR0701CA0008.eurprd07.prod.outlook.com (10.165.102.18) To VI1PR0801MB2061.eurprd08.prod.outlook.com (10.173.74.146) X-MS-Office365-Filtering-Correlation-Id: c6a095e6-689f-4275-4bf1-08d47a8df265 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(201703131423075)(201703031133081);SRVR:VI1PR0801MB2061; X-Microsoft-Exchange-Diagnostics: 1;VI1PR0801MB2061;3:mlV47llD/X6kxDwdZ8uVX+xRqHkR2BRhXYxWw6Ua2NRAjOo0dr5eYf3YZMlB6NeM3t6y6cNxLi/9tIHcSJOJNwl4bFUVRq8GIS1h0gAPMB/Sdzyf+Pl1ryB1rm2J2v9sgSMVf/Lo4bS3h8fXtrHvfM5pcd3vaJTw+UE61r6a3cOH7dvNRzWt6gaolElCyPr8upx3uHQpzfq8uUx20USDbCacHPy+hEjuDS9QoL8LVzIxIlnW76zRDkPvZbwYQhXqVRXDMk0uTKut7I8jt0rmY0NnGTtV2DSO/3K2Ee5rDH3j3R2IydhZsP2WOJrIiislitj85enj5tt1WMAODnluTw==;25:0e91HGT2sCRMoP4/0Uaj7ibLBruD7kWrl+RoneJDcjrx4qDZhxXv/pJpfELzUpsGHZTTjf5D/szuBaZMjrF/6VWSIheeRK4DHlmQlOVHaxKMfht3bRfGijQU6gIKx56rpsFJDYdeLZo0AClRbPUb3pYK8kYkPHYP/wfgyiIItVjfm8aC9bT0TCRHRxMBUpxPZf8bX+yVo2OrgdrwepJGxU6Ttwp8E/g5Ep39mjeyOuDHUK4LJ9RdaLi1I7vsuFtrzrTKSQyPqo+fIjRbjmi153J6ZAzdF5MkpWkTz2qYojBw1i31b+CUz0MKbVFEZwZeybxR6QTna526JKxk9J3riIHnz7F5VC8Tu0ncGBBP37a/WRPkI7CT+LOpkzNK9pyBdBMPOQ6M3ZlCqykuWN0+Dlufan6ceh+YQJYDtLYT627G4YAWui2GIngJfduVtvkqoj83BL6INNkOsy5vzo9qHA== X-Microsoft-Exchange-Diagnostics: 1;VI1PR0801MB2061;31:L73sTmah1/4obCjedczYGI3BNy0zmqZWyQ1xH1njCxaE88THp5rce+XYi4HiK3mQ+7WZV0FFZzJPiffkYFg6WPf5sG+qekCLK4NGUikujpNoeLbap0DqGUkjSwjhELmMvtHYcpFyVc9BuK1bzfIbIKFlUp+kylSBz9EmUCovrQ9NQZwQx0wN8ouCGl5SMh7dvH5RIC4CuY8PXyGJ2+hsA0IwypAKv8WC/aAjOb/1oq/GVWUJPUgGvNUl0ObVaizTrifIiLA6pZdbjm/SjBtgdnRkyI9wCdZgA1wRkGuAfzs=;20:17A8LcaWTH986AY5UM1LLYQNQaZcDzuDkfWAfRBSkTK3Ana86YbWGTXx6GmyYtBJGXYUXDasqD6epbec2UzMD146yPhH0+7WoXqzVwMISygNtosuiMWmuYLbyedL67nh1bVCYK54mqhAnYfyHQrAnJ/ATVToA2RCKix9F7wgjO/y9g/DSIP1usUc2Fa2N1aue0yjht3OFx0YT46fBibuRPYHVvsdP09W0q4CkKd4O2qWttplYiZz9DfvbUa4vvYI/aUDu04PFUrMmwidG91OWZL/k0qn65Km9Yvuw1BoAaL6nzSUGehtFFRmEdupbTQ4AI/FuT2clL24wajwAUL6cl1571lSRZPU2VkL/dy7w0gmsvp87iOsr+Vp0rRxsXOb3OxuT7IzLN9ShCIGevtKJ4e3PyVZxiBbmv+05ojQTO4= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040450)(601004)(2401047)(5005006)(8121501046)(93006095)(93001095)(3002001)(10201501046)(6041248)(20161123564025)(20161123562025)(20161123560025)(20161123555025)(201703131423075)(201702281528075)(201703061421075)(6072148);SRVR:VI1PR0801MB2061;BCL:0;PCL:0;RULEID:;SRVR:VI1PR0801MB2061; X-Microsoft-Exchange-Diagnostics: 1;VI1PR0801MB2061;4:0LFvqWg6p9jgP6S+DdUCbUo/7+LFPrbY8ToD/yvJz+bT+OzyL90tj+tyiBdnbV0mk99RV6f0oIFbHgR4GEztPsLsbPdRtNc1WwB0jtLcffToapSczkOPhi8ptZwnia7j+pfc5lmplrAqzG+su1A+CJgniPfPispFF7qApBcLv8SF964lcde06kRnVGHLscttXGoFIJ60baxgSMfkmXuHdCDWmeQ/BIHabCoViLSEaUFvXs8010FwrMTId73s/OvzcedWgMujudEKlWQiKywgX7urxGvBLaC96Jop1+C75571qt+wNdx1NJGiv/XytKxsrz+UWr90cNOXlNGUc/fIgfERJG1NUAn5rH/k4E2ZiYLiUYO2B+8cnoKR//W+Q2zi7/HaJITjTsSb2kDwdNBQ3eWR2ZedIxRH/y1i1UONq6Lwf2Na0QA5TNr1Ds9N2hgeAMtmZ3kROHiGqOib/zilYVvwEaYoV9SgHH1LS9M935iitlj524KyZlKmY/cq+mNf9oAajz4Qgf4CR4FrXaj0YXA/usEomCQM8AElKlAnImwKQgegG/seBXm5Dd1EZSVSZ6zhW1twdP5C8u34Nzfrsn9ERyTXX7qjV65MMnO9He84GLa7yAoV9wtYRcee44ds08qw7ZNmmfLD3x2md2Q0PlCmdQ4PrQBPu0IWPm0T7idkDEjzGgJIMq0j7gJV2mxBlz/ablhwGW5RipcAI319Fg== X-Forefront-PRVS: 0266491E90 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6009001)(6049001)(39830400002)(39400400002)(39410400002)(39450400003)(377454003)(377424004)(24454002)(2906002)(230700001)(77096006)(6486002)(50986999)(6116002)(305945005)(50466002)(90366009)(25786009)(81166006)(86362001)(33646002)(23746002)(7736002)(54356999)(2950100002)(76176999)(83506001)(65826007)(53546009)(36756003)(6666003)(31696002)(3846002)(189998001)(6246003)(53936002)(42186005)(66066001)(47776003)(5660300001)(4001350100001)(4326008)(38730400002)(54906002)(229853002)(8676002)(31686004);DIR:OUT;SFP:1102;SCL:1;SRVR:VI1PR0801MB2061;H:[172.16.25.12];FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?Windows-1252?Q?1;VI1PR0801MB2061;23:w9sksBzXIuF7+bh1Ldcf+eIrcpl0rGnFgW/?= =?Windows-1252?Q?PU2Mne0YBEBW9tSFu2qRSDxk/i5LAexF3Yqp2y+xoVIQsCwSOmuxLR9e?= =?Windows-1252?Q?jDypAr3sC9IIcJ9r7cjOeG9BXOr1azKcRA2PIoMDk1WhQrpGWDUHWU3L?= =?Windows-1252?Q?Ej/qw+xP+69jjS9M65POw5s2YFVY0Ul0kd0Im3psf/Jc77t/ErJ65UIR?= =?Windows-1252?Q?JCv68W8eHUNoapluMBEi9n6GR61krhDN9JQK5sfxzBYFUK+oaIjJ2+vJ?= =?Windows-1252?Q?TuWJzqTWCVCJ3sFCIkPfQnUy9H5SmU/dz7YhBwVmkPOlorhJyUNH528X?= =?Windows-1252?Q?SWYTF2iOhA9RMo5S+2o3u3PZKABH8a7o9Jgn+IKcE9dWluhUZgr5PtBO?= =?Windows-1252?Q?gWDYYHEexh7je1urRj3wleyKGpas2Rz0J5zTSM8W0wpa2q6YhIdaoNC6?= =?Windows-1252?Q?iIHShLY6YGxy4GNMEjmK1rLC+9sG47gZrVtq43n9SKGcVyytwUDUIs+g?= =?Windows-1252?Q?3tAlfhYSWb3g+zag+yqyNJJCqdXFcgQ52+9aN9N2H3mIBdP6U6REDSzz?= =?Windows-1252?Q?Z/vIzY7uLu6QyqvvMFJ4fJX4Ups8154OmBtV+B2c40tlWKm0+TGH+WTZ?= =?Windows-1252?Q?I2VRzEAhjXPtTzgJ3mBIQu+I4w0pbBPsrC03X6e0gfn24Z3WvXqtt2JS?= =?Windows-1252?Q?eSiIsKM+4eYcrIPpN3LFSpwKNIUq99P5x8gndlKjdqD2QfckZ+QQUovU?= =?Windows-1252?Q?wyPCj4h2KXs3MIQuQFHD+qReHrWE0pKqiDX0cWh3fkFM32+jBGupBghy?= =?Windows-1252?Q?NxMSU1pPUsNBnuLYuX9rRewN/xR8+YGEse3L3AE2BfjXznnl4Wy2sZ7B?= =?Windows-1252?Q?3WfTEky+HSdD0O/hlYxp28P5PeZrdK89p4crUdrDB5GNPLqn4dQU0SCI?= =?Windows-1252?Q?egi/fDfVdUk6m3ErQr/lFqBAdN5t9jZqoti2l6yDzmeavKeLcoHi9YRI?= =?Windows-1252?Q?A0gg41pfft8oVCOoswqnDlvNflxLp2dH2KRpU8nZYmyFFYKaEgD/daPG?= =?Windows-1252?Q?/UkhpWniRkr1cHCRzxm4lTvjsLZ4iNxmsn3Lc99j6UMJaLo+dcrcDvZR?= =?Windows-1252?Q?joscpkH3U+uT9xeMboaWYtQQBMyL7sUxor3NbvINhubis2sPjnlGDcD3?= =?Windows-1252?Q?yZEVr2UYg1iz6ppsivPYIhpdKk1PXmUdgFJuBnqhso4+dnYTKssdR9lS?= =?Windows-1252?Q?yo3CeM17mg6IhWoa//P/MiCKu+xVOKoGfDm1oIOGUrzl7T4PdLEO+auc?= =?Windows-1252?Q?scQtIeNUazSvWGW8iDLPxHLCi9Q=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1;VI1PR0801MB2061;6:UZGXThjitD6AbsQGpSdYN11b/86iS/JujrZpYHoBNfjJ+anE9N0qhDzyOKc2Ov8wBlsHpOAsGu1r3CmPhQM77ag5uhlCPzQzM9Fvmm4zdP1KiDjImFNloBPfx8dJC1sFaau4mCUD7PHLflUoptOwvoKMOUeHgLB+vBv583GCV2BKtEi8w1JbqmEX3tUmoJG+KYAjJZqUVReR/I3se0WAeiuUxiF3RVI/O67LHAE09U1IgFdeIes0t0dhRctTGDgKrsy6jUEJMGUqrsDLboASUvd5lqr1nH82wawd8SSxRFXQZ3XRyL6hz3vRjxcsdvwSyiBrADuhAGGtXdhqyTDXdlL7dz8ddD7iOwvCwDtUybyWypfUyDZ7/JoDhJSwQRVWMqZbCkzMGOIAnGLYruJFLg==;5:2fbYDI+MW7sCDQMBR8EqaDim3RIbe/Z/pJqYLHVMZkEzTzCZE8WzflNOt3bigz5uPDgUU2U6AdirpbBFXfRdoIqsujUkSNs7HVLkDtV6/PXO5a4Ox2YRqIRxA8Yrlati86Z5rytb3w877tW61nGiuA==;24:THSnDJxahjXuOuaTLDKLEd0Eetsgw7Y0F82YnezH80JpAdf9Ug12ePjzNp+Uzb+Y1/v4ZwJccCsEC5ijjeB8yUMuhakFA6WoiFOEeXJoSsI= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;VI1PR0801MB2061;7:yVPb/6hc8AiKJRgyHz8q7zZLdoLqrhVztZKHtJhV0eMGiiyRHxstILTy5ieyT8eN9T0xG6x8dLp2Y6xfCEWMgnzQV0vVTSCFCzKo48krjoR7aNn98HMZYtgaor9eAivm0lKrAQU87WXDLQeNwSTUTxiM0WyhuHjEzqZnCYuHrOvQ0gT28Kqin8AVQ0BcH/8Is65ncWlVzFQi+r6pcAsGbZf9iSJGzYPuh13v3PAzSqLWWjx2ivVkLVgelsfM1MI86WdE/cxsGt+fA7+w95QcA5x6p04dgzRmOv14diztaFXN8CXrHwym1rJfv2F2t8gizMNEtXVsgUBLFa3LxvOIDA==;20:XXZkttwtbI/NRytacO6dvwpQ/3UZoU275uiDiQUPh4XarrswBA3V37fPcQGRgNnqtUkg2KBUT5Va9jdQ9ZNbZCQw1hAzUQiwu3kJjjnSmjSiJ30mQRFvK3NkdJ8mekd+v7NXkalVoHonTNa+Fiw0jCb5SNtejLJJuuBz11OqqeU= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Apr 2017 12:35:43.5399 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0801MB2061 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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);