From mboxrd@z Thu Jan 1 00:00:00 1970 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 mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 34D89C433EF for ; Thu, 11 Nov 2021 17:15:54 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 8F56D61241 for ; Thu, 11 Nov 2021 17:15:53 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 8F56D61241 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=intel.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=kvack.org Received: by kanga.kvack.org (Postfix) id D63366B006C; Thu, 11 Nov 2021 12:15:52 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id CEBD66B0071; Thu, 11 Nov 2021 12:15:52 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B8C5A6B0072; Thu, 11 Nov 2021 12:15:52 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0112.hostedemail.com [216.40.44.112]) by kanga.kvack.org (Postfix) with ESMTP id A2DA46B006C for ; Thu, 11 Nov 2021 12:15:52 -0500 (EST) Received: from smtpin26.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay04.hostedemail.com (Postfix) with ESMTP id 5C93D853EF for ; Thu, 11 Nov 2021 17:15:52 +0000 (UTC) X-FDA: 78797301702.26.DC335FC Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by imf24.hostedemail.com (Postfix) with ESMTP id 10513B000099 for ; Thu, 11 Nov 2021 17:15:50 +0000 (UTC) X-IronPort-AV: E=McAfee;i="6200,9189,10165"; a="230432146" X-IronPort-AV: E=Sophos;i="5.87,226,1631602800"; d="gz'50?scan'50,208,50";a="230432146" Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Nov 2021 09:15:49 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.87,226,1631602800"; d="gz'50?scan'50,208,50";a="534472780" Received: from lkp-server02.sh.intel.com (HELO c20d8bc80006) ([10.239.97.151]) by orsmga001.jf.intel.com with ESMTP; 11 Nov 2021 09:15:45 -0800 Received: from kbuild by c20d8bc80006 with local (Exim 4.92) (envelope-from ) id 1mlDfs-000Gmy-Su; Thu, 11 Nov 2021 17:15:44 +0000 Date: Fri, 12 Nov 2021 01:15:18 +0800 From: kernel test robot To: Mina Almasry Cc: kbuild-all@lists.01.org, Mina Almasry , Michal Hocko , Theodore Ts'o , Greg Thelen , Shakeel Butt , Andrew Morton , Linux Memory Management List , Hugh Dickins , Roman Gushchin , Dave Chinner Subject: Re: [PATCH v2 2/4] mm/oom: handle remote ooms Message-ID: <202111120134.IieR2mue-lkp@intel.com> References: <20211110211951.3730787-3-almasrymina@google.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="FL5UXtIhxfXey3p5" Content-Disposition: inline In-Reply-To: <20211110211951.3730787-3-almasrymina@google.com> User-Agent: Mutt/1.10.1 (2018-07-13) X-Rspamd-Server: rspam01 X-Rspamd-Queue-Id: 10513B000099 X-Stat-Signature: y3xgs3segnz3mhrjb4jfycwh8s6pqp6s Authentication-Results: imf24.hostedemail.com; dkim=none; spf=none (imf24.hostedemail.com: domain of lkp@intel.com has no SPF policy when checking 192.55.52.93) smtp.mailfrom=lkp@intel.com; dmarc=fail reason="No valid SPF, No valid DKIM" header.from=intel.com (policy=none) X-HE-Tag: 1636650950-800915 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: --FL5UXtIhxfXey3p5 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Hi Mina, Thank you for the patch! Yet something to improve: [auto build test ERROR on hnaz-mm/master] url: https://github.com/0day-ci/linux/commits/Mina-Almasry/mm-shmem-support-deterministic-charging-of-tmpfs/20211111-062122 base: https://github.com/hnaz/linux-mm master config: um-i386_defconfig (attached as .config) compiler: gcc-9 (Debian 9.3.0-22) 9.3.0 reproduce (this is a W=1 build): # https://github.com/0day-ci/linux/commit/452a4d110272eb39892e4be30526411c7a5cb2e3 git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Mina-Almasry/mm-shmem-support-deterministic-charging-of-tmpfs/20211111-062122 git checkout 452a4d110272eb39892e4be30526411c7a5cb2e3 # save the attached .config to linux build tree mkdir build_dir make W=1 O=build_dir ARCH=um SUBARCH=i386 SHELL=/bin/bash If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot All errors (new ones prefixed by >>): mm/oom_kill.c: In function 'out_of_memory': >> mm/oom_kill.c:1116:15: error: 'struct task_struct' has no member named 'in_user_fault' 1116 | if (current->in_user_fault && | ^~ vim +1116 mm/oom_kill.c 1044 1045 /** 1046 * out_of_memory - kill the "best" process when we run out of memory 1047 * @oc: pointer to struct oom_control 1048 * 1049 * If we run out of memory, we have the choice between either 1050 * killing a random task (bad), letting the system crash (worse) 1051 * OR try to be smart about which process to kill. Note that we 1052 * don't have to be perfect here, we just have to be good. 1053 */ 1054 bool out_of_memory(struct oom_control *oc) 1055 { 1056 unsigned long freed = 0; 1057 1058 if (oom_killer_disabled) 1059 return false; 1060 1061 if (!is_memcg_oom(oc)) { 1062 blocking_notifier_call_chain(&oom_notify_list, 0, &freed); 1063 if (freed > 0) 1064 /* Got some memory back in the last second. */ 1065 return true; 1066 } 1067 1068 /* 1069 * If current has a pending SIGKILL or is exiting, then automatically 1070 * select it. The goal is to allow it to allocate so that it may 1071 * quickly exit and free its memory. 1072 */ 1073 if (task_will_free_mem(current)) { 1074 mark_oom_victim(current); 1075 wake_oom_reaper(current); 1076 return true; 1077 } 1078 1079 /* 1080 * The OOM killer does not compensate for IO-less reclaim. 1081 * pagefault_out_of_memory lost its gfp context so we have to 1082 * make sure exclude 0 mask - all other users should have at least 1083 * ___GFP_DIRECT_RECLAIM to get here. But mem_cgroup_oom() has to 1084 * invoke the OOM killer even if it is a GFP_NOFS allocation. 1085 */ 1086 if (oc->gfp_mask && !(oc->gfp_mask & __GFP_FS) && !is_memcg_oom(oc)) 1087 return true; 1088 1089 /* 1090 * Check if there were limitations on the allocation (only relevant for 1091 * NUMA and memcg) that may require different handling. 1092 */ 1093 oc->constraint = constrained_alloc(oc); 1094 if (oc->constraint != CONSTRAINT_MEMORY_POLICY) 1095 oc->nodemask = NULL; 1096 check_panic_on_oom(oc); 1097 1098 if (!is_memcg_oom(oc) && sysctl_oom_kill_allocating_task && 1099 current->mm && !oom_unkillable_task(current) && 1100 oom_cpuset_eligible(current, oc) && 1101 current->signal->oom_score_adj != OOM_SCORE_ADJ_MIN) { 1102 get_task_struct(current); 1103 oc->chosen = current; 1104 oom_kill_process(oc, "Out of memory (oom_kill_allocating_task)"); 1105 return true; 1106 } 1107 1108 select_bad_process(oc); 1109 /* Found nothing?!?! */ 1110 if (!oc->chosen) { 1111 if (is_remote_oom(oc->memcg)) { 1112 /* 1113 * For remote ooms in userfaults, we have no choice but 1114 * to kill the allocating process. 1115 */ > 1116 if (current->in_user_fault && 1117 !oom_unkillable_task(current)) { 1118 get_task_struct(current); 1119 oc->chosen = current; 1120 oom_kill_process( 1121 oc, 1122 "Out of memory (Killing remote allocating task)"); 1123 return true; 1124 } 1125 1126 /* 1127 * For remote ooms in non-userfaults, simply return 1128 * ENOMEM to the caller. 1129 */ 1130 return false; 1131 } 1132 1133 dump_header(oc, NULL); 1134 pr_warn("Out of memory and no killable processes...\n"); 1135 /* 1136 * If we got here due to an actual allocation at the 1137 * system level, we cannot survive this and will enter 1138 * an endless loop in the allocator. Bail out now. 1139 */ 1140 if (!is_sysrq_oom(oc) && !is_memcg_oom(oc)) 1141 panic("System is deadlocked on memory\n"); 1142 } 1143 if (oc->chosen && oc->chosen != (void *)-1UL) 1144 oom_kill_process(oc, !is_memcg_oom(oc) ? "Out of memory" : 1145 "Memory cgroup out of memory"); 1146 return !!oc->chosen; 1147 } 1148 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org --FL5UXtIhxfXey3p5 Content-Type: application/gzip Content-Disposition: attachment; filename=".config.gz" Content-Transfer-Encoding: base64 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 mgAA --FL5UXtIhxfXey3p5--