From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932545AbcEXMYL (ORCPT ); Tue, 24 May 2016 08:24:11 -0400 Received: from mail-am1on0111.outbound.protection.outlook.com ([157.56.112.111]:28860 "EHLO emea01-am1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S932522AbcEXMYJ (ORCPT ); Tue, 24 May 2016 08:24:09 -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; From: Vladimir Davydov To: Andrew Morton CC: Michal Hocko , Tetsuo Handa , David Rientjes , Johannes Weiner , , Subject: [PATCH] mm: oom_kill_process: do not abort if the victim is exiting Date: Tue, 24 May 2016 15:24:02 +0300 Message-ID: <1464092642-10363-1-git-send-email-vdavydov@virtuozzo.com> X-Mailer: git-send-email 2.1.4 MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [195.214.232.10] X-ClientProxiedBy: AM5PR0901CA0009.eurprd09.prod.outlook.com (2603:10a6:203:16::19) To AM3PR08MB0579.eurprd08.prod.outlook.com (2a01:111:e400:c408::13) X-MS-Office365-Filtering-Correlation-Id: 9e97bbf8-6850-47f1-4a77-08d383ce4c78 X-Microsoft-Exchange-Diagnostics: 1;AM3PR08MB0579;2:yEZkljBCWi4vcKscdQYzWLhYSgyxsrO3H+46rJG0D7rm7J6nKt3xGTfx9hWnT7ywt3QLsay3gu6r0HQqD44KeIDw7t0tAjAoee/JMOcWzNd8M6SAJ+isiGKuFJtJJl5oUdkY0s0LC7Hj6SrsQOFqrpbpWYbRb404fjmzDWmEgpPd8wiKT9YhLozP2+yM4neK;3:YJJpUCih+dvSt1RQOLrB7f4dzHPbS7+XtWwwph3l4Xf6VMP4JZenIO54DvbSM5hHhsGV67Kl9ak1XnqikBzTWVz/ep/J4Dxnad6KW1oFHkkF1140gisYufn2TnLYC1cv X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:AM3PR08MB0579; X-Microsoft-Exchange-Diagnostics: 1;AM3PR08MB0579;25:DMSQdpaqOQalbD2NXBD3IdktycIzHa/TAop+yxUSQAmFKr3VevZlhihDLkuVKNpZsq1W6swmOSRO2HTArCqWTTzFTxcWj6IsztjlneTxNsyosrGutxqBmdH+UtVGpu0p5QoyX2gdXkGzwNpdChDGJkdd1vgdq2kfh/dRJNnmwEq9QIIYTVDL2H9NHYQjGhNxbC8bqbr1A37ieeDVjDDWDzaN08vysoE3zP2khJS06ydJ2Ks9CrqSVKc4xZ/F1OZ1E2LQm4p4UyWsz18VTG6tSkoQvLrn1fUGYhFKKDZTgRfOH9Cu+1B35e2zghooduttNRiByT//IRs9JMYMdMLynvtjGRWfvrmw5ZWmoo5ZRegr/OrOoQ99cN7AWZ4q/jpP+Zll3iqGlbbC3oS1vCAsctxGGD0cIkwL7Ixo7xZcPvU7OnMslm7Tsj1Id46USfCcWiS7rfHznW+OAbmN2X4X8WD+DXiRLFM6in7OZVWt3Sy6NCxZfcYWZYFrTFcUSVT6BUoid+sYRj+1ceUyQWpqFkZ4r5gmidtQgYz1qNsw9cqM+PG7uUSgQsXXiTjZvBB/jWlmez3GhiRv0azq9mQyDbioEBYTXHXZmIiUJL1NSDO0tzWNoKqkZcsPFCKACa8ljR/zxjTdZjLm7+uXvQ0T9nQRUJaYbV9f3KF2dqQXhamcKb3diN5wT2Cbx0GBdHs/WkuWNlMrWNIuMn7MkP9k9w== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040130)(601004)(2401047)(8121501046)(5005006)(3002001)(10201501046)(6041072)(6043046);SRVR:AM3PR08MB0579;BCL:0;PCL:0;RULEID:;SRVR:AM3PR08MB0579; X-Microsoft-Exchange-Diagnostics: 1;AM3PR08MB0579;4:o05x9mkbAcpvBsf5hUCKbMGGtEm11vxMZgQmqeEDAGKOicDAqA6JnKgyWNZcPVTJGyrPrT/g6oTDJrKGUaSbrnEZFGEVStGO1OLThmg7MVkbh5fhOOis0vTCipwbiOLdrJfMffX5UMaCyICFHp7jiOptWIkXmEd+N/p0AX8x0MgcBYkTMzW32RtMjgpuNkIxjCWfyEnK7fFput2xUh2bds3VQSDCKZeBSuiRWxQ1D8Qy9K96Ta0YUI15DHJJVISVrKVqeI4087vfiHJq3HiFY9s6wcnq402wk/+Zp3nhQT9K0OrPBY+Ki5mQlZAOxh2cPxKqKdn+9ZZWtIGZeFelcT86eKobNEQRwgwB+EOyzgFpXBkp2BpZoQnrlfpw4MH96cE4f7QT2HWiurbzMzKqDXu1ExGTa9SDo6Q1JSYlids= X-Forefront-PRVS: 09525C61DB X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6009001)(50466002)(5004730100002)(48376002)(4326007)(586003)(6116002)(3846002)(2906002)(50226002)(42186005)(5003940100001)(80792005)(189998001)(110136002)(19580395003)(19580405001)(47776003)(229853001)(33646002)(50986999)(66066001)(86362001)(81166006)(8676002)(5008740100001)(92566002)(36756003);DIR:OUT;SFP:1102;SCL:1;SRVR:AM3PR08MB0579;H:virtuozzo.com;FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;AM3PR08MB0579;23:NBhW6U+zSfeHE7o6ihC+hZjpEiat3sOfPUvSNRIuF/uCSJVtjzG4D5qO/8XZl5fejGTv8iY5XHNyBQ8WcEIMBaETV1JnKiifxsi4TtuDSABB0ZRakZpaHJItqpEBqgK3ybVuUCYegmhV/Wfy4w6II8cvlmfiB5PXgBXs/J21yDh+HWu8sZS3K/pmHyZwkkJBiN7moTGYI5F5OcZDA5pCMPqW5fmm7zmnQz0pJfh4WvmSYoAAdXv20ZuMvJyatd9ShFQCoyzDM6/PsBBomXYSp8OvbgUoHa5/3ZPOPtfSTpMie8wSnxIc35ekveDQrPFpXeUC4QMpiHo7aSy5zzXzBXm66fo4Rx4sDPoQNLJiWWAoSwXK8m+3bRJDalzQjKT7BwSLmbn6WKlJNTTFhDYiXHL/OAqBJvg5JRKqywu4XJ5G2F9Q+nWKg41+lyjGqA/LFz5+nJDYimaHOJDNYJOKc9GUw24tF7adbYfkPyjOK2B9C58v37BuK/NqItZ6qotuqT3Hj7eEcMGULVNo5RQG3kDvh+w1vyldSiSuituYQekA4rdA9x1iWc/KmF7HCUo35fQ69xDywfbS/XIryG/EEdYzaT5Utb2+hrt1h6DI3Zvw2PKb2wP3o68MHnGz2Y93IxnEyJQ09M1I5tsLH+kUWEYDdZJ60A7CvHcxZSba8Dyb9pWJIZ2HSCYNdaRcZCMGyW8MJoga9tXE1JL31k13riJx06J7j+Ew+7GLbqyFMEgD2E+p6h0WIDWGExx0s9NkrVlWMih6K52i8pMNRanGc+Q3feLJpreDM8VyWqIt9kc+hfg5bOEnreZoqJ8zr3KL X-Microsoft-Exchange-Diagnostics: 1;AM3PR08MB0579;5:q5+2I3pVSAdny42mIewMx3MLcSd1mmmpV93Cna41a6fvGAB3KOkbQbvzcWfj0f9cu2xTh9AclNdkk2HJ5aMnSjbNWTfV+7iCmH5UoiS+8YDbef4Ni8bxsoVCMIDtJrjSsyNNVinhQKqzHOn6HL2lpA==;24:MwMTpshtPKh2YG0XMoigevONecVZ/wz5wBx2Sa6H1Bvqm+AQ30CcBToQpQHDuNdMYUWYSIJvlSVpurxuEXMH7WmiALEJTXXgPJJni6fwHYI=;7:BVllmDMMelOXQf6Nlg5FCZ51U2FKfKJpffXY3d3OhLewQezFYs9dlbYbDve0VpvMfiOP7ANAH6YOzVHSbRaF8WPJ6GuBfR5ww1gJ71xMzrt+nJT9tdY+lA29BZWd/OWPcxr9JDosX3J3hW7B34AJDdYpPpUFrkBxjRKKY0/frFwpzEJ0qU5pUZlC42NVz/jN;20:w/qeTkf6zYMJIf71gOoolIS/vYMTSCvhZMlid32BlpFXZIeGu5rV3QSdDM2/pHIpG35N7Z08o6FvcHclTemz8lX7B6+Xyxn3brWi0bjp87CD2WGgCrkmxIwiTsOYFOzBDvxXMRWgrTy99ys1iRhhRpvKbrN01e3fiT21z9tNw04= SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 May 2016 12:24:05.2106 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM3PR08MB0579 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org After selecting an oom victim, we first check if it's already exiting and if it is, we don't bother killing tasks sharing its mm. We do try to reap its mm though, but we abort if any of the processes sharing it is still alive. This might result in oom deadlock if an exiting task got stuck trying to acquire a lock held by another task sharing the same mm which needs memory to continue: if oom killer happens to keep selecting the stuck task, we won't even try to kill other processes or reap the mm. The check in question was first introduced by commit 50ec3bbffbe8 ("oom: handle current exiting"). Initially it worked in conjunction with another check in select_bad_process() which forced selecting exiting task. The goal of that patch was selecting the current task on oom if it was exiting. Now, we select the current task if it's exiting or was killed anyway. And the check in select_bad_process() was removed by commit 6a618957ad17 ("mm: oom_kill: don't ignore oom score on exiting tasks"), because it prevented oom reaper. This just makes the remaining hunk in oom_kill_process pointless. The only possible use of this check is avoiding a warning if oom killer happens to select a dying process. This seems to be very unlikely, because we should have spent a fair amount of time in reclaimer trying to free some memory by the time we get to oom, so if the victim turns out to be exiting, it is likely because of it is stuck on some lock. And even if it is not, the check is racy anyway, because the warning is still printed if the victim had managed to release its mm by the time we entered oom_kill_process. So let's zap it to clean up the code. Signed-off-by: Vladimir Davydov --- mm/oom_kill.c | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/mm/oom_kill.c b/mm/oom_kill.c index 03bf7a472296..66044153209e 100644 --- a/mm/oom_kill.c +++ b/mm/oom_kill.c @@ -747,20 +747,6 @@ void oom_kill_process(struct oom_control *oc, struct task_struct *p, DEFAULT_RATELIMIT_BURST); bool can_oom_reap = true; - /* - * If the task is already exiting, don't alarm the sysadmin or kill - * its children or threads, just set TIF_MEMDIE so it can die quickly - */ - task_lock(p); - if (p->mm && task_will_free_mem(p)) { - mark_oom_victim(p); - try_oom_reaper(p); - task_unlock(p); - put_task_struct(p); - return; - } - task_unlock(p); - if (__ratelimit(&oom_rs)) dump_header(oc, p, memcg); -- 2.1.4