From patchwork Thu Aug 3 08:11:52 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michal Hocko X-Patchwork-Id: 9878985 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id EAE24603B4 for ; Thu, 3 Aug 2017 12:31:18 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id DB9472875C for ; Thu, 3 Aug 2017 12:31:18 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id CFA09288BE; Thu, 3 Aug 2017 12:31:18 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-4.2 required=2.0 tests=BAYES_00, RCVD_IN_DNSWL_MED autolearn=unavailable version=3.3.1 Received: from ucol19pa13.eemsg.mail.mil (ucol19pa13.eemsg.mail.mil [214.24.24.86]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id C014528761 for ; Thu, 3 Aug 2017 12:31:17 +0000 (UTC) X-IronPort-AV: E=Sophos;i="5.41,315,1498521600"; d="scan'208";a="501881837" Received: from emsm-gh1-uea10.ncsc.mil ([214.29.60.2]) by ucol19pa13.eemsg.mail.mil with ESMTP; 03 Aug 2017 12:31:15 +0000 X-IronPort-AV: E=Sophos;i="5.41,315,1498521600"; d="scan'208";a="718864" IronPort-PHdr: =?us-ascii?q?9a23=3A5kmbixc7I+i5HcCvBNFR3QUKlGMj4u6mDksu8pMi?= =?us-ascii?q?zoh2WeGdxcq6ZBON2/xhgRfzUJnB7Loc0qyN4vCmBjdLvcfJmUtBWaQEbwUCh8?= =?us-ascii?q?QSkl5oK+++Imq/EsTXaTcnFt9JTl5v8iLzG0FUHMHjew+a+SXqvnYdFRrlKAV6?= =?us-ascii?q?OPn+FJLMgMSrzeCy/IDYbxlViDanb75/KBa7oR/Tu8QYjodvJaI8wQbVr3VVfO?= =?us-ascii?q?hb2XlmLk+JkRbm4cew8p9j8yBOtP8k6sVNT6b0cbkmQLJBFDgpPHw768PttRnY?= =?us-ascii?q?UAuA/WAcXXkMkhpJGAfK8hf3VYrsvyTgt+p93C6aPdDqTb0xRD+v4btnRAPuhS?= =?us-ascii?q?waLDMy7n3ZhdJsg6JauBKhpgJww4jIYIGOKfFyerrRcc4GSWZdW8pcUSJOApm4?= =?us-ascii?q?b4ASEeQPO+hWpJT5q1cXrBayAA+hD/7txDBVnH/7xaM03eQ/Hw/F0gwvEM4Bv2?= =?us-ascii?q?nWo9r7KakSSeK4wLTGwDrddPNbwiv95JTSfxw9vf2BR6x8fMzMwkcvDQPFiVCQ?= =?us-ascii?q?pJTiMTOUyusNs3KU7+59XuytjG4otwJxoj+yzcorj4nJhoUVxUzH9SV+24s1Js?= =?us-ascii?q?O3SFR9YdG6FJtcrSaaN5F5Qs47RWxjpSU0yqUetJKmcyUHx44ryh7CZ/CdbYSF?= =?us-ascii?q?7QzvWPyMLTtgmX5ofLKyiwyv/UWuyuDwTNe43EhWoiZfjNXBtn8A2hrO4cadUP?= =?us-ascii?q?R95F2u2TOX2gDW7eFLPF47mLLAK54k3r4wjp0TsVnfHiPumEX5kquWdkI89+i0?= =?us-ascii?q?8evneLTmpoKHN4NulgH/Mrghmsy4AegiNAgBQ3Ob9vim2L3m/E35RK1Gjvwwkq?= =?us-ascii?q?bHrJDXPdkXq6G2DgNP0osv9gyzAymp3dgGh3ULMUpJeBedgIjoP1HOLur4DfC6?= =?us-ascii?q?g1m0izdk2fTGPrznApXQIXnPiazufbFg605a1AU808tf6olICrABPP3zWkjxuM?= =?us-ascii?q?beDh8iKQO42ennCNJj1o8GQ2KAHreZML/OsV+P/u8vIe6MZIkPtzbhK/gq/fju?= =?us-ascii?q?gGQ7mV8ae6mp2IEYaGukHvt4OUWZemDggtAbEWcFpgA+VvDliEWeUT5PYHa/R6?= =?us-ascii?q?A85jMhB426DofDXYetgLqA3CelBZBWaGRGCk2DEHjzaoWEXesMaD+ILs9miDwE?= =?us-ascii?q?WqCrS5U92hG2qA/6171nI/La+y0ZsZLj0cZ65/fImBE86zN7EsOd03uXQGFshG?= =?us-ascii?q?MIQD02075jrkxh0FuD1rJ4g/NAH9xJ+/xJShs6NYLbz+FiFt/9RgfBftCPSFa6?= =?us-ascii?q?X9mrGi8xQcwrw98PYkd9HNOiggrF3yW0H78fj6aLC4As8qLAw3jxIN5wxGva1K?= =?us-ascii?q?Y7lVkrWddANWqjhqFj7QfTHJLJn1+fl6m0aaQWxDTN+3ubzWqSoEFYVxZ9UKXE?= =?us-ascii?q?XHAYYEvbttH55kfbQ7+vD7QrKA1BxtSYKqtJa93pk0tJSO3lONvAf2K7g32wCg?= =?us-ascii?q?qQxrOQcIrqfH0Q0z7GB0QDlwAT/G2GNRQlBiu7uGLREiBhGUj0Y0zy9el+qXW7?= =?us-ascii?q?TlI7zgyRc0Jg16C1+gMOhfCGRfIcxK4EuDwmqzVyBlq92MjWC9WYrQp7YKpcec?= =?us-ascii?q?894EtA1W/BqQN9JoavL7pjhl4FaAl3p1nh1w92CoVbicgqqGklwxZsJq6C11NB?= =?us-ascii?q?bTyY14jqOrLLMmny4Ayva6nO11HQytaZ4KEP5+g5q1X4pwypE1Ii83R+39lO3X?= =?us-ascii?q?qc/Y/GDA0IUZL+Skw37QR1p6nGYikh4IPZzX5sPrO3sj/FxtIkH+glxQyjf9dY?= =?us-ascii?q?LaOIDgjyE9cVB8K2Muwlh0Cpbg4YPOBV7KM7Jd6pd+GH2KG1JuZthyipgnhC4I?= =?us-ascii?q?xn1UKM7SV8QPbS35kZ2/GYwheHVzDkgVe7r8/4hJtJZT4XHmuw0yTkApBeZrFq?= =?us-ascii?q?d4YRFWiuO9G3xsl5h5P1QH5Y+kSjB1Qd2M+1YheSdFr93Qpe1EQSu3OnnzG0zz?= =?us-ascii?q?pqnDE1tqCfxjDBw/z+dBobPW5GXGdjgk3oIYiokd8aRlOoYhM3lBS7/0b13LVb?= =?us-ascii?q?pKFlI2nUW0dIcDD8L3t+XauoqrqCf8lP5Ys0sSpKTeu8YEqVSrrmrhQG1CPjGn?= =?us-ascii?q?dRyyogdzG2oJn5mQJ1iH6FJnZpsHXZYd1wxQvY5NHEQ/5R3z4GRC1mhjnMHVWz?= =?us-ascii?q?Jcem/c+Tl5vZteC+TW2hXIVJcSb31YOAqDe75WpyDB2hnvC8hsHnEQ8g0SPhy9?= =?us-ascii?q?ZqVSLIrBDzYoTw06S6MORncVNyBF/78cZ6HZt+koQojpEKxXcanomV/WYAkWrr?= =?us-ascii?q?NdVb2Ln+bGYUST4Q3dHV5Anl2Et+LnOG3I/5TW2dwspnZ9m7fmwWwTgx78ZUB6?= =?us-ascii?q?eI9LZEhzd6okKkrQLNZvhwhi0dyfwq6H4ene4JohYiziKTA70JBklYIDDjlw+S?= =?us-ascii?q?49C5tqVXa36lcaKs20pmgdChELaCrxlfWHnnfJciBjR97sZhP1LKy33z7J/reM?= =?us-ascii?q?XKYdIUrB2UnA/Kj/JJJ5IpivoKmS1nNHrlvXI/1u47iQJh3Ymgs4iBN2Vi4ri5?= =?us-ascii?q?DwVFNj3uecwT4CrtgbxFnsaRwoCvBIluFSsFXJvvV/KoHywdue7hNwmQDD02sm?= =?us-ascii?q?2bFqbHHQ+D9EdmqGrCE46tN36KP3QZ09NiSwSdJEBFhgAbQik6lIYjFg+23Mzh?= =?us-ascii?q?bFt55jcJ617gsBRM1+ZoOgLjXWfeuAepai44SJaFIxpQ9A1C4F3VMcOG5OJpAy?= =?us-ascii?q?5Y5oGhrBCKKmGDaQRHF2cJWlCDB1DmJbSu68fP/PWfBuqkNfTOea+OqetcV/iW?= =?us-ascii?q?2Z2vzpFq/zGWNsWAJnNiFeE02lJfXXBlHMTUgzAPRDYTlyLJccGbuAu89Tdtoc?= =?us-ascii?q?2k9vTkRh7v5ZCTBLRIKdVg5Qq6gaGdOO6MnCx5MypX1osQxX/Uz7gSxEQShztg?= =?us-ascii?q?djW3FLQPryrNTKXQm6JMFREUdyZzONFP76Im0QlHIdTbhc/t1r5kkv41DE9IVV?= =?us-ascii?q?L7ms63eMMKOHuyNFXbBEaML7SLPifEzN3yYa+mTr1QlupUvQWquTmHC0/jIiiD?= =?us-ascii?q?lz7xWhCpK+FDljmbPARFtYGzcxZtE3PjTM7oah26Nt94lzs2zqE1hnzQMW4QKz?= =?us-ascii?q?98c1lCrreI9yNXnu1/G3Bd7npiNeSEgziW4PLGJZYQsPtrHiN0mvlb4Hsk1bRa?= =?us-ascii?q?8jtIRPtvmCvdttRuuU2pkvGTyjp7VxpDsitEhJmVskp4NqXZ7INPWWjf8RIW92?= =?us-ascii?q?qQCAkKp8F/BdH1v6BQ197Pm7jpKDtb79LU+sgcBsjTKM6dNnouLwbpEibODAQZ?= =?us-ascii?q?VT6rKX3fh0tFnf6J932VoZ86qp73lZUTVLBUT101GekcCkh/G9wCOph3VCs+kb?= =?us-ascii?q?GHlM4I+Wa+rB7JScpAsZDITOySDuv0JTaelblLeR0IwbbiIoQSMo30wEtia1Zg?= =?us-ascii?q?kITNAUrQUshHojd9YQ8svEVN7H9+Q3Uv20LibwOh+mUTFfm1nxEojAtxev4t9D?= =?us-ascii?q?Dy7Fc0PVfFuCwwkEwtltr/mjCRbCT9LKGuUoFKEyD0rVQ+MovnQwZpag2/hU9k?= =?us-ascii?q?NTfAR71PlLZgcGdriAHSuZRRBf5cUa1EYBgVxf6Jffko10pTqjm/z09d+eTFEY?= =?us-ascii?q?dilBctcZO0qXJPxRhsbNouKKzTI6pJ1URQibiIvi+z1eAxwRUSJ0AT/2OOYCQI?= =?us-ascii?q?olAHNqE6Jyq0+exh8RaClCVYeGcSTfUquO5l9kMmNuubziLgyaNMKke/N+yHNa?= =?us-ascii?q?OWpWjBmdSOQlwuykMCj1NF8qRu0cc/b0qUUFgiw6aWFxQPM8rNNB9ab85T9HXI?= =?us-ascii?q?ZymBr//NwZVvM4W6DODoQveEtLwIjUK8AAYpA4MM49wcEZa2zkHYLNroLKUexB?= =?us-ascii?q?o3/gTrPlKFDfpSeB2VjDgHvtu/zJ5r3YhdPD0dB3tyMTmv7LbNugAqmOaDXMsx?= =?us-ascii?q?YnoCWosEMWg2V9O8my9YuHRNFza30uQEyASY6D/8vCvQBiHmb9V/fPeUeQ9sCN?= =?us-ascii?q?au9DUk7ae2jV/X8pPDJ2D1LtltptjP6eYGqJmdEPNUUaNxs0HClIlEX3aqSXLA?= =?us-ascii?q?EcapJ5jsbIkhdd/0Cmy6U1OljTI1U8fxMc2iLqiPmQHnWZxYsI+F0zA/LcW9DC?= =?us-ascii?q?0RGw9sp+Ef46JxfREDY5s+YR7vqwQ+N6y+LRyF3dWvQ2eiMyBZQ+NZzeqke7xd?= =?us-ascii?q?1zAsYfOiyHs8UpE6yPG6/lQJRJELkh7R2+6sZ4xeUCj1HXxdfR/AqDEimGhgLO?= =?us-ascii?q?kyxP4zwB3VsVUGNTCEavBpYnRev94gHVOSPWl2Cm0gSlCHk4XD5BWh0KoP8CtD?= =?us-ascii?q?gdlUy/ZFv2Lkvp7fej6sX7arqZrNuSo6cdcmu7FxMZDkIsaeu5Pegz3fTJ3Usg?= =?us-ascii?q?KbVS63DOdVlcZLLyJZWvZIn3spOcscuYpO8UAxTNsxJ6RTCKkwobCncSBkDSgT?= =?us-ascii?q?zSAFV4OA2zgCgvyk1bXDixmeaogvPhsfvZpehdsdVjJ5bTkFpK+/TYnWkXGLSn?= =?us-ascii?q?QTKgcJ8QtM/B4AlpN3fu39+orHVoVMyzlNrP9vTivLDINn90XlRWGSgFj4Tvqh?= =?us-ascii?q?k+io3QJdzPLsztcbVwRlCUhY3epWkFUnKK1vIakKooHKqiOIdV/9vG/1xuqqPk?= =?us-ascii?q?Veyc3Vd139DYrKr2n8XzYd+XIKW4BA1mvTFZMIkwp2cKwrvklDIJi6ekbi4Dwp?= =?us-ascii?q?355mH6OlVcCt3Volrm0LRyarE9pAF+Fpq0jbWDt7bJC3sJ/lIYldQndM+J2BrF?= =?us-ascii?q?dUiERtMyilyZVCL8FC/DsMUyZToTWHvNq/U8pD2ddoAJ8KJ9dwoXb9GKdfN5iW?= =?us-ascii?q?rHw6oLvvymXW+zokqle12C2zG7OkT+Je52AeFR8pKH6YqkkzFOYs82DS817Lsl?= =?us-ascii?q?Bo/+dUGLmPjUNtoDljBJBCHDBJ2m65L15rVnlJr/1aKLjJc8xbW/QyeRivOxkl?= =?us-ascii?q?GP46w0CJ+Fp7kW3/YyNsqgtQ4zrdUBUsVSkJnrftniUTqsG9Nj8AUZ1IaSguYj?= =?us-ascii?q?zYJA2FgSBXpAhQa0V0VJADGNpF/Ksb3YRM9MrYVUmsMT0FXABlNg8g0/pfklBM?= =?us-ascii?q?vV6Fdi/DFgqna+zPsgFpcsiMtsKpKur2/BtfgIP9rO8477kDR2GhmQC1Wt/eoZ?= =?us-ascii?q?PzusGIu0eTeqr1KPGzYXjETDfQlx+wnqskA4PM/yfNLApRM4N6xmY8YZj9FW7L?= =?us-ascii?q?OgxLJ7gFKEVGVaB1c8lGr/teZ89jZqYG57FhCQ6ARhzyBoOjtv9GIUjPRT7GNS?= =?us-ascii?q?WO7vS/oZ7P7bzaUeXgfteMx2rdTK1qIpd38iL7G7D30Y9E5kX5xPFt9l9gSVfc?= =?us-ascii?q?NyCNttPhJhkE5MO6bEvtooUpHS/KAJd3iHft2ltAeNQJTCK365kY1ZdZ6GrqSe?= =?us-ascii?q?1izEjzsepS97165okr+bxpzt20JajKI/RArUBnGgSUBhlt9pg1AmhwXXpRYugK?= =?us-ascii?q?KPfVZ6sZk9vjq+XqF6wT9B2V+vBWadrdKEHHgcmzEDacSQZLnA0Zsz4VMhOc1+?= =?us-ascii?q?KZm69zUculp/L22kQj41ikKR4J0a5i6JyY+qWSou/XdBzRwaICWqf0WsP5tq4s?= =?us-ascii?q?tF+K5f04iL4OfXR4YwujEOUGV84dwGLgwborzSIqHcPDBajv+OVfV3IjgzLvh4?= =?us-ascii?q?x9H0gMGvwKB7aL+p5enmggkezDKtIWarxCmnqIFRO8FL8CyGKk6yyTIGZ/mRHC?= =?us-ascii?q?yRDwQWS07F/tti91Wi7Mwtjsk0ZPUbm3H0hSVTKzOUBkqDOPIBbotN3vtKsp9k?= =?us-ascii?q?42NnLrtMmRlGqhP7NaBNb/K8CdISYqolIXkJwxSca11YAdB9W9PM8b8GtiYfvG?= =?us-ascii?q?92OrjyhBrr9Dh4rF58GY+u7aHXe+gKKHrLWN3ipXymAivVE46NCvKO3B58GQT/?= =?us-ascii?q?SvzWYRQD91uxHdUB6ttrzbs1cUNFSJ0EfKnYwHJdRZ0mc41074/ugjQdQz9ApE?= =?us-ascii?q?GobGefwCuSj5OCHozlaHf9I3Si6e3iNWHlP0C1Z3ArQz1XnrvM3XiXff5UEnSp?= =?us-ascii?q?N3d0z9ihx9F584Jl416FgL3ioDFhAAZguaDLGzC0XqN4kEVUkfaRSfxre6Z6M3?= =?us-ascii?q?0FZvzbOo+eDcc/ZzB7cXNvZalA6BhkJXGpUMsa0RWLh8YUNS9LbLpgj+DIjqR+?= =?us-ascii?q?DmmmAsNfKpQsBb/8cZt2Eh4gqmXBqv95ND77cdiJCVea9JeoDMs9pg70h75T4O?= =?us-ascii?q?eCtNgAJ8jx+jUuATuvrj4t7Fv5qs8OquU7wtR+oP/RguG2t+l4fwgEwkodzPy+?= =?us-ascii?q?dcUJPaiYDl/wBLPXGHo5vV0xhzKeoPN4KkZq1g+G8dJygDPX4OO8SZa+Uk6S93?= =?us-ascii?q?LDrT/0BCAt8LZd4AM8rCgxpUhVP1WLFT7cfbHl6YC5tteMAo9WX31Ss1/YE6Uu?= =?us-ascii?q?n+9D+8PYrf4E1VP/NfkCVsk8rPpOcLzvrUFCgX5n6ZZx9uwiycz5mNCvDw/fiD?= =?us-ascii?q?ydzPU1MJADQ2UodHKzaY/wyoWPa1no3zUgyI8s/znI4+dEWIS3OtnqQKqLpDHP?= =?us-ascii?q?VchSX82jheEoH1iOyPs9qw9mRYql1HHJx07R3fF6VVJo97Ngjglsm3Wkh8ATPy?= =?us-ascii?q?eMTTdhoopOqWyfkD7v57N0v/f4AbJAwLy6706HpSVAtuS6X2skyfXe0PeNtsUO?= =?us-ascii?q?nEoWxN6YJ8N68PO0CQpJP2oTdTs1A6GRInZrA2oDxbcEnOgQJUVr37uL4FkAQc?= =?us-ascii?q?V8B2tVVLGWKqN2I0/yDHWrhNjKmNFPwV9S2eTq4JU0VoNCNyWQ+62JVqe7u0gP?= =?us-ascii?q?9Gs2JGniVmoPgp0jxrXwW8uSzyp60X3TIv5bC4uC8HuXNbUuWUiz3IBklbzPQW?= =?us-ascii?q?kaccDG7v6V2iYHYZaov/+71nJdn9+okg5HQ/eg8vfyocXeSvEyvwlb+HApSTsN?= =?us-ascii?q?JAgx6AoMfOYqG9LSgcMrQw0hziSGJ70gfAgBZk6m0LTSu87NU8PoWyJd4lxja0?= =?us-ascii?q?GWjcbFsM7adJsMz/tFEVSOs2bUhswH5k0siBRy0CWNbDG2ArgQg4cW9Eao5M6Q?= =?us-ascii?q?cGF6k0hTaFpqtG/gEUYTfMFYSl/ojQndvW1nQmSNdqx37WprebiZ8w131lgdx0?= =?us-ascii?q?5DaUuHsOb+zYT9NsAn/r24dDyOz+Yu6gsvwGSIR6y7SuTvsCPtOl+WSoxJVgQl?= =?us-ascii?q?WlyagGH1qlLO8Dwa/WUyKkSW2bWuSLdHOBnzQjPU7x4hmoKEM4aMFQo087LOTC?= =?us-ascii?q?moZWlxf9XrNsWiWQuVjbwXQ4PuwEcQI2pJyqexcOTO4We+icOfYuz+MjB1cWaH?= =?us-ascii?q?/JByR2AfessVGxhIh7J2lg4ULibOT19QDmNMGdGgMKEI7dqp5x9+e3RmeGOX9n?= =?us-ascii?q?1x19IlV79/3YF1Qqre9ccpCRndfKi9R8y+4FeO9nMTchtd4LhoJj9Y6U3d+EcR?= =?us-ascii?q?7PypbyJMnVreaDDvzezkQqf2RaXaQDYQPx+Yo2JNk5W6fcHbFBpxQTGbA6QIA9?= =?us-ascii?q?N2f27Kx1IhtzchTQZLuonMbnveeLZppIp3/M8F08NiDcuwcMyvasVwx0c4iqh2?= =?us-ascii?q?nuIJA3Xj9BqNltBQV9EYtXH8MPtRGnA4KVmK6nl9+x4V11tPEQvar2FP/KyMyz?= =?us-ascii?q?359tUJhC+UyLIDHRCbFvgkRkiOSyn/jB3oD1CcPjYtMESPN7T3XEarDcGIW/LS?= =?us-ascii?q?iCOsXme05J67Scyq52Ug2NZCDlWKqLrDakO+tg4UU6zIx4YeXSwDsi4bHH2Nv9?= =?us-ascii?q?eXtbqTm7rXGTL5Zf70LFBfbYXx1KTfqK63tlHaINYYvz7ucOPsQowMKA7Alr8D?= =?us-ascii?q?RCzMyFLrCkrkDWxk17dZPbLE3u2ysiR4kKIRK/PlUogW/YrHTdHHtdItKjKcl3?= =?us-ascii?q?j9afFgbt6FVpmWExem5BHXLlRdWLNmgY3MKxfxaH9B9ND9Yfn+63flM4tqKySe?= =?us-ascii?q?l0IJlFn/ultKkfm9ZzNy7PXNRaPz3XLLJuPDpRC+LPpEIyYh4FqLg4QYE1aoKL?= =?us-ascii?q?IEwZMUeM0yTyzRHN0UfsbdyjyL6JIDoK8nVA17/FyjZMpwyltvuYgcDuS67ZY4?= =?us-ascii?q?/sXP7TMSslUTeaSS40EUm35Vf388YD6cKRPGNXh1cTeC/aXBYWoad1oPDKA2PT?= =?us-ascii?q?kPEld5oP0qO0QSf1HQh5n6o7Am5rskuPRLJXEAnRZHzmqGlRogqvIrlL532zPO?= =?us-ascii?q?7Q/bZcR+FDWtgESfaeWdaNPKkGeTo=3D?= X-IPAS-Result: =?us-ascii?q?A2C0AQCXFoNZ/wHyM5BcGgEBAQECAQEBAQgBAQEBFQEBAQE?= =?us-ascii?q?CAQEBAQgBAQEBgywDgVEnjwKPFIFukTuGZSiJZVcBAQEBAQEBAQIBaiiCMyQBg?= =?us-ascii?q?kABAQEBAgEBAiQTMQ4DAgEJAQEKDQEDAwECAQkdCAMBCwU7DhMFiiIIAwGuYDo?= =?us-ascii?q?iAosqAQEBAQYBAQEBASODKIICgUyBY4MnhC4eFYNVgjEBBJ99lCANgg+FWINQH?= =?us-ascii?q?IZ1SJU5V4EKMiEIKQhJhRccgWl0hxWCQQEBAQ?= Received: from unknown (HELO tarius.tycho.ncsc.mil) ([144.51.242.1]) by EMSM-GH1-UEA10.NCSC.MIL with ESMTP; 03 Aug 2017 12:31:15 +0000 Received: from prometheus.infosec.tycho.ncsc.mil (prometheus [192.168.25.40]) by tarius.tycho.ncsc.mil (8.14.4/8.14.4) with ESMTP id v73CUU1Z022939; Thu, 3 Aug 2017 08:30:38 -0400 Received: from tarius.tycho.ncsc.mil (tarius.infosec.tycho.ncsc.mil [144.51.242.1]) by prometheus.infosec.tycho.ncsc.mil (8.15.2/8.15.2) with ESMTP id v738C4p6105735 for ; Thu, 3 Aug 2017 04:12:04 -0400 Received: from goalie.tycho.ncsc.mil (goalie [144.51.242.250]) by tarius.tycho.ncsc.mil (8.14.4/8.14.4) with ESMTP id v738C4VW027037 for ; Thu, 3 Aug 2017 04:12:04 -0400 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A1ASBQAp2oJZfSUVGNZcGwEBAQMBAQEJA?= =?us-ascii?q?QEBg1eBVCePAo8TgW6RO4ZrhUcChDlXAQIBAQEBAQITAQEJFgiFbwEBAgIBJxM?= =?us-ascii?q?xDgULGQMDAQIBCSUPBTsOE4onCwGvPzqLTgEBAQEBAQEDAQEBAQEBASGDKIICg?= =?us-ascii?q?UyBY4dVHhWDVYIxBZ98lCANgg+FWINQhxFIlTeBYTIhCCkISYUXHIFpdIcVgkE?= =?us-ascii?q?BAQE?= X-IPAS-Result: =?us-ascii?q?A1ASBQAp2oJZfSUVGNZcGwEBAQMBAQEJAQEBg1eBVCePAo8?= =?us-ascii?q?TgW6RO4ZrhUcChDlXAQIBAQEBAQITAQEJFgiFbwEBAgIBJxMxDgULGQMDAQIBC?= =?us-ascii?q?SUPBTsOE4onCwGvPzqLTgEBAQEBAQEDAQEBAQEBASGDKIICgUyBY4dVHhWDVYI?= =?us-ascii?q?xBZ98lCANgg+FWINQhxFIlTeBYTIhCCkISYUXHIFpdIcVgkEBAQE?= X-IronPort-AV: E=Sophos;i="5.41,314,1498536000"; d="scan'208";a="7945" Received: from emsm-gh1-uea11.ncsc.mil ([214.29.60.35]) by goalie.tycho.ncsc.mil with ESMTP; 03 Aug 2017 04:12:01 -0400 IronPort-PHdr: =?us-ascii?q?9a23=3AnbPSmxa+yAwe6hgrMYjBceD/LSx+4OfEezUN459i?= =?us-ascii?q?sYplN5qZoMq+bnLW6fgltlLVR4KTs6sC0LuG9fi4EUU7or+5+EgYd5JNUxJXwe?= =?us-ascii?q?43pCcHRPC/NEvgMfTxZDY7FskRHHVs/nW8LFQHUJ2mPw6arXK99yMdFQviPgRp?= =?us-ascii?q?OOv1BpTSj8Oq3Oyu5pHfeQtFiT6+bL9oMBm6sRjau9ULj4dlNqs/0AbCrGFSe+?= =?us-ascii?q?RRy2NoJFaTkAj568yt4pNt8Dletuw4+cJYXqr0Y6o3TbpDDDQ7KG81/9HktQPC?= =?us-ascii?q?TQSU+HQRVHgdnwdSDAjE6BH6WYrxsjf/u+Fg1iSWIdH6QLYpUjm58axlVAHnhz?= =?us-ascii?q?sGNz4h8WHYlMpwjL5AoBm8oxBz2pPYbJ2JOPZ7eK7WYNEUSndbXstJSiJPDIOy?= =?us-ascii?q?YZUMAeoPMulXs5TyqFkAohalGQmgGPnixiNUinLsw6E31fkqHwHc3AwnGtIDqH?= =?us-ascii?q?ParNTpO6cSS++1yLTDwzfEb/xK2jf975XDfxckofGMWrJ/bcnRyU40GgPGkFqQ?= =?us-ascii?q?s4rlMC2R1ugXtGib9eVgWPuphmU6qA9xuiCiytkxhoTGnI4Z1F/J+T9nzIooP9?= =?us-ascii?q?G1Rkx2bca5HJZUtyyWLZZ6T80iTm1ypio21KEKtYSlcCUKx5kqwQPUZeadfIiS?= =?us-ascii?q?+B3jUf6cITdmi3Jhf7Kynwuy8Uihyu34S8W51E5KoTBZntTNrHwCyQLc6tOCSv?= =?us-ascii?q?ty5Euh3CyA1wHX6u1eJEA0lK7bJ4Ygwr42iJUTrVzOEjHrlEj5lqOaaEop9vK2?= =?us-ascii?q?5+j6eLnrqJ2RO5dxig7kM6QunsK/Af4/MggLR2Wb/OS81Lr/8k36R7VHlf42nb?= =?us-ascii?q?fDsJDcO8sborS1AwhP0oYs8xq/FSup0MwEnXkbK1JIYAmHgJbtO1HPJvD4EPi+?= =?us-ascii?q?jk+wkDZr2//GPrrhDo/LLnjYirjtZ7l960lCyFl78dcK35tJDvkkJ/XpVwelrN?= =?us-ascii?q?nfCQU0Gxa5z+buFJN20YZICkyVBarMFaLZsVaMrsIoKOqLLNsQuDH2KP8N5PP0?= =?us-ascii?q?i3I931gHcv/6jtMsdHmkE6E+cA2ian32j4JESD9Ssw=3D=3D?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0AOAgDw2YJZfSUVGNZcGwEBAQMBAQEJA?= =?us-ascii?q?QEBFwEBBAEBCgEBgyyBVCePApEBkTuGa4VHAoUQAQEBAQEBAQECARIBAQkWCFe?= =?us-ascii?q?CMyQBgkABAQICAScTMQ4FCxkDAwECAQklDwU7DhOKJwsBrz46i04BAQEBAQEBA?= =?us-ascii?q?wEBAQEBAQEhgyiDToFjh1UeFYNVgjEFn3yUIA2CD4VYg1CHEUiVN4FhMiEIKQh?= =?us-ascii?q?JhRccgWl0hxWCQQEBAQ?= X-IPAS-Result: =?us-ascii?q?A0AOAgDw2YJZfSUVGNZcGwEBAQMBAQEJAQEBFwEBBAEBCgE?= =?us-ascii?q?BgyyBVCePApEBkTuGa4VHAoUQAQEBAQEBAQECARIBAQkWCFeCMyQBgkABAQICA?= =?us-ascii?q?ScTMQ4FCxkDAwECAQklDwU7DhOKJwsBrz46i04BAQEBAQEBAwEBAQEBAQEhgyi?= =?us-ascii?q?DToFjh1UeFYNVgjEFn3yUIA2CD4VYg1CHEUiVN4FhMiEIKQhJhRccgWl0hxWCQ?= =?us-ascii?q?QEBAQ?= X-IronPort-AV: E=Sophos;i="5.41,314,1498521600"; d="scan'208";a="786590" X-IronPort-Outbreak-Status: No, level 0, Unknown - Unknown Received: from uhil19pa06.eemsg.mail.mil (HELO uhil19pa06.eesmg.mail.mil) ([214.24.21.37]) by emsm-gh1-uea11.NCSC.MIL with ESMTP; 03 Aug 2017 08:12:00 +0000 Received: from localhost.localdomain (localhost [127.0.0.1]) by UHILFEID10.oob.disa.mil (Postfix) with SMTP id 3xNN7h27TWz1MNTM for ; Thu, 3 Aug 2017 08:12:00 +0000 (UTC) Received: from UHIL19PA13.eemsg.mil (unknown [192.168.14.17]) by UHILFEID10.oob.disa.mil (Postfix) with ESMTP id 3xNN7h1T6Pz1MNTL for ; Thu, 3 Aug 2017 08:12:00 +0000 (UTC) Authentication-Results: uhil19pa13.eemsg.mail.mil; dkim=neutral (message not signed) header.i=none X-EEMSG-check-008: 223640941|UHIL19PA13_EEMSG_MP11.csd.disa.mil X-EEMSG-check-004: IN;192.168.5.1 X-EEMSG-SBRS: 3.5 X-EEMSG-ORIG-IP: 195.135.220.15 X-EEMSG-check-002: true X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A0CmAABX14JZhw/ch8NcGwEBAQMBAQEJAQEBhSsnjg9zkQGRO4RZghKFRwKEeBgBAgEBAQEBAQETAQEBCgsJCCgvhRgBAQEBAgEnEzEOBQsLDgMDAQIBCSUPBTsOE4onDK9DOotOAQEBAQEBAQMBAQEBAQEBIYMog06BY4MnhC4eFYNVgjEFn3yUIA2CD4VYg1CHEUiVNx+BQjIhCCkISYUXEAyBaXSHFYJBAQEB X-IPAS-Result: A0CmAABX14JZhw/ch8NcGwEBAQMBAQEJAQEBhSsnjg9zkQGRO4RZghKFRwKEeBgBAgEBAQEBAQETAQEBCgsJCCgvhRgBAQEBAgEnEzEOBQsLDgMDAQIBCSUPBTsOE4onDK9DOotOAQEBAQEBAQMBAQEBAQEBIYMog06BY4MnhC4eFYNVgjEFn3yUIA2CD4VYg1CHEUiVNx+BQjIhCCkISYUXEAyBaXSHFYJBAQEB Received: from mx2.suse.de (HELO mx1.suse.de) ([195.135.220.15]) by uhil19pa13.eemsg.mail.mil with ESMTP; 03 Aug 2017 08:11:57 +0000 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (charybdis-ext.suse.de [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id 6907AAF57; Thu, 3 Aug 2017 08:11:53 +0000 (UTC) Date: Thu, 3 Aug 2017 10:11:52 +0200 X-EEMSG-check-009: 444-444 From: Michal Hocko To: Paul Moore Message-ID: <20170803081152.GC12521@dhcp22.suse.cz> References: <20170802105018.GA2529@dhcp22.suse.cz> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.23 (2014-03-12) X-Mailman-Approved-At: Thu, 03 Aug 2017 08:30:29 -0400 Subject: Re: suspicious __GFP_NOMEMALLOC in selinux X-BeenThere: selinux@tycho.nsa.gov X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Security-Enhanced Linux \(SELinux\) mailing list" List-Post: List-Help: Cc: Mel Gorman , LKML , selinux@tycho.nsa.gov, linux-mm@kvack.org Errors-To: selinux-bounces@tycho.nsa.gov Sender: "Selinux" X-Virus-Scanned: ClamAV using ClamSMTP [CC Mel] On Wed 02-08-17 17:45:56, Paul Moore wrote: > On Wed, Aug 2, 2017 at 6:50 AM, Michal Hocko wrote: > > Hi, > > while doing something completely unrelated to selinux I've noticed a > > really strange __GFP_NOMEMALLOC usage pattern in selinux, especially > > GFP_ATOMIC | __GFP_NOMEMALLOC doesn't make much sense to me. GFP_ATOMIC > > on its own allows to access memory reserves while the later flag tells > > we cannot use memory reserves at all. The primary usecase for > > __GFP_NOMEMALLOC is to override a global PF_MEMALLOC should there be a > > need. > > > > It all leads to fa1aa143ac4a ("selinux: extended permissions for > > ioctls") which doesn't explain this aspect so let me ask. Why is the > > flag used at all? Moreover shouldn't GFP_ATOMIC be actually GFP_NOWAIT. > > What makes this path important to access memory reserves? > > [NOTE: added the SELinux list to the CC line, please include that list > when asking SELinux questions] Sorry about that. Will keep it in mind for next posts > The GFP_ATOMIC|__GFP_NOMEMALLOC use in SELinux appears to be limited > to security/selinux/avc.c, and digging a bit, I'm guessing commit > fa1aa143ac4a copied the combination from 6290c2c43973 ("selinux: tag > avc cache alloc as non-critical") and the avc_alloc_node() function. Thanks for the pointer. That makes much more sense now. Back in 2012 we really didn't have a good way to distinguish non sleeping and atomic with reserves allocations. > I can't say that I'm an expert at the vm subsystem and the variety of > different GFP_* flags, but your suggestion of moving to GFP_NOWAIT in > security/selinux/avc.c seems reasonable and in keeping with the idea > behind commit 6290c2c43973. What do you think about the following? I haven't tested it but it should be rather straightforward. Acked-by: Mel Gorman --- From 6d506a75da83c0724ed399966971711f37d67411 Mon Sep 17 00:00:00 2001 From: Michal Hocko Date: Thu, 3 Aug 2017 10:04:20 +0200 Subject: [PATCH] selinux: replace GFP_ATOMIC | __GFP_NOMEMALLOC with GFP_NOWAIT selinux avc code uses a weird combination of gfp flags. It asks for GFP_ATOMIC which allows access to memory reserves while it requests to not consume memory reserves by __GFP_NOMEMALLOC. This seems to be copying the pattern from 6290c2c43973 ("selinux: tag avc cache alloc as non-critical"). Back then (before d0164adc89f6 ("mm, page_alloc: distinguish between being unable to sleep, unwilling to sleep and avoiding waking kswapd")) we didn't have a good way to distinguish nowait and atomic allocations so the construct made some sense. Now we do not have to play tricks though and GFP_NOWAIT will provide the required semantic (aka do not sleep and do not consume any memory reserves). Signed-off-by: Michal Hocko --- security/selinux/avc.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/security/selinux/avc.c b/security/selinux/avc.c index 4b4293194aee..b2c159e832b6 100644 --- a/security/selinux/avc.c +++ b/security/selinux/avc.c @@ -346,27 +346,26 @@ static struct avc_xperms_decision_node struct avc_xperms_decision_node *xpd_node; struct extended_perms_decision *xpd; - xpd_node = kmem_cache_zalloc(avc_xperms_decision_cachep, - GFP_ATOMIC | __GFP_NOMEMALLOC); + xpd_node = kmem_cache_zalloc(avc_xperms_decision_cachep, GFP_NOWAIT); if (!xpd_node) return NULL; xpd = &xpd_node->xpd; if (which & XPERMS_ALLOWED) { xpd->allowed = kmem_cache_zalloc(avc_xperms_data_cachep, - GFP_ATOMIC | __GFP_NOMEMALLOC); + GFP_NOWAIT); if (!xpd->allowed) goto error; } if (which & XPERMS_AUDITALLOW) { xpd->auditallow = kmem_cache_zalloc(avc_xperms_data_cachep, - GFP_ATOMIC | __GFP_NOMEMALLOC); + GFP_NOWAIT); if (!xpd->auditallow) goto error; } if (which & XPERMS_DONTAUDIT) { xpd->dontaudit = kmem_cache_zalloc(avc_xperms_data_cachep, - GFP_ATOMIC | __GFP_NOMEMALLOC); + GFP_NOWAIT); if (!xpd->dontaudit) goto error; } @@ -394,8 +393,7 @@ static struct avc_xperms_node *avc_xperms_alloc(void) { struct avc_xperms_node *xp_node; - xp_node = kmem_cache_zalloc(avc_xperms_cachep, - GFP_ATOMIC|__GFP_NOMEMALLOC); + xp_node = kmem_cache_zalloc(avc_xperms_cachep, GFP_NOWAIT); if (!xp_node) return xp_node; INIT_LIST_HEAD(&xp_node->xpd_head); @@ -548,7 +546,7 @@ static struct avc_node *avc_alloc_node(void) { struct avc_node *node; - node = kmem_cache_zalloc(avc_node_cachep, GFP_ATOMIC|__GFP_NOMEMALLOC); + node = kmem_cache_zalloc(avc_node_cachep, GFP_NOWAIT); if (!node) goto out;