From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1750982AbdGZN2I (ORCPT ); Wed, 26 Jul 2017 09:28:08 -0400 Received: from mx0a-00082601.pphosted.com ([67.231.145.42]:57771 "EHLO mx0a-00082601.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750781AbdGZN2F (ORCPT ); Wed, 26 Jul 2017 09:28:05 -0400 From: Roman Gushchin To: CC: Roman Gushchin , Michal Hocko , Vladimir Davydov , Johannes Weiner , Tetsuo Handa , David Rientjes , Tejun Heo , , , , Subject: [v4 1/4] mm, oom: refactor the TIF_MEMDIE usage Date: Wed, 26 Jul 2017 14:27:15 +0100 Message-ID: <20170726132718.14806-2-guro@fb.com> X-Mailer: git-send-email 2.13.3 In-Reply-To: <20170726132718.14806-1-guro@fb.com> References: <20170726132718.14806-1-guro@fb.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [2620:10d:c092:200::1:865f] X-ClientProxiedBy: AM5PR0102CA0018.eurprd01.prod.exchangelabs.com (10.167.167.31) To SN2PR15MB1088.namprd15.prod.outlook.com (10.169.192.138) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 3a4aa088-eb55-43c9-b0c9-08d4d42a1ddf X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(300000503095)(300135400095)(201703131423075)(201703031133081)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095);SRVR:SN2PR15MB1088; X-Microsoft-Exchange-Diagnostics: 1;SN2PR15MB1088;3:QQ/dRM9hUMvgv61IJGB7XbQoZrMx7+OSmbkCO8rLgP2XvrXa4Qeul7h9x4xfgaNvEpXlyxOypAHhkSxVv2HHPoswPEhGuNccIp3NMQP1/CZQmC/YZAkmGw3eBM4N3T7aOzaoQyQQdnd97n9QnxmbbNc4v9YiO+QYZ0KkYMaRoMmn3r3wB0Wpm2cRWNumilSBdOW02jrsZ9VGLAVo8QkGgYUne23B1IvSFXDJ5BCaZGbjzMjWghOvIRVFBEQ2+wQX4ILlFuCCZlhqJ+o/8yEVGfHxGbodZNGdIiV6DKkVpUTAQNAZ1e70uaW7BZUGrXX0w5v8NrShsWGf0U1LpxNFXglk3WHtWx4EnqGsg3ApSGXD8v0Y4vk660FyTDIdsgvYW1fMCP5xqPM6kYL4C/6IUmcp21pwtVjtZ3/BASIlSgsgDX4DlYQqbGxXFT2cNgWc5hMQf8u/GtKzRupVr6HwmFbVqTDTf4cMGtDWsA2qBf7Vv8aAOhoTzFTWkjY7ld5XunhhP6loxaDRphh0iPSWq87yZTreaa6OBRj6J2atf7Lk4XvVoygid3RSmFF36bThcZEW/c8JGXSurc4SZJ3Wvv8Q2a5BfdsuxkKvzukB+385ODq9is+cV3fbvsoZU+SEdPOipxvzAyWVAPbFDSHFC2fi6w7WqsTEBPOVuvnZ50LCKllLqaXTb93SuZq0y7y2HvG3a17rGWRWM6S1Smv+PlYoOIeADet79yyv+es+pjQ= X-MS-TrafficTypeDiagnostic: SN2PR15MB1088: X-Microsoft-Exchange-Diagnostics: 1;SN2PR15MB1088;25:lUS2Ngm8SGWJtkhYxEhE+sHHlVH/DQT/bu6r1Nq2XDuLuy6wpVU+UaLZAbRrapYaYd9HFBrPMwC9KDs//k6pFfvFjTQC5eml3uyBsi/J9DDeInP3x/4GfWsr5xqbIOvcheGoQ2jFPCeTiKCLsqYdOXotHHVfvrtAMFDGmv2chRqdhglTZFhuLhgg2hh/z74BLeHDqhCvDDbS3hyv2ARomlb90j+6V17r1VYW+pxN3siRrNBtIyTt5Q/gMhQmKACxSspd+2Cvf+CidOkdd3qLUn0GNY1cYa+bCny29oCO7JPTCTAKrMOgIKV3u4ummWluLopZS1FKk2dl4pjhV3ykPtkpj1BuhTYLsoSIow8fe9vuc910P4I03Zamy7Rj+uJg4Y0T0e7NSKvoirotHuK1lUIDJphQFadAScWaYeb+78zVabzhTXavr/fYKXIX3KFv+rcrT8su25WKVtoNszXdCURJmQ8S3XThMMLpgd6nKBqn2Dso1S1nN673EOxSB/t2XSCulICzezZvBAxcyd+O2/d5XumDSQh/xdqnPAWMjHfPzAXQQuvZb4FmYUeEIrhEDewegH7OOXjMgBtbAOvdp2tKBlZHlKAciCZ6zgZhvkSGqooTEWcbTTXDya3qnvmMa3grIf6Yiy1Ql11nldlCP4xRzbUHRy0sl3PeOnBlMiX2Wi6CNc9b0dlt5tyC8hxWyRKIYcytYM0B9epdTFawxl0N7U9lNQIGUPvO3QhKtpyNCUDykyqCimuHZnQPR6OrYtLXn7/figw5NaNrcoevsNEz3s+fbs4tIbsKJIwdXFZMI9quVyquhDLG5sV47QuaP9Trg8dY8UY3qbAswwuLahfIjS1OT+2QNa/LizfCXpNxe5+27uKD/759T6ZFLzUNmBxgGB7vGCw45G+71IcB3u7TTKWeQlELCK++f+Hgcz0= X-Microsoft-Exchange-Diagnostics: 1;SN2PR15MB1088;31:PVtiFpdOLyjBaK1P/TAn4XiWz4UlPU4ZXT4kqdrJElJchm8c9yr4/bzctgS2jbY7QAsBxbDQ1QJghbdxxMPhN2GlA1xLp6BS9FcNAi9NV3uqutM5b0DFWTly2QoXKBySpeFzlLa3L+Kbs6PoQlpPedloYpyyEDMeFUdaGdlyMrKQHVq4V+5eru+mxJfS0wePEc5uigeh+WcCltvW/uMNoe9pNBW2tgDOQ1eXDvTWVdTyqlDeZnzq2mSHJdOAqIVpLNdSb9ezcY9+j5EMMV3sipbpW69UTFlR9qOK7UP883tOiUelPAB5UONDGs1+HgVuVVa7SwyDkaZ8tPPZAR1qUep8EVOb6BJ4gVgXd8yeXTggEKejkkUzkuy5km2hzK7YtvmbP5Yq+l2Zk/i8X0Swfx17eDMt3koEcwErG587mEoq1rf41DAIFhhu1AN7dvtrnNdA87Le08Yepd0UoEgm4rW1h9zwLI4/XbQG4Xey8nD8wituu7aW8ThEvsHHAyAlLWrtBxgvlNSnYPVefsSSJzinuike044/59NkoeLpgulf60HVEApvigLJVW9CavF1PEbwE2Vp1RV+mEqpfuBMDwjeUHFoOmwj4wjqvKtnpFczd84sNr1/Yf9EROPsph49wI31jfshUGuc+glyDaaBRcz6g9TNn8gRuCFDLFKkvBo= X-Microsoft-Exchange-Diagnostics: 1;SN2PR15MB1088;20:w24Z1rJj3P09uAJq3Bbmxnta+IsPBv9mccAD4xj/brBN0uUAI9zSF1iBflf2ob1QKx3MvnV4HuwwTNRCTnxtNkPUj+q2WfjLT05GynEkAJvnUEqI0carz3ahLXuLWbSYl3usImDkNWaGAbfZ2YBLJX5TnLYzHMxmzOR0aajwQdtjXILGoo2R+txK5tWr4rGrtDqfd8f/d/8QNVZHkHpe5r4HfDuqlCbkjCYDfVOirrXxX7qhdJNqukbs7dAUW+lTdh8/KLwugnYPwFPtbjcgHazMkYOIsp43ohKzVdgMgeGmreidXgBmITokh3etHzoW9CdUr4MYpl9J4RJmSvXYiloLtaUaAKo8ng00PBBz+paRnXny5WxOPd83ybYANhAc1bJWJXlFDc9itIK0BmTp+NmzmsIOf74eY8O8gKkCNkImYT38vJz/oIrVNr/1zC0TpCEUWo3+EoT17adRwhI1Wq3mBT9AK4EPdAWa/WpruiA1HmmTpiza40ev2bYwgWDM X-Exchange-Antispam-Report-Test: UriScan:(9452136761055)(67672495146484)(211936372134217)(153496737603132); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(5005006)(8121501046)(10201501046)(3002001)(93006095)(93001095)(100000703101)(100105400095)(920507026)(6041248)(20161123562025)(20161123560025)(20161123555025)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123558100)(6072148)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:SN2PR15MB1088;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:SN2PR15MB1088; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;SN2PR15MB1088;4:jiO++yMG9JudntJrLayu3fh0tsZv/fQF1fRjlKTVzh?= =?us-ascii?Q?/oidM8iM5K7lUnxzt7zaaGO0SZyDkSjRLN6TA94S0teHYNqZOvZ472h5kUkT?= =?us-ascii?Q?VKpfv32xc9plSyzdxwA53ptwUgcZXgHuXwl3gLLBkWLM3rdkPKiV3x+qOQkp?= =?us-ascii?Q?bi1yqyIAMtBAHpP041YBQ8UGYbrUv1pMriuFEuLkvcfZRsE6lSP+cxsFvxwq?= =?us-ascii?Q?xLRY7T4yNtq+Es1P3k5uG1bgjTRk4f8fWzah2uOwUD4kUmfIWicp2VgJBHQE?= =?us-ascii?Q?UmK1ftvgPKj7DH3g0fY31U4zR9ET6fUEkBMEGJO8NR6x5/vTTB9tdrSjTIdo?= =?us-ascii?Q?imIVkhVrd/xA71aqMPXdflISU+ZSAz7X02+RJ4ygqZt3VhNgK9DencpO+uyY?= =?us-ascii?Q?IbY9rGrj52Iw+5dngTMqiT+vedfrLlGOKGiCbnYHDdle4E3xlSc0xw9EA3yA?= =?us-ascii?Q?p8O2FGsdvgBwiskUdCNI47mtRsNx8qBXZxMSvNXdkdOYDzO3KKi7Ae3yKYsy?= =?us-ascii?Q?ohnZv8atfMAx6cQNlSFjl8JxHD+xh4pAChLN4efQ8cn8lqV48NhH+NCmnJPl?= =?us-ascii?Q?wemW+ZTVvkxhMHgLktq7RUNyJ5kRddrhU1XtDg0JgWlyY/LxylkheNo4IBpS?= =?us-ascii?Q?cbOIb6vVEnTcoBxWZkkkGLhwWpZCKh2J1/NLNsh7uKsNQZMwcXV1K682G25O?= =?us-ascii?Q?RgsUspaQwLtbkSygxwSXYxLwwQgr5q8lyLavqdj1NPCulz9/+aHSoYK6LLv8?= =?us-ascii?Q?JqGQ+nWGHyEk0XO67GBzf7vbP3Q9SibHfM8mAEZL2yY/kYk5S5519Fa3qM1K?= =?us-ascii?Q?DbXkq2yFLbdIXqhkzuAbAhYyeZ/ufVmBSJiFFZkdW0yvDj8F6Qj35/MQZYyh?= =?us-ascii?Q?y0cWLLNcbhfNy/wUzNjE1QFxMDwbXw3kNG0hgqNAtkyFjqWb7Q2EM9acRk3O?= =?us-ascii?Q?PVsVMjKYgrVoAnl5gIrD/Z4uqqrl/RRRgmxr2yUMcNg8f5cG1CMZI/rLBjew?= =?us-ascii?Q?SHph4pRz3ugRkFiZrZifZMlOMQ5Y/oP+80g4j8uNLu2vsap6NIT7HyFDB083?= =?us-ascii?Q?TPIOnijQOh2aZOJnwgOr8ne5IYBd4g2c7ZQ3GXwBG9Obb/+J/Aex3QmNz7aE?= =?us-ascii?Q?C0vu/+oS0nhtKzNvRPj3jPDE6mgOrEpz/W1Uqpt96uwIQqwYDTw9bmwhdfdV?= =?us-ascii?Q?GzwlNghXJtf003NFWq9QeO3+m+jBxLV2Wc0+lc1fh5jJYt1jDdkCePN5o+CV?= =?us-ascii?Q?3AtMmJN3PJ4kwX5gszddYgOtrUVikSAUI0wU/MGok8DQNRIk+BD/zTAmXbvT?= =?us-ascii?Q?p8R4t+rztrMn4vU9/ltGI=3D?= X-Forefront-PRVS: 038002787A X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(7370300001)(6009001)(39450400003)(39840400002)(39400400002)(39850400002)(39410400002)(199003)(189002)(5660300001)(1076002)(48376002)(97736004)(6666003)(8676002)(38730400002)(110136004)(6116002)(69596002)(36756003)(6916009)(53416004)(478600001)(25786009)(4326008)(54906002)(86362001)(42186005)(2950100002)(50466002)(105586002)(7416002)(7736002)(106356001)(2361001)(305945005)(68736007)(34040400001)(6512007)(33646002)(50226002)(6486002)(101416001)(7350300001)(2906002)(6506006)(53936002)(81166006)(50986999)(2351001)(189998001)(81156014)(76176999)(47776003)(5003940100001)(42262002);DIR:OUT;SFP:1102;SCL:1;SRVR:SN2PR15MB1088;H:castle.thefacebook.com;FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;SN2PR15MB1088;23:cQXlA8t97jcuv5KPjR/tvOWbPE8aRK2srEc90DRvI?= =?us-ascii?Q?lplYD6CKb2ohTtTiv30YmUK6af0v2WmtwOrJDw1YoqbgTs/o6vhTaIQfXXrQ?= =?us-ascii?Q?fJMG8grQeSqBEmiyOKwzyXkM3kn7TWnNNS87LW03hG1C2pFM06353KMeCYep?= =?us-ascii?Q?72snoT37zOtGgJ7Vk+/Ba8z0BgYKDG6Jrjx9suIENTk6PRdQ7ipNutchIW08?= =?us-ascii?Q?aV3PJvf4ZplZEpOdRyVkD5usZgcCykPmNr3uRglGNdOw1TwCudr9OxLD9Aja?= =?us-ascii?Q?Uv2pVF4IbNU+M8Sx+EJ+6UOqUfPcKQ+tXP09J6W3KnH6l+FZYQqfdgXTwkP4?= =?us-ascii?Q?dE5OmhO6XfAfXUdFFzHZQ76wPkO87oLEuoI/2FxP1G1muRqowyz0HB6x56GU?= =?us-ascii?Q?h+nkXGMOkjj099NSfzd+hW+9dqBUZK+v+oXNi8xDwLjYtHpEUbxy0iHQf/Zv?= =?us-ascii?Q?YnkAF584bMOR0FAiOLaf8OjKHZFXh9BkcPS8+wWyUvpfAttOg6N/7EeckZrT?= =?us-ascii?Q?VA3Jv1nEMJKTrdcK5HmFJhbNxOxJ7ddLSaz9zLNfklUH9DWGeewYRqLcyCT+?= =?us-ascii?Q?Z8ZJosU4UsaWL7AGr0+kAo4t53jr4pcvUyf9jeACH6cupCTHHj37oer4pgWl?= =?us-ascii?Q?ykbDNosTGgkaDds7uXsql0pDRaAPJOiit9DNkNX1SF8TGQ6xPf9rYWyElxiZ?= =?us-ascii?Q?t9V0HkUztvUO4qBBDA2lH9E3HnZQEUNs6qi6Zs4j5dJ0NVBUkme0mqyTCGsO?= =?us-ascii?Q?YBU0VaYxZ9IuG083Zg3QTVInrJBwtsD1+ZVcjqb5WN05lMy7lBS+jSaLBuwR?= =?us-ascii?Q?UDOnowpUpJmJEWyNoJf10OsQ9lwQdFdWZStfj5+sJpl59+MycYpHrz9C72pu?= =?us-ascii?Q?apIA7VbaD5aVBfQPZbr2s2XlAOLqiXfHxxWvCfpCmkoVSpjcQ1CkTmzDzvWl?= =?us-ascii?Q?bA11pTIs463EfAERNQWCxqIOg5RugC8DhQch0UumuBGn2hWh8UxbF70dbSYV?= =?us-ascii?Q?f4BchOrVgJlOzmswIWqjWz5GtZqt+QfIxWtk+9IbCiz/VrhuopoRb5ic9RlJ?= =?us-ascii?Q?4jP5vsojW5mbNqaukIVAVZEw6WpsUZaD2g7SWcAlUSb5+21WY/OqCxd6RWuR?= =?us-ascii?Q?adhq1lfsZBfaLoZ7TvVO+8TjL1afNs/ngGlzAnG5Y0CBMJJZ93PytPozYpo6?= =?us-ascii?Q?Ebzis5cltbGQ+IYP4Q6GCtL0PB1kIZQvFuFiu23V3vROmjBY1Dwl+eJz3ZVp?= =?us-ascii?Q?wOyacHvAHBiP9Lp6zoiAKg55Ft2mJpA6eHx/juce//qZFLzmkQsWgOUj2usB?= =?us-ascii?Q?DRKmeX92U7JsyPWoU8vbn42DdQKwN/yxWPAKs4pJclVMOOHcpUzQ8nLMxU9i?= =?us-ascii?Q?pkACn3aJfC4oq7JPooZYMjBHbI/6MnX33O0M4e7TKv2hCKV?= X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;SN2PR15MB1088;6:kt4dIgAtjf92lTtbNOz+9YYbkDafM82rrYIvjA6/hn?= =?us-ascii?Q?X5TSJmGSRnXrZwsLycf7HrZBDJucbFfffQ8WrRF+QKZ0ShecxxQNQoQFQHCx?= =?us-ascii?Q?w82vLOoiF1DFlG8Qgmg0tbldtdBzCeFL5aqku4KwP1uKRUncVO5arIjHOsyr?= =?us-ascii?Q?dFY4QPHju1N4wmSEFxkVq2GJQ8avGyoyXKkCur279rMlydqeaV0KzatRZXL2?= =?us-ascii?Q?OPgUS+IBQjjdTAEVghaQK0JbdqlMkgRIH7M/HBJ0A7vPbj/EJ990K9cKJ0fo?= =?us-ascii?Q?X6EJVusBdngui4i8wGBeI1sC5/5Fu7o5yBHn02wvNM39Mpq5CZLvWVnE/BKU?= =?us-ascii?Q?J2dUcFLE2svOeDq8G+FSe7I+KE5aoElN1bM+72ep1USP4HTSj1jc2PQuFoc8?= =?us-ascii?Q?OJ8hvyTcFgXrFd+K/vQv9aMG/K7Lw08Pp85wN/Y2PhZNJgl59Us5oF+y8M2t?= =?us-ascii?Q?t0jGp3kv8DtK51NyG7GRoyzLGPAPKpPoPQ5hyFBeaZzkKiqAyssxYPkFG+1Q?= =?us-ascii?Q?R/fIc3gjMV3HFHYvqzQftZe594jDM8e+39FAz+dU1GYX5VeIaQudxpGFSY61?= =?us-ascii?Q?+6qYsb63mriZEhcFRLhhi77O7au3igXqjA93hg2MFWp74WfMEGJZ/RjP4nKw?= =?us-ascii?Q?gbkgjV4ZkeSsmDN4a0/MtksT6FbmNbDGkNiPAFCwA0K7GOTDk5hTFShFtThV?= =?us-ascii?Q?VuhfpTMrk0xanQzprRzDnxS/eFMYIUsK3E14HPOV1covzFsxj30nG5JRBk9k?= =?us-ascii?Q?HtHCVxv0yufBZx0Ee3/6y88Uz3rtlQwwKlDHpWGIY21fc2t4VGjSfJCuBp+H?= =?us-ascii?Q?wyEhtDhztrhXmU3iskMv+LLlYWZH1K+ZY+XewRDLURS434/5QJl5ih7FCNfA?= =?us-ascii?Q?JvKeUQwBAM8Bf2dRFHN9qDYcvTR+UHsB5hIF9I5LIbLH6Z5r/7RaTQAJ0CqT?= =?us-ascii?Q?0WTEGEAWIXk2cRjqdegtXu9X7UHJ7hHAKYVcJ4uwRqzgtCiO2jvsWT1FLnju?= =?us-ascii?Q?0=3D?= X-Microsoft-Exchange-Diagnostics: 1;SN2PR15MB1088;5:nkmFJYFdGKHtJn0idDRIaKtDqGj9LWbLEamfVlHFF/4z7IzRM2bDdzwD/Gzb/hMhUWH5xNS/U8f436581rs871A7CL7lvF1oSN2GNw7OD5DLpIij6rsQS3OgluX4LoMgYr/4nOeS7IprXy89wLEIP0wdhUuEfduQEyeSHf8aoPSY0KNRakcueWbROIiYyki2RolC1Y4SpbISysowUWwmlU5xTyyxWBZ4Fkj6/ug0ev7cVWzSKKI4MzNgQfdtEJvET0HD6TFRMPCWngPbBmVj270ykNqj5FQJWuaaaTSI9m7N7/ZsDmOzn5RhREud2JHFzWx9nvsirGnmAwmtBUcpIqMdZ1OSaX3MXDJ0clo05TxillwokhjPVthEYxkbMwPjd4wscmxBVuoDmxK8retrQKkUKXNYKvK1wboc3XKYJRauUgRU9CUrUZa7fwONCI5v+I5AJheBxOLvS31dvmeEsv/j6/l3862i6UCL9FYiA4SDEmLqyTBOpEploI2eoGjR;24:UMk3xJg/NiT8OgyAuJoE+YvLyOY/H3v+OKZ9UTcH+jiV2Yn41VzRMzC+XBFbnPpW1NzWLOFWe/kRdisBRsWxMkJDHktTrOhPjCkbOXou6jE= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;SN2PR15MB1088;7:HmXdW3uE3Df0UpRARSQZyRZhysRJgqeySGRLNdeXy6eHPhuU7AfKZn6VWUb1PXfOjeR0YLDvvGFdkbOS/7LXgVT8zzS6bUEUo+6xpDacxq9sxrgutTKVMVFWUiHvdlnHjJXJcjcvgtHu+pFMuKMkSCLzDQg68pho8XRrupqD+2KVhhOjXcAqVVmfvuecTQUgY8A4mODSxlgCunoHTbkOL+t3zo1LBYqTUvfu12udf52E5ULXxjvjSoMXBpG0EQPwuVjGqHTnRdvFsj6R+qEAhYUzHqO41AKZQKLm8o6PXHMiOtEi34ZfhGdvAdz3ldoB3hyTXF9S4hhjMnXrZSTtCCaVUmdnd4ywNqxxfxfevlV/n+CIZB7yEv9zxcJOYsQDvbCCGBQCWugU/lDDBXu3c9oGwgYpNawSKnoTBIqm/mcEGeHYWRda0kXSq/ksglNcNkSz41gXpCubWaY5nV9P5LUPuTOz7X0SeCe9eQunYLQBB+ROdJCtoB9qr44H/WH3r8llyzr1P0L9W+WTVaTxv5yLoshth0xtMfuKDlzwJWkXZnsOmNNowdy7BNY8PC42P9i9tg0mggpLdjp8nMWu+p8fCyqeOcZgUzKMoQivwMEasF8v61lMfCC4V8WQtwoj25a026+Od7EIVy7ryS2ljM0xQE7Kd9K3PBI3KkNL99QSSWxdao03BOh3B5aAj/3+88KcD1LkB6QsjtAUZ256/1Bew8tGJPX+GoO1vNTNO/Y3IOsticNFeE6V9y2mKPM27VXnFYHQBmiXXs2+suV3qaoSRoQho0WfAipSoCJO4FA= X-Microsoft-Exchange-Diagnostics: 1;SN2PR15MB1088;20:tAYzJQqAc9JTLLKS3M0nc5OhkktVJBnnLSsUKLN4PGy4a6tFlgs1GzHuN9OC06IUMDZ6RtjKAAwJIRZbaW36tRCLP/vEb+gAaPyVwhMTEi5pZhLagyj1gddBjVb4C4OIY0Pp/wYo0OLzOuFfQOF17Rr2OLJvGWG3TE7pi9QNriE= X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Jul 2017 13:27:49.6506 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN2PR15MB1088 X-OriginatorOrg: fb.com X-Proofpoint-Spam-Reason: safe X-FB-Internal: Safe X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:,, definitions=2017-07-26_06:,, signatures=0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org First, separate tsk_is_oom_victim() and TIF_MEMDIE flag checks: let the first one indicate that a task is killed by the OOM killer, and the second one indicate that a task has an access to the memory reserves (with a hope to eliminate it later). Second, set TIF_MEMDIE to all threads of an OOM victim process. Third, to limit the number of processes which have an access to memory reserves, let's keep an atomic pointer to a task, which grabbed it. Signed-off-by: Roman Gushchin Cc: Michal Hocko Cc: Vladimir Davydov Cc: Johannes Weiner Cc: Tetsuo Handa Cc: David Rientjes Cc: Tejun Heo Cc: kernel-team@fb.com Cc: cgroups@vger.kernel.org Cc: linux-doc@vger.kernel.org Cc: linux-kernel@vger.kernel.org Cc: linux-mm@kvack.org --- kernel/exit.c | 2 +- mm/memcontrol.c | 2 +- mm/oom_kill.c | 30 +++++++++++++++++++++++++----- 3 files changed, 27 insertions(+), 7 deletions(-) diff --git a/kernel/exit.c b/kernel/exit.c index 8f40bee5ba9d..d5f372a2a363 100644 --- a/kernel/exit.c +++ b/kernel/exit.c @@ -542,7 +542,7 @@ static void exit_mm(void) task_unlock(current); mm_update_next_owner(mm); mmput(mm); - if (test_thread_flag(TIF_MEMDIE)) + if (tsk_is_oom_victim(current)) exit_oom_victim(); } diff --git a/mm/memcontrol.c b/mm/memcontrol.c index d61133e6af99..9085e55eb69f 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -1896,7 +1896,7 @@ static int try_charge(struct mem_cgroup *memcg, gfp_t gfp_mask, * bypass the last charges so that they can exit quickly and * free their memory. */ - if (unlikely(test_thread_flag(TIF_MEMDIE) || + if (unlikely(tsk_is_oom_victim(current) || fatal_signal_pending(current) || current->flags & PF_EXITING)) goto force; diff --git a/mm/oom_kill.c b/mm/oom_kill.c index 9e8b4f030c1c..72de01be4d33 100644 --- a/mm/oom_kill.c +++ b/mm/oom_kill.c @@ -435,6 +435,8 @@ static DECLARE_WAIT_QUEUE_HEAD(oom_victims_wait); static bool oom_killer_disabled __read_mostly; +static struct task_struct *tif_memdie_owner; + #define K(x) ((x) << (PAGE_SHIFT-10)) /* @@ -656,13 +658,24 @@ static void mark_oom_victim(struct task_struct *tsk) struct mm_struct *mm = tsk->mm; WARN_ON(oom_killer_disabled); - /* OOM killer might race with memcg OOM */ - if (test_and_set_tsk_thread_flag(tsk, TIF_MEMDIE)) + + if (!cmpxchg(&tif_memdie_owner, NULL, current)) { + struct task_struct *t; + + rcu_read_lock(); + for_each_thread(current, t) + set_tsk_thread_flag(t, TIF_MEMDIE); + rcu_read_unlock(); + } + + /* + * OOM killer might race with memcg OOM. + * oom_mm is bound to the signal struct life time. + */ + if (cmpxchg(&tsk->signal->oom_mm, NULL, mm)) return; - /* oom_mm is bound to the signal struct life time. */ - if (!cmpxchg(&tsk->signal->oom_mm, NULL, mm)) - mmgrab(tsk->signal->oom_mm); + mmgrab(tsk->signal->oom_mm); /* * Make sure that the task is woken up from uninterruptible sleep @@ -682,6 +695,13 @@ void exit_oom_victim(void) { clear_thread_flag(TIF_MEMDIE); + /* + * If current tasks if a thread, which initially + * received TIF_MEMDIE, clear tif_memdie_owner to + * give a next process a chance to capture it. + */ + cmpxchg(&tif_memdie_owner, current, NULL); + if (!atomic_dec_return(&oom_victims)) wake_up_all(&oom_victims_wait); } -- 2.13.3