From patchwork Fri Jan 14 22:08:27 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Morton X-Patchwork-Id: 12714126 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5DD7AC433F5 for ; Fri, 14 Jan 2022 22:08:34 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id ECF6A6B0149; Fri, 14 Jan 2022 17:08:33 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id E7E0D6B014B; Fri, 14 Jan 2022 17:08:33 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id D949B6B014C; Fri, 14 Jan 2022 17:08:33 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0121.hostedemail.com [216.40.44.121]) by kanga.kvack.org (Postfix) with ESMTP id CB2916B0149 for ; Fri, 14 Jan 2022 17:08:33 -0500 (EST) Received: from smtpin20.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay03.hostedemail.com (Postfix) with ESMTP id 9769E80D1AB9 for ; Fri, 14 Jan 2022 22:08:33 +0000 (UTC) X-FDA: 79030282506.20.F3092A8 Received: from sin.source.kernel.org (sin.source.kernel.org [145.40.73.55]) by imf28.hostedemail.com (Postfix) with ESMTP id 04F94C000D for ; Fri, 14 Jan 2022 22:08:32 +0000 (UTC) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sin.source.kernel.org (Postfix) with ESMTPS id 79E18CE2497; Fri, 14 Jan 2022 22:08:30 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4AA55C36AEC; Fri, 14 Jan 2022 22:08:28 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linux-foundation.org; s=korg; t=1642198108; bh=sUu9jleLZuzhuolkSsvQLjphRcZDYQ9uRg1a5lDaPQM=; h=Date:From:To:Subject:In-Reply-To:From; b=r6xB0c2Ld8gkn8X004MhHiXFevR5Olg2Lb2r326uQ3ftFuJBy2nO24Rz+2sdDa8VB WNk2ic5TtvhHuGMT4Rc1KXUStJOyZliVar2WqdfcH47g+fbo3Rlbw1dHV0WaX8cssj whF0a8rgcJxH8xj1eb/zU4mLDMs+oeRLYO5tosfs= Date: Fri, 14 Jan 2022 14:08:27 -0800 From: Andrew Morton To: akpm@linux-foundation.org, jannh@google.com, linux-mm@kvack.org, mhocko@suse.com, mm-commits@vger.kernel.org, rientjes@google.com, torvalds@linux-foundation.org Subject: [patch 100/146] mm, oom: OOM sysrq should always kill a process Message-ID: <20220114220827.OSbTBO1rc%akpm@linux-foundation.org> In-Reply-To: <20220114140222.6b14f0061194d3200000c52d@linux-foundation.org> User-Agent: s-nail v14.8.16 X-Rspamd-Queue-Id: 04F94C000D X-Stat-Signature: beo5tzzcri8d6ybjzi8fhchsocz4ki6j Authentication-Results: imf28.hostedemail.com; dkim=pass header.d=linux-foundation.org header.s=korg header.b=r6xB0c2L; dmarc=none; spf=pass (imf28.hostedemail.com: domain of akpm@linux-foundation.org designates 145.40.73.55 as permitted sender) smtp.mailfrom=akpm@linux-foundation.org X-Rspamd-Server: rspam02 X-HE-Tag: 1642198112-411827 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: From: Jann Horn Subject: mm, oom: OOM sysrq should always kill a process The OOM kill sysrq (alt+sysrq+F) should allow the user to kill the process with the highest OOM badness with a single execution. However, at the moment, the OOM kill can bail out if an OOM notifier (e.g. the i915 one) says that it reclaimed a tiny amount of memory from somewhere. That's probably not what the user wants, so skip the bailout if the OOM was triggered via sysrq. Link: https://lkml.kernel.org/r/20220106102605.635656-1-jannh@google.com Signed-off-by: Jann Horn Acked-by: Michal Hocko Acked-by: David Rientjes Signed-off-by: Andrew Morton --- mm/oom_kill.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --- a/mm/oom_kill.c~mm-oom-oom-sysrq-should-always-kill-a-process +++ a/mm/oom_kill.c @@ -1058,7 +1058,7 @@ bool out_of_memory(struct oom_control *o if (!is_memcg_oom(oc)) { blocking_notifier_call_chain(&oom_notify_list, 0, &freed); - if (freed > 0) + if (freed > 0 && !is_sysrq_oom(oc)) /* Got some memory back in the last second. */ return true; }