From patchwork Wed May 30 14:11:00 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Enderborg X-Patchwork-Id: 10439105 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 A726460327 for ; Wed, 30 May 2018 14:23:18 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 90B1028AF7 for ; Wed, 30 May 2018 14:23:18 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 8511428A14; Wed, 30 May 2018 14:23: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=-5.2 required=2.0 tests=BAYES_00, MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED autolearn=ham version=3.3.1 Received: from UCOL19PA10.eemsg.mail.mil (ucol19pa10.eemsg.mail.mil [214.24.24.83]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 0ED5F287C8 for ; Wed, 30 May 2018 14:23:16 +0000 (UTC) X-IronPort-AV: E=Sophos;i="5.49,460,1520899200"; d="scan'208";a="523948387" Received: from emsm-gh1-uea11.ncsc.mil ([214.29.60.3]) by UCOL19PA10.eemsg.mail.mil with ESMTP; 30 May 2018 14:21:12 +0000 X-IronPort-AV: E=Sophos;i="5.49,460,1520899200"; d="scan'208";a="13920443" IronPort-PHdr: =?us-ascii?q?9a23=3A08Z/BBcKyRfGvX5WnANPIYr/lGMj4u6mDksu8p?= =?us-ascii?q?Mizoh2WeGdxcq6ZBGN2/xhgRfzUJnB7Loc0qyK6/2mATRIyK3CmUhKSIZLWR?= =?us-ascii?q?4BhJdetC0bK+nBN3fGKuX3ZTcxBsVIWQwt1Xi6NU9IBJS2PAWK8TW94jEIBx?= =?us-ascii?q?rwKxd+KPjrFY7OlcS30P2594HObwlSizexfbN/IA+qoQnNq8IbnZZsJqEtxx?= =?us-ascii?q?XTv3BGYf5WxWRmJVKSmxbz+MK994N9/ipTpvws6ddOXb31cKokQ7NYCi8mM3?= =?us-ascii?q?0u683wqRbDVwqP6WACXWgQjxFFHhLK7BD+Xpf2ryv6qu9w0zSUMMHqUbw5Xy?= =?us-ascii?q?mp4rx1QxH0ligIKz858HnWisNuiqJbvAmhrAF7z4LNfY2ZKOZycqbbcNwUX2?= =?us-ascii?q?pBWttaWTJHDI2ycoADC/MNMftEo4X4oVYFsBmwChS2BO73yjFGmHH406493e?= =?us-ascii?q?sjHwHJ0xEuH8oMvXjJotj6KKgcXv6uzKTT0TXObelb1Svn5YTUbBwsp+yHU7?= =?us-ascii?q?JqccrWzEkiDxnLgUuMqYP7JTOey+sDs26G4OV+T+KgkGknqxt+ojOywcoskp?= =?us-ascii?q?fGhp4LxVDe7yl23oA1KsCmR05hetGkF4FQty6BOottRcMiRWFptDwmxb0BvJ?= =?us-ascii?q?62ZS4Hw4kpyR7YbvyIaYmI4hT7WeaQOjh3mnRld6+nhxa160ig1vfwWdSq31?= =?us-ascii?q?ZUqCdOj9rCtmgV2hDO5cWKReFx80e81TqVyQze5f9ILVopmabDJZMswKQ8mo?= =?us-ascii?q?cdvEnHBCP6hUX7ga6Mekk6/uWl7fnsbK/8qZ+GLYB0jxnzMqEpmsOiH+s1Kh?= =?us-ascii?q?MOX22H+eSk073j4FH5TK1KjvIolqnZt4jXJdgBqa6jAg9Vz50j5wyjDzamzN?= =?us-ascii?q?sYnX4HIEhDeB2blIjmJ0vCIPX5Dfe7m1iskTFryO7aPrD5H5nAIXfOnK3hcL?= =?us-ascii?q?pg8UJQ1gU+wc5F655JEr0BJej8Wk71tNzWFB85NAm0zv78CNpj0oMeWGSPAr?= =?us-ascii?q?KWMa/LqlCI4f8vI++Qa4ALozbwMOQl5v7ygn85nl8RZ6+p3YANZ3yiEfRmJF?= =?us-ascii?q?uZbWL2gtgdCWcKohY+TOvyhV2AVj5TYWy9X7485j4hDoKrFoXDRoergLyExi?= =?us-ascii?q?i7BYFWaX5cClCXC3vocJ+EW/gUYiKIPsBhiiAEVaSmS4I51xGuthX1xKZkLu?= =?us-ascii?q?rP/S0Ys5Pj1MZu6u3dkREy6DN1AN+A02GLU2F0g3kERzgs3KBwuUZ90EuM0b?= =?us-ascii?q?Bkg/xEEtxe//1IUgY+NZ7Z0eN6Ecv/WgzfcdiUT1amWM+pASkrTtI2wd8BfV?= =?us-ascii?q?pyG8m4ghDExSqqDKcfl6aXC5ws7qLcw3/xKt5gxHna0akhiF8mQtdSOWC9mK?= =?us-ascii?q?5w6RLTB4/IkkWekaamb6Ic0zDR9G2b12qBoFlYUBJsUaXCRX0Qe1fWos7j5k?= =?us-ascii?q?7ZU7CuDrEnPRdbxs6ZNqtGcNvpgktaRP37ItTRf3qxm3usBRaP3r6MYpDqdH?= =?us-ascii?q?8b3CrBCUgEiBse/XOeNQg/HyuhuGzfDCd0GVLoeUPs/vF0qGmnQU8s0wGKc0?= =?us-ascii?q?ph2qK2+hEPhvycTO4T06kHuCg7qDV0G0u908jRC9qaqAprZL9cbs8l4FdbyW?= =?us-ascii?q?LZsBRwMYa9IKB4h14RbR53slj02BprD4VMi88qrGklzABqM6KXzEtBdy+E3Z?= =?us-ascii?q?D3IrDXMHT98w20Zq7Z31Hf38ya+qER5/Qks1/jph2mFlI+83V71NlYy2Cc5p?= =?us-ascii?q?vQDAoVSpLxTl069wN8p7HdbCg94pnb1Xt2PamyrDDCx8ojBPE5xRa4Y9dfLK?= =?us-ascii?q?SEGRf8EsIAA8iuNPIlm0Kybh8fIuBd6rQ0MNi7d/uDwqKrO/xgnD2+h2Rd/I?= =?us-ascii?q?99yl6M9zZ7SuPQ2ZYFwvWY3g+ZWDfnl1quqN74mZpDZT0IGWq/0yfkDpZLZq?= =?us-ascii?q?JuZYYLFXuuI8qvy9Vghp7iR2JY9Fm5B18cxMCpeR2Sb1ry3QBL0UQXoHqnlj?= =?us-ascii?q?GizzxziT0pqbCf3CPWyeT4aBUHInJLRHVljVr0JYi0jssaXFSxYwgyihSl4U?= =?us-ascii?q?f6x65GpKVwNGTTWl9IfynwL2FjTqSwraCOY8hR55M0qS9XSvizYUiGSr7hpB?= =?us-ascii?q?sXyznjH2xaxDA/aT6qoIn2nxt0iW+GN3ZzsWbWedpqyRfY/tzcSuZb3iAaSy?= =?us-ascii?q?lglTnXGl+8MsGq/dqKkZfDqfuzV2G/WZ1Vainry52PtDeh6W1tGx2/kOi5ms?= =?us-ascii?q?f7HggizS/7y95qWD3QrBnmf4nr07q1Mfp9cUluGF/z9dB6F5pjkosrmp4Qw2?= =?us-ascii?q?Maio+O/XoAjGfzK8lU1rzwbHoKXz4LzMDa7BLj2EJ9MnKD35j5WWmFwst9e9?= =?us-ascii?q?m6ZXsb2jw7789XE6qU8rpEkjZ1olaiqwLef+R9lC8HyfQy8H4an/0JuA01wy?= =?us-ascii?q?WFGL8SAE1YMDfwmBSJ89C/rLxbZGi1fri2zkZ+msqhDL6aqAFGRHn5YosiHT?= =?us-ascii?q?N37shnPlLDynvz6p3jeNnVdt8TuAObnArHj+hPMp0xjuAKhS1lOW3joXIl1/?= =?us-ascii?q?Q3jRt03ZG1pIKHMXli/LqlAh5EMT34f8YT9SvpjaZagMmWw5yvEY97FTgQWp?= =?us-ascii?q?vnU+6oECkOuvv9LwaBDicwqnGFFrrDBQWf8ltpr2rTE5C3MHGaPHcZzc98Sx?= =?us-ascii?q?aAP0xQmgYUXCk9np4iDQ2l3tDucEJj6jAW/F74pQNGyvh0OBnnTmffuACoZy?= =?us-ascii?q?8ySJiFNhVW9hlC6lzbMcyf9OJzBD1Y/pOgrAyLMGObYRhHDWATVUyAHVzjOa?= =?us-ascii?q?Ou5dbY+eiCGuW+N+fOYamJqeFGT/eH24mg3ZVg/zaNKsWPOWJvD/wl1UVdQ3?= =?us-ascii?q?91AcPZmy8ASyYPjSLCc9abpAug+i1wts2w6+/kVAXr5YuOELtSLc5v9wqtga?= =?us-ascii?q?idK+Gcnj15Jihc1pMNw3/I1bce0UUOhCBubTmtDK8AuTTDTa3Khq9XFBkbay?= =?us-ascii?q?VpOMtP9aI80RFHOdTHhdPtyr54kvk1Bk9eWlzglcGpYsoKLnqgO1zZH0mLNa?= =?us-ascii?q?6JJTvRz8Hwe6O8RqVajP9IuB2opTabD0jjMyyZmDnmTR+vL/9DgTqcPBxGpo?= =?us-ascii?q?69dBNtBnLiTNLicRK7N9B2gScxwb0uiXPALXQcPiRkc0NRsr2Q6jtVgul4G2?= =?us-ascii?q?xE9HZlN+6EmieH4OneMZkWq/xrDTp3l+9B/Hs6zL5V4z1eS/xuhCvetNhurE?= =?us-ascii?q?+6kuOX0DpoTAJOqipXhIKMpUhiO6XZ95lYWXbD+BIN7HmQBAoRqttgC93vp7?= =?us-ascii?q?pQxcbVmKL0MjdC/Mre/dEACMjMNMKHLH0hPALqGD/UCAsKUyWmNWTYh0xTnv?= =?us-ascii?q?Gd6GGVroQ6qpjrnZoBVKVXVForGfMGEk5lBsANII9rXjM4lr6WlMgI6mSkox?= =?us-ascii?q?nVX8havZfHVumOAfr1LjaZlrpEZxoSzbP+M4sTKpXx21Z+ZVligITKB03QUM?= =?us-ascii?q?hXoiJ/dQ87vl9C8GJiQW0zwE/qcQKt4GUOGv6zkB42khF+bvot9Tv25Vc4OE?= =?us-ascii?q?bKrjMqkEYtgdXlnSyRcDnpIaitWoFWDSz0uFUvPZP/QgZ4dhe9klJ+NDfDXb?= =?us-ascii?q?5RiKFgdW9zgg/GpZRPAeJcTbFDYBII2P6Yfeso0VVBpSW83kJI//HFCYFllA?= =?us-ascii?q?okap6jsW5P2x95bN40OazRJLBFzl5OiaKSpiWozPw+wBcCJ0YR92OfYCoIuE?= =?us-ascii?q?sSNrY4ISqp/+ts5BeNmztFZWgATf0qouhl9kklIeSP0zrg06JfKkC2L+GfNL?= =?us-ascii?q?2Wu2zBlc6OX1Mx2VgFmFVC/bhzzcgsaVGUV1w1wLuXCRsJKdLIKRtJYMpK6H?= =?us-ascii?q?jTYSGOvP3RwZJ0OoW9EfzoTe+OtasPn02kHQYoEJ4X4cgbGJmjzl3YJ9/9LL?= =?us-ascii?q?EZ0RUt+BjrJFKdAftTfBKLkSsIrN+nw59y3YhdIDYdAWNnPiis/bnXpxUlgP?= =?us-ascii?q?yaUNc4f3cWRI0EOWwqWMeigS5Wo2xADCWr0uIe0AWN9CHzpiLLATbmctVjeu?= =?us-ascii?q?mbZQl3CN6s4zU+87K6iVnN8pXRP2v6L8htusfT6eMGoJaKE/xUTaR8s0fYn4?= =?us-ascii?q?lXWXmqXnXSHtGrPJfwapMjbdruBna9SFy/hCo/T93tM9a1MqiInQboSJ5OsI?= =?us-ascii?q?md3TAsKc+9FjYaGxdrv+8N/b9yaxcfbpQ8ehPnqwM+N6mjLwiCydWuX3yhKT?= =?us-ascii?q?1IQPlD1e+6faBYzzIwbu+mz3stVos6wPOt8U4KX54HlQ3exey5aIlATyfzHn?= =?us-ascii?q?1dewPApSo9lmhhOeYywvsxwBzSq1kcNiqHdOp3Z2xYp9s8H0+dIW1qCmokQF?= =?us-ascii?q?+RlYTC7hSw0LAS/itdmtdU3vdGsHXlv5/QfiyjV7KxpZXSqSogYsAso7dtPo?= =?us-ascii?q?z7PsuGqJTekyTaTJbKqA2FUzC1F+ZbmthWLyJVW/dJlnsjOcMavYpB7lcxWd?= =?us-ascii?q?olJ7BVDqkjuKyqYyJ+DSEO1S8ZS5+A3Dsaj+imwbvaixGQfI4hMBEfsZVCg9?= =?us-ascii?q?odUzJtbS8Eoq+sSZnWnXeeSmcXOAcT8RhM5AUYm49xeODl/JTHTJtSxD5Tvf?= =?us-ascii?q?10TjHLF5lz+lv8UmGZn174SPC7nOyo2QJd1/Xs09YBVB54E0hdyP5cllE0J7?= =?us-ascii?q?FvN6kQoonKvyeUdUP9uWLg0/emKEVUycLPbVH4CpTKtXbkWC0G5XIUXZNPyG?= =?us-ascii?q?3YFZkKkwp2crwrq09III+7YUvx+iIrx5xxH7amUcCk2UwloWwBRyewHNpLE/?= =?us-ascii?q?tmv07PWD15f5Crr43oO5dVQmBO45CStklWkF5zPC6j1ZpTNdxC7iQKXDdRvT?= =?us-ascii?q?WXpMGyR9Fb2c9qE58MJc9yu2vgF6xZOZieuXk2t6fzxX/e/jAzrE21xC6vG6?= =?us-ascii?q?OiSeJW4XEeEB0zJ2uCskkvE/cs8mDK/1/WvFB74/tXC7qSgUh/uztyApdOBj?= =?us-ascii?q?NV2n+/NFRzUGNKs+NEJ6TJa8ZcWeU9ZQezOxwiEv4rx1aJ8l9pknf5eSNyqh?= =?us-ascii?q?BX+yTaXwkqSyYZnKvimToDpc65IzMaTYxHbSk5ZSffNw2bgTxXvApYa0xyQ5?= =?us-ascii?q?AZGcpF9KsG0otI5cfCUkGsKTwfXBN+KA041+ZflVRZv0WcYyzdChCodfnXuB?= =?us-ascii?q?1tYciRtNKpLOj+/ApfloPnqv43+LseSHC9hA2tRczer5Xmud2Ut0uOc6P4PP?= =?us-ascii?q?OgYXPbSzjMlx+wj68+D5bW5yjTLBZbK55ixHome5fhE2nLPQ9CJ60BOUpWTq?= =?us-ascii?q?V6achCouBGZs9rZKcJ9rVrBhKcXB/vH5avrPZeJFbJWTveNzmB8vC4oY/L77?= =?us-ascii?q?zSU+7gZsKWx3bAXq14IIx36SXhFLfsyo9e/VD62vFz+UNmUVLGKTyOrMz9Jg?= =?us-ascii?q?MX48mvbk3ivpkyEDPXBpdwlWDhxkBGd8oZWS2l6o8YyI9D6HbtVe14zlXzsP?= =?us-ascii?q?dM+LV+7ok3+b9pw9+uJajOMfRarVNnAh+MCwVs95UiHG9/R2RLbe8KMvvRfK?= =?us-ascii?q?MZjcf1q+DsDKEX7RKY+uNDZdvAPUHBldG1CiuARhxcgAcBtTkaIxOA2PGfn6?= =?us-ascii?q?97V92lpfT520Iq+FW+NQIJzLFz6oeC5qqIpfXYYwHXzbcaRqjgXtnzoag0u0?= =?us-ascii?q?OO+f0kk6YDemhuYw2iEOUQTcAdyXn9wqAt1yIjCdvDH6jn+P5BSX02gi7gl4?= =?us-ascii?q?p6H1UMFfMeBaCL8phGnmckh+zZMcUbcqJDmmaKDhOkF6ENyH615CuNIWllhB?= =?us-ascii?q?7O3wv2QWyt8F/8tTV4TjfUz9f/jkpVUaG6BUZTXiWzI0B3rCiCPBH2u9rrp6?= =?us-ascii?q?s68Fs6Mmv+tNKCjGGhIq9YH9XjJNyAJik5vEkYjJwqRt2hw48bG9u9IMsJ8H?= =?us-ascii?q?5kc/ve73imnDNGo6hamYXR+NyV+u/QHXm6laKWsbKNxCpXynIgp1Ew9sigNu?= =?us-ascii?q?3S592NW/moz3weTztjtAvBUR+1rabbr1MNNUyQzkjLnI0KPtdE3Xg3zUzm/P?= =?us-ascii?q?IsQM4v+wVeGIfAYOkCpTPpNDv331mfedQ3WTea0zdNGVL1C1Z4ErAm2G3spM?= =?us-ascii?q?LJiWvQ+1owS4l/bUPnnwJ4D5k4KU827FgXwzYDHhYNaR+BEbGoHl7pLY0aWk?= =?us-ascii?q?gfcR6HxqS1er8r3U1vxbOi/ODTYvJ6B6oRMfZdiQmCnENFFZISsK0eRq98el?= =?us-ascii?q?BG+a7TuAfiEYjmUOL8mXo2K/K1XthQ8doFuHs6/ga/Wx2g5I9f4LYZkp+Har?= =?us-ascii?q?VJboTLvMB460dn5CAAdjZRgBdhkxy5UfoQpOf54tjUqJCo8PqhVL4xR+UL8B?= =?us-ascii?q?g5H2F+j5z2gFA/rtHYyfxRSojUiYvl9gBCPWKKuYjd0xlmKuoOMJinfLB++H?= =?us-ascii?q?UbPyIePW4BPcKKa/kg5C9gKDrT6EBZAsMXfN8WIcXDlwZVik3vRbFS+dHWGl?= =?us-ascii?q?CdC4hpccAn8XD7yDcv8ZszSuzg8iO5JYjD71FROPNOlCdslNXCpOgT2/bdFC?= =?us-ascii?q?gX4X2EaxdowyKCyp+NC+3z/eWN09zUSVIGHjAsXIdZOTWC+BarRuyrm5X1Sg?= =?us-ascii?q?mU8NP8gIoidEKMQXy8hKUFsrhWHu5GkSj72iVeGZ30h/KSqNqg8mxXtkdIEI?= =?us-ascii?q?xr9x3KBL1fPolnORT/jsSrRFZzBiXxeMHQbRcvtvCZxuES7OViLUf+Y5EUIg?= =?us-ascii?q?4cwbLg9XVVVhduSKLxvluBUuIRYNxmSf3aoXBR7YJtMLQPPF+bpJzrsjhEsl?= =?us-ascii?q?Y2DxE1aLUotDxValHOnBFJW6bzoLMAjwocUd16uU9LAm+wOngx5znAVaRTkq?= =?us-ascii?q?aRDuYZ8jONQawSS09oKD9xQwup2JVyfLukhetIvX1AniNhu/UqyDhmRByguS?= =?us-ascii?q?3wuaICxy8v9Ku/tDUbtnxPVv+enDvQCVVf0PQKir8RC27l6Vy4enYDdoXz4L?= =?us-ascii?q?5jJcTu7oQh5nM/YRI4fyIYQeugESbwj7iTAoyOttJciwSBuMLUbb+8NSISLK?= =?us-ascii?q?gyyQr/R3hh1QjThBho/3UPQjWh9N8rOp6wOMckxiqtHGjUakwM4qdXv8frsl?= =?us-ascii?q?4LVuQ2Y0t7wGp/ysiHWjENRMvXFmc7lggkc2REf45d5hIBEqkogyqIvrNY8Q?= =?us-ascii?q?0OZzfUCIul8JHKncjUwXk9UctqxmXOq62CgpMlzmZom8tw7iGUo3QSa+3YXN?= =?us-ascii?q?NwAnjpyIhQ1/byZ/OzveAbUIFm0qiuUOceMsm//mu7wJFqWk6jxrQDEFu1Ke?= =?us-ascii?q?sDxrbAUye5Um2VQuWLfHKKnzY+KELy4gOoLlIvYsdQs0A9KvfChoJblwD5VL?= =?us-ascii?q?N7XDmfpV/azGwlNuMXbBw2uIahewMUSO4RZu6cJfUhwfEkD1sMdXDJFzNsC+?= =?us-ascii?q?CqqV6tgJR7O3J47EX4e+vt8QfmP8CJFxkZF47asp5x+funRmKOOX9g0Ad+PE?= =?us-ascii?q?9q+OfDD14xrPNTc46NndjMgNR2yewFd/JqMS0noN4Tm5lj5JKS0MiQdBHe0J?= =?us-ascii?q?fyKcvSoviCDP3V114qdX1CUroFfQP14J03PsU3W73WAbRUvBcRCLMkQJM/LW?= =?us-ascii?q?fx9aB1LAR1cgLLYrS7nNXq9aq3Yc4Av3LK40h2ISHQtgcJzea7ZRd8aYHsjH?= =?us-ascii?q?L3dtR4fjtcq5VIDRx8EcMbA8odqyK/CoOQ3aS8jMW8vUh9vrlO+ZHsB+jK2d?= =?us-ascii?q?Lx5IB4W5xX9ATfJzrKLLV6iURiyOKpi7HP1YenTYvPY9IPHNByWG/eIuvLBo?= =?us-ascii?q?ylKymmIsvmelVe97eX3fR+SBrHIGjbVq+Lr2WBM+9+4F5zno5xeefIijhr6r?= =?us-ascii?q?bBwtrpT2ZBryynoDiCM54JqBTmDOrfUhYca+ef/2tjBuVDYYLy9eoKM/Qnzd?= =?us-ascii?q?yY6g90/HJJ187TZ+CNqVLDkmZ2eZzcNkehjyo9VIUEJw6zGVEhjW/QtjLWBn?= =?us-ascii?q?EKaoDwMsRpgdCIHjTx9kJxnicrfWcHFW32E5PZbWwa3d+uIRaH/x9RDsoS2u?= =?us-ascii?q?uwdVM8u4WsRuRyfJZIg+OnsPMAi9k/b2mbQMlcIjGVL7JsODdVJvvAqUJuYR?= =?us-ascii?q?MetbUxHIAvas7KaAk8PV2PxGvfhU2K8UTwc82qnu7dOysM/Xhvz7vB1SlK4Q?= =?us-ascii?q?K+vKDdyofbWa3dJLy+Grb3OwkoUDeXVH56RV6g5FOhsPksuPuePHdZvFYZfm?= =?us-ascii?q?STAgtVradq+4v+FGjWzNVuYJAQzN2cVy3qQipim+JmHitXuFrKTvwPGBPcaG?= =?us-ascii?q?XuqHFbvh3kLfhJqyG2J4aEz7ZYDrRFSrBHdeeUFp6BIKgEfWUhiykZNeCgft?= =?us-ascii?q?bVs7c+1BfSQHAEF7XTqwbMUVacTqXN3zuzBMMYso0vtWwt89PU2Cp2F/etXf?= =?us-ascii?q?6TpD+rp4i/iivQ+ejTTXIkbEF9huUeSHKAzx9NJCBMC9wctEz3BK/VYUFK2X?= =?us-ascii?q?8=3D?= X-IPAS-Result: =?us-ascii?q?A2AKAgANsg5b/wHyM5BcGQEBAQEBAQEBAQEBAQcBAQEBA?= =?us-ascii?q?YNBA4EFXBYSjFqMAYF5gQ+TUIFZLhMBhl4hOBQBAgEBAQEBAQIBayhCDgGBZ?= =?us-ascii?q?CQBgk8DAwECJBMUIAsDAwkBAR8fAggIAwEtFREGAQcLBRgEgwGCAQMBpx0zg?= =?us-ascii?q?3gBAYRLgWiIN4FUP4EPhzkUARIBhXMCh0SEZ4w6BwKBZ4xuC40MkmshYXFNI?= =?us-ascii?q?1CCQ4IgFxGNUAE0A216AQGIDoRUgjgBAQ?= Received: from tarius.tycho.ncsc.mil ([144.51.242.1]) by emsm-gh1-uea11.NCSC.MIL with ESMTP; 30 May 2018 14:21:11 +0000 Received: from prometheus.infosec.tycho.ncsc.mil (prometheus.infosec.tycho.ncsc.mil [192.168.25.40]) by tarius.tycho.ncsc.mil (8.14.4/8.14.4) with ESMTP id w4UEL9gO011803; Wed, 30 May 2018 10:21:10 -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 w4UEDmeN011046 for ; Wed, 30 May 2018 10:13:48 -0400 Received: from goalie.tycho.ncsc.mil (goalie.infosec.tycho.ncsc.mil [144.51.242.250]) by tarius.tycho.ncsc.mil (8.14.4/8.14.4) with ESMTP id w4UEDpaF011085; Wed, 30 May 2018 10:13:51 -0400 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A1BrAQBYsQ5bly0bGNZcGwEBAQEDAQEBC?= =?us-ascii?q?QEBAYNBgWQWEphbgXmBD5U0hHcCghwhNxUBAgEBAQEBAQIUAQEBAQEGGAaGAAM?= =?us-ascii?q?DJ1IQIB8HC1cGAQ0FgyKCBAGnGTODeAEBhEuBaIg3gVQ/gQ+HOYYbAodEhGeMO?= =?us-ascii?q?gcCgWeMbguNDJJqgXRNI1CCQ4IgDgkRjVABNANtkBYBAQ?= X-IPAS-Result: =?us-ascii?q?A1BrAQBYsQ5bly0bGNZcGwEBAQEDAQEBCQEBAYNBgWQWEph?= =?us-ascii?q?bgXmBD5U0hHcCghwhNxUBAgEBAQEBAQIUAQEBAQEGGAaGAAMDJ1IQIB8HC1cGA?= =?us-ascii?q?Q0FgyKCBAGnGTODeAEBhEuBaIg3gVQ/gQ+HOYYbAodEhGeMOgcCgWeMbguNDJJ?= =?us-ascii?q?qgXRNI1CCQ4IgDgkRjVABNANtkBYBAQ?= X-IronPort-AV: E=Sophos;i="5.49,460,1520913600"; d="scan'208";a="288405" Received: from emsm-gh1-uea11.ncsc.mil ([214.29.60.35]) by goalie.tycho.ncsc.mil with ESMTP; 30 May 2018 10:13:40 -0400 IronPort-PHdr: =?us-ascii?q?9a23=3AAw9VBRzmpVr/Zo/XCy+O+j09IxM/srCxBDY+r6?= =?us-ascii?q?Qd0ukWKfad9pjvdHbS+e9qxAeQG9mDtrQc06L/iOPJYSQ4+5GPsXQPItRndi?= =?us-ascii?q?QuroEopTEmG9OPEkbhLfTnPGQQFcVGU0J5rTngaRAGUMnxaEfPrXKs8DUcBg?= =?us-ascii?q?vwNRZvJuTyB4Xek9m72/q99pHPYwhEniaxba9vJxiqsAvdsdUbj5F/Iagr0B?= =?us-ascii?q?vJpXVIe+VSxWx2IF+Yggjx6MSt8pN96ipco/0u+dJOXqX8ZKQ4UKdXDC86PG?= =?us-ascii?q?Av5c3krgfMQA2S7XYBSGoWkx5IAw/Y7BHmW5r6ryX3uvZh1CScIMb7Vq4/Vy?= =?us-ascii?q?i84Kh3SR/okCYHOCA/8GHLkcx7kaZXrAu8qxBj34LYZYeYP+d8cKzAZ9MXXX?= =?us-ascii?q?dPUMZPWSJPAY2yaIkAD+QOMulEtIT9u0cCoAGiCQS2GO/j1jlFjWL2060g1O?= =?us-ascii?q?QhFBnL0hY+ENISrnvUtsj+OqgUUe+o0qbI1y7Mb/RM2Tfy9YPFdQghru+QXb?= =?us-ascii?q?1ua8rd01cgFwXYgVqOs4zqJDSV1v4Cs2WA9OpgUuSvim49pw5tpTivw94hh4?= =?us-ascii?q?/UjYwbzVDE8D92wIczJdCgSU50esCrEJ1NuCGCMIt2WN8iT3t1tykk1L0Lv4?= =?us-ascii?q?OwcisSyJk/2RLTdvOKf5KW7h/sTuqdPzV1iGhqdb+/nxq//0qtxvfhWsS61F?= =?us-ascii?q?tGtDdJn9nNu3wXyRDe7s6KQeZn8Ei7wzaAzQXT5/lEIU8qkarbLIYszbAqmJ?= =?us-ascii?q?Qdr0nOEDH7ll/qgaOKd0go4Pan5PriYrX9qZ+QLYp0hRv/MqQqgMC/BOU4Mg?= =?us-ascii?q?wWU2ia/+SzyqHj8FXnTLlXgfA6iLfVvZ/AKcgFpKO1GQBY34Y75xa6FTim0d?= =?us-ascii?q?AYnXcdLFJCfRKKl5LnNE/SIP/mF/ezmVuikDF2yP/YJL3uGZLNLmLMkLr6Zr?= =?us-ascii?q?Z97EhcyQopwd9D4JJUD6kNIOjvVU/pqNzYEhg5PhSvw+n6E9VwzZ8eWGKTDa?= =?us-ascii?q?+ZN6Peq1mI5vk1LOWWa48Vvyj9IeA/5/HylX85hUMdfa6x0JsMdn+4GvVmI0?= =?us-ascii?q?OEYXvjmdoBDWcLsRY+TOztklGCVyVTaGyoU6Iz4TE7FtHuMYCWEpignLGbmi?= =?us-ascii?q?q9EpBMbGdcBXiXFnH5MY6DXqFIIBqbP8sptzsDT7XpH5coyBWGrAbnz/9iKe?= =?us-ascii?q?3O92sTspe1kJBO++DLlRw0vQdxBsCZ3nDFG3p4hUsUVjQ22+Z5ukU7xVCdh+?= =?us-ascii?q?wwruZZHpRr7ulISU9uOIbV1e1hI8j7QAPaZtOAQ1vgRc+pV3V5bNs0zsRGRk?= =?us-ascii?q?FnAdS5xkTB1i+nGPkR0bmMHoY16YrbxXH6I8s7wHHDgu1po1AgQ8ZLfU+7nK?= =?us-ascii?q?Fy8RObU4LAlUSUk6SCcKkY2CfL83fFxm2L6gUQfAltXu3hUHwRYVHa5YD14k?= =?us-ascii?q?7OQbi0BZw9PwdBwNLEIaxPPJmh2U5LQPblJcT2f3O6m2D2Aw2BgLyLctyuMz?= =?us-ascii?q?EZ3SPAGA0fngsO53eaJE07ASu8p2/2EjNjDxTsblnq/O04r2m0GAt8mwWLaV?= =?us-ascii?q?Bxkrm44BgYgdSCRP4JmLEJoiEsr3NzBlnrm5qcMNeaqAcpUe0aKfM05FNW0y?= =?us-ascii?q?iR4xdwJJOtB6BrgloPdUJ8uEa4k109MoxdlYAH5DVi6QFRJKSe3UILP2eA1I?= =?us-ascii?q?30P7bUAm3z+g2/LbDQ102Y0dyTvKwI7aJrhU/kuVSRG1Yv6T1K1dVYyXGb/J?= =?us-ascii?q?qCWBIfTZ/rFEsx+xVgrbbAbQEm4IXFk3ZrNP/n4Xf5x9s1Cb59mV6bdNBFPf?= =?us-ascii?q?bBTVeqSZdIDtWyKOEsh1miZw4FO+YX7qMvIse6bKTfirOzNuo5zSqv1T0B7Y?= =?us-ascii?q?14yU3K8iN9TqjN3pJWi/2b3w7SUTD6gR/ht83sgolLaHkUGXb30inrAoNdJ+?= =?us-ascii?q?VycI8HBH3oIpixwdNzig=3D=3D?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0AdAQDosA5bly0bGNZcGwEBAQEDAQE?= =?us-ascii?q?BCQEBAYNBgWQWEphbgXmBD5U0hHcCghwhNxUBAgEBAQEBAQIBEwEBAQEBBhg?= =?us-ascii?q?GV4I1JAGCTwMDJ1IQIB8HC1cGAQ0FgyKCBAGnFTODeAEBhEuBaIg3gVQ/gQ+?= =?us-ascii?q?HOYYbAodEhGeMOgcCgWeMbguNDJJqgXRNI1CCQ4IgDgkRjVABNANtkBYBAQ?= X-IPAS-Result: =?us-ascii?q?A0AdAQDosA5bly0bGNZcGwEBAQEDAQEBCQEBAYNBgWQWE?= =?us-ascii?q?phbgXmBD5U0hHcCghwhNxUBAgEBAQEBAQIBEwEBAQEBBhgGV4I1JAGCTwMDJ?= =?us-ascii?q?1IQIB8HC1cGAQ0FgyKCBAGnFTODeAEBhEuBaIg3gVQ/gQ+HOYYbAodEhGeMO?= =?us-ascii?q?gcCgWeMbguNDJJqgXRNI1CCQ4IgDgkRjVABNANtkBYBAQ?= X-IronPort-AV: E=Sophos;i="5.49,460,1520899200"; d="scan'208";a="13919603" X-IronPort-Outbreak-Status: No, level 0, Unknown - Unknown Received: from updc3cpa06.eemsg.mail.mil ([214.24.27.45]) by emsm-gh1-uea11.NCSC.MIL with ESMTP; 30 May 2018 14:13:38 +0000 X-EEMSG-check-005: 0 X-EEMSG-check-006: 000-001;abb5a295-43a8-4c9a-9c29-2d13a9a75bbe Received: from localhost.localdomain (localhost [127.0.0.1]) by UPDCF3IC05.oob.disa.mil (Postfix) with SMTP id 40wsxk0p76zrKYX; Wed, 30 May 2018 14:12:58 +0000 (UTC) Received: from UPBD19PA01.eemsg.mil (unknown [192.168.18.2]) by UPDCF3IC05.oob.disa.mil (Postfix) with ESMTP id 40wsxj3HyTzrKYS; Wed, 30 May 2018 14:12:57 +0000 (UTC) Authentication-Results: upbd19pa01.eemsg.mail.mil; dkim=none (message not signed) header.i=none X-EEMSG-check-008: 308157112|UPBD19PA01_EEMSG_MP1.csd.disa.mil X-EEMSG-SBRS: 3.5 X-EEMSG-ORIG-IP: 37.139.156.29 X-EEMSG-check-002: true X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A0AQAQBvrw5bhx2ciyVcGgEBAQEBAgEBAQEIAQEBAYU7EphbgXmBD5U0hHcCCIIUITcVAQIBAQEBAQECFAEBAQoLCQgoL4UpAwMnUhAgHxJXBgENBYMiggWnEDODeAEBhEuBaAkBiC2BVD+BD4JfhFqGGwKHRIRnjDoHAoFnjG4LjQySaoF0TSNQgkOCIA4JEY1QATQDPTCQFgEB X-IPAS-Result: A0AQAQBvrw5bhx2ciyVcGgEBAQEBAgEBAQEIAQEBAYU7EphbgXmBD5U0hHcCCIIUITcVAQIBAQEBAQECFAEBAQoLCQgoL4UpAwMnUhAgHxJXBgENBYMiggWnEDODeAEBhEuBaAkBiC2BVD+BD4JfhFqGGwKHRIRnjDoHAoFnjG4LjQySaoF0TSNQgkOCIA4JEY1QATQDPTCQFgEB Received: from seldsegrel01.sonyericsson.com ([37.139.156.29]) by upbd19pa01.eemsg.mail.mil with ESMTP; 30 May 2018 14:12:56 +0000 X-EEMSG-check-009: 444-444 From: Peter Enderborg To: , Paul Moore , Stephen Smalley , Eric Paris , James Morris , Daniel Jurgens , Doug Ledford , , , , "Serge E . Hallyn" , "Paul E . McKenney" Date: Wed, 30 May 2018 16:11:00 +0200 Message-ID: <20180530141104.28569-2-peter.enderborg@sony.com> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20180530141104.28569-1-peter.enderborg@sony.com> References: <20180530141104.28569-1-peter.enderborg@sony.com> MIME-Version: 1.0 X-Mailman-Approved-At: Wed, 30 May 2018 10:18:15 -0400 Subject: [PATCH V3 1/5 selinux-next] selinux: Make allocation atomic in policydb objects functions. 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: peter Errors-To: selinux-bounces@tycho.nsa.gov Sender: "Selinux" X-Virus-Scanned: ClamAV using ClamSMTP From: peter As preparation for RCU the allocation need to be atomic, there is a lot of them so they do in this patch. Signed-off-by: Peter Enderborg --- security/selinux/ss/avtab.c | 8 +-- security/selinux/ss/conditional.c | 14 ++--- security/selinux/ss/ebitmap.c | 3 +- security/selinux/ss/hashtab.c | 6 +-- security/selinux/ss/policydb.c | 104 +++++++++++++++++++------------------- 5 files changed, 69 insertions(+), 66 deletions(-) diff --git a/security/selinux/ss/avtab.c b/security/selinux/ss/avtab.c index a2c9148b0662..1114a308aa94 100644 --- a/security/selinux/ss/avtab.c +++ b/security/selinux/ss/avtab.c @@ -72,13 +72,13 @@ avtab_insert_node(struct avtab *h, int hvalue, { struct avtab_node *newnode; struct avtab_extended_perms *xperms; - newnode = kmem_cache_zalloc(avtab_node_cachep, GFP_KERNEL); + newnode = kmem_cache_zalloc(avtab_node_cachep, GFP_ATOMIC); if (newnode == NULL) return NULL; newnode->key = *key; if (key->specified & AVTAB_XPERMS) { - xperms = kmem_cache_zalloc(avtab_xperms_cachep, GFP_KERNEL); + xperms = kmem_cache_zalloc(avtab_xperms_cachep, GFP_ATOMIC); if (xperms == NULL) { kmem_cache_free(avtab_node_cachep, newnode); return NULL; @@ -95,7 +95,7 @@ avtab_insert_node(struct avtab *h, int hvalue, } else { newnode->next = flex_array_get_ptr(h->htable, hvalue); if (flex_array_put_ptr(h->htable, hvalue, newnode, - GFP_KERNEL|__GFP_ZERO)) { + GFP_ATOMIC|__GFP_ZERO)) { kmem_cache_free(avtab_node_cachep, newnode); return NULL; } @@ -330,7 +330,7 @@ int avtab_alloc(struct avtab *h, u32 nrules) mask = nslot - 1; h->htable = flex_array_alloc(sizeof(struct avtab_node *), nslot, - GFP_KERNEL | __GFP_ZERO); + GFP_ATOMIC | __GFP_ZERO); if (!h->htable) return -ENOMEM; diff --git a/security/selinux/ss/conditional.c b/security/selinux/ss/conditional.c index c91543a617ac..a09c8a8e9472 100644 --- a/security/selinux/ss/conditional.c +++ b/security/selinux/ss/conditional.c @@ -178,7 +178,7 @@ int cond_init_bool_indexes(struct policydb *p) kfree(p->bool_val_to_struct); p->bool_val_to_struct = kmalloc_array(p->p_bools.nprim, sizeof(*p->bool_val_to_struct), - GFP_KERNEL); + GFP_ATOMIC); if (!p->bool_val_to_struct) return -ENOMEM; return 0; @@ -205,7 +205,7 @@ int cond_index_bool(void *key, void *datum, void *datap) fa = p->sym_val_to_name[SYM_BOOLS]; if (flex_array_put_ptr(fa, booldatum->value - 1, key, - GFP_KERNEL | __GFP_ZERO)) + GFP_ATOMIC | __GFP_ZERO)) BUG(); p->bool_val_to_struct[booldatum->value - 1] = booldatum; @@ -227,7 +227,7 @@ int cond_read_bool(struct policydb *p, struct hashtab *h, void *fp) u32 len; int rc; - booldatum = kzalloc(sizeof(*booldatum), GFP_KERNEL); + booldatum = kzalloc(sizeof(*booldatum), GFP_ATOMIC); if (!booldatum) return -ENOMEM; @@ -247,7 +247,7 @@ int cond_read_bool(struct policydb *p, struct hashtab *h, void *fp) goto err; rc = -ENOMEM; - key = kmalloc(len + 1, GFP_KERNEL); + key = kmalloc(len + 1, GFP_ATOMIC); if (!key) goto err; rc = next_entry(key, fp, len); @@ -332,7 +332,7 @@ static int cond_insertf(struct avtab *a, struct avtab_key *k, struct avtab_datum goto err; } - list = kzalloc(sizeof(*list), GFP_KERNEL); + list = kzalloc(sizeof(*list), GFP_ATOMIC); if (!list) { rc = -ENOMEM; goto err; @@ -420,7 +420,7 @@ static int cond_read_node(struct policydb *p, struct cond_node *node, void *fp) goto err; rc = -ENOMEM; - expr = kzalloc(sizeof(*expr), GFP_KERNEL); + expr = kzalloc(sizeof(*expr), GFP_ATOMIC); if (!expr) goto err; @@ -471,7 +471,7 @@ int cond_read_list(struct policydb *p, void *fp) for (i = 0; i < len; i++) { rc = -ENOMEM; - node = kzalloc(sizeof(*node), GFP_KERNEL); + node = kzalloc(sizeof(*node), GFP_ATOMIC); if (!node) goto err; diff --git a/security/selinux/ss/ebitmap.c b/security/selinux/ss/ebitmap.c index 5ae8c61b75bf..a49fabe6f744 100644 --- a/security/selinux/ss/ebitmap.c +++ b/security/selinux/ss/ebitmap.c @@ -403,7 +403,8 @@ int ebitmap_read(struct ebitmap *e, void *fp) if (!n || startbit >= n->startbit + EBITMAP_SIZE) { struct ebitmap_node *tmp; - tmp = kmem_cache_zalloc(ebitmap_node_cachep, GFP_KERNEL); + tmp = kmem_cache_zalloc(ebitmap_node_cachep, + GFP_ATOMIC); if (!tmp) { printk(KERN_ERR "SELinux: ebitmap: out of memory\n"); diff --git a/security/selinux/ss/hashtab.c b/security/selinux/ss/hashtab.c index ebfdaa31ee32..0944b1f8060e 100644 --- a/security/selinux/ss/hashtab.c +++ b/security/selinux/ss/hashtab.c @@ -19,7 +19,7 @@ struct hashtab *hashtab_create(u32 (*hash_value)(struct hashtab *h, const void * struct hashtab *p; u32 i; - p = kzalloc(sizeof(*p), GFP_KERNEL); + p = kzalloc(sizeof(*p), GFP_ATOMIC); if (!p) return p; @@ -27,7 +27,7 @@ struct hashtab *hashtab_create(u32 (*hash_value)(struct hashtab *h, const void * p->nel = 0; p->hash_value = hash_value; p->keycmp = keycmp; - p->htable = kmalloc_array(size, sizeof(*p->htable), GFP_KERNEL); + p->htable = kmalloc_array(size, sizeof(*p->htable), GFP_ATOMIC); if (!p->htable) { kfree(p); return NULL; @@ -60,7 +60,7 @@ int hashtab_insert(struct hashtab *h, void *key, void *datum) if (cur && (h->keycmp(h, key, cur->key) == 0)) return -EEXIST; - newnode = kmem_cache_zalloc(hashtab_node_cachep, GFP_KERNEL); + newnode = kmem_cache_zalloc(hashtab_node_cachep, GFP_ATOMIC); if (!newnode) return -ENOMEM; newnode->key = key; diff --git a/security/selinux/ss/policydb.c b/security/selinux/ss/policydb.c index 6e8c8056d7ad..2a0e21d8c275 100644 --- a/security/selinux/ss/policydb.c +++ b/security/selinux/ss/policydb.c @@ -188,7 +188,7 @@ static int roles_init(struct policydb *p) int rc; struct role_datum *role; - role = kzalloc(sizeof(*role), GFP_KERNEL); + role = kzalloc(sizeof(*role), GFP_ATOMIC); if (!role) return -ENOMEM; @@ -198,7 +198,7 @@ static int roles_init(struct policydb *p) goto out; rc = -ENOMEM; - key = kstrdup(OBJECT_R, GFP_KERNEL); + key = kstrdup(OBJECT_R, GFP_ATOMIC); if (!key) goto out; @@ -350,7 +350,7 @@ static int common_index(void *key, void *datum, void *datap) fa = p->sym_val_to_name[SYM_COMMONS]; if (flex_array_put_ptr(fa, comdatum->value - 1, key, - GFP_KERNEL | __GFP_ZERO)) + GFP_ATOMIC | __GFP_ZERO)) BUG(); return 0; } @@ -367,7 +367,7 @@ static int class_index(void *key, void *datum, void *datap) return -EINVAL; fa = p->sym_val_to_name[SYM_CLASSES]; if (flex_array_put_ptr(fa, cladatum->value - 1, key, - GFP_KERNEL | __GFP_ZERO)) + GFP_ATOMIC | __GFP_ZERO)) BUG(); p->class_val_to_struct[cladatum->value - 1] = cladatum; return 0; @@ -388,7 +388,7 @@ static int role_index(void *key, void *datum, void *datap) fa = p->sym_val_to_name[SYM_ROLES]; if (flex_array_put_ptr(fa, role->value - 1, key, - GFP_KERNEL | __GFP_ZERO)) + GFP_ATOMIC | __GFP_ZERO)) BUG(); p->role_val_to_struct[role->value - 1] = role; return 0; @@ -410,12 +410,12 @@ static int type_index(void *key, void *datum, void *datap) return -EINVAL; fa = p->sym_val_to_name[SYM_TYPES]; if (flex_array_put_ptr(fa, typdatum->value - 1, key, - GFP_KERNEL | __GFP_ZERO)) + GFP_ATOMIC | __GFP_ZERO)) BUG(); fa = p->type_val_to_struct_array; if (flex_array_put_ptr(fa, typdatum->value - 1, typdatum, - GFP_KERNEL | __GFP_ZERO)) + GFP_ATOMIC | __GFP_ZERO)) BUG(); } @@ -437,7 +437,7 @@ static int user_index(void *key, void *datum, void *datap) fa = p->sym_val_to_name[SYM_USERS]; if (flex_array_put_ptr(fa, usrdatum->value - 1, key, - GFP_KERNEL | __GFP_ZERO)) + GFP_ATOMIC | __GFP_ZERO)) BUG(); p->user_val_to_struct[usrdatum->value - 1] = usrdatum; return 0; @@ -458,7 +458,7 @@ static int sens_index(void *key, void *datum, void *datap) return -EINVAL; fa = p->sym_val_to_name[SYM_LEVELS]; if (flex_array_put_ptr(fa, levdatum->level->sens - 1, key, - GFP_KERNEL | __GFP_ZERO)) + GFP_ATOMIC | __GFP_ZERO)) BUG(); } @@ -479,7 +479,7 @@ static int cat_index(void *key, void *datum, void *datap) return -EINVAL; fa = p->sym_val_to_name[SYM_CATS]; if (flex_array_put_ptr(fa, catdatum->value - 1, key, - GFP_KERNEL | __GFP_ZERO)) + GFP_ATOMIC | __GFP_ZERO)) BUG(); } @@ -550,31 +550,31 @@ static int policydb_index(struct policydb *p) p->class_val_to_struct = kcalloc(p->p_classes.nprim, sizeof(*p->class_val_to_struct), - GFP_KERNEL); + GFP_ATOMIC); if (!p->class_val_to_struct) return -ENOMEM; p->role_val_to_struct = kcalloc(p->p_roles.nprim, sizeof(*p->role_val_to_struct), - GFP_KERNEL); + GFP_ATOMIC); if (!p->role_val_to_struct) return -ENOMEM; p->user_val_to_struct = kcalloc(p->p_users.nprim, sizeof(*p->user_val_to_struct), - GFP_KERNEL); + GFP_ATOMIC); if (!p->user_val_to_struct) return -ENOMEM; /* Yes, I want the sizeof the pointer, not the structure */ p->type_val_to_struct_array = flex_array_alloc(sizeof(struct type_datum *), p->p_types.nprim, - GFP_KERNEL | __GFP_ZERO); + GFP_ATOMIC | __GFP_ZERO); if (!p->type_val_to_struct_array) return -ENOMEM; rc = flex_array_prealloc(p->type_val_to_struct_array, 0, - p->p_types.nprim, GFP_KERNEL | __GFP_ZERO); + p->p_types.nprim, GFP_ATOMIC | __GFP_ZERO); if (rc) goto out; @@ -585,13 +585,14 @@ static int policydb_index(struct policydb *p) for (i = 0; i < SYM_NUM; i++) { p->sym_val_to_name[i] = flex_array_alloc(sizeof(char *), p->symtab[i].nprim, - GFP_KERNEL | __GFP_ZERO); + GFP_ATOMIC | + __GFP_ZERO); if (!p->sym_val_to_name[i]) return -ENOMEM; rc = flex_array_prealloc(p->sym_val_to_name[i], 0, p->symtab[i].nprim, - GFP_KERNEL | __GFP_ZERO); + GFP_ATOMIC | __GFP_ZERO); if (rc) goto out; @@ -1122,7 +1123,7 @@ static int perm_read(struct policydb *p, struct hashtab *h, void *fp) __le32 buf[2]; u32 len; - perdatum = kzalloc(sizeof(*perdatum), GFP_KERNEL); + perdatum = kzalloc(sizeof(*perdatum), GFP_ATOMIC); if (!perdatum) return -ENOMEM; @@ -1133,7 +1134,7 @@ static int perm_read(struct policydb *p, struct hashtab *h, void *fp) len = le32_to_cpu(buf[0]); perdatum->value = le32_to_cpu(buf[1]); - rc = str_read(&key, GFP_KERNEL, fp, len); + rc = str_read(&key, GFP_ATOMIC, fp, len); if (rc) goto bad; @@ -1155,7 +1156,7 @@ static int common_read(struct policydb *p, struct hashtab *h, void *fp) u32 len, nel; int i, rc; - comdatum = kzalloc(sizeof(*comdatum), GFP_KERNEL); + comdatum = kzalloc(sizeof(*comdatum), GFP_ATOMIC); if (!comdatum) return -ENOMEM; @@ -1172,7 +1173,7 @@ static int common_read(struct policydb *p, struct hashtab *h, void *fp) comdatum->permissions.nprim = le32_to_cpu(buf[2]); nel = le32_to_cpu(buf[3]); - rc = str_read(&key, GFP_KERNEL, fp, len); + rc = str_read(&key, GFP_ATOMIC, fp, len); if (rc) goto bad; @@ -1228,7 +1229,7 @@ static int read_cons_helper(struct policydb *p, lc = NULL; for (i = 0; i < ncons; i++) { - c = kzalloc(sizeof(*c), GFP_KERNEL); + c = kzalloc(sizeof(*c), GFP_ATOMIC); if (!c) return -ENOMEM; @@ -1245,7 +1246,7 @@ static int read_cons_helper(struct policydb *p, le = NULL; depth = -1; for (j = 0; j < nexpr; j++) { - e = kzalloc(sizeof(*e), GFP_KERNEL); + e = kzalloc(sizeof(*e), GFP_ATOMIC); if (!e) return -ENOMEM; @@ -1290,7 +1291,7 @@ static int read_cons_helper(struct policydb *p, POLICYDB_VERSION_CONSTRAINT_NAMES) { e->type_names = kzalloc(sizeof (*e->type_names), - GFP_KERNEL); + GFP_ATOMIC); if (!e->type_names) return -ENOMEM; type_set_init(e->type_names); @@ -1320,7 +1321,7 @@ static int class_read(struct policydb *p, struct hashtab *h, void *fp) u32 len, len2, ncons, nel; int i, rc; - cladatum = kzalloc(sizeof(*cladatum), GFP_KERNEL); + cladatum = kzalloc(sizeof(*cladatum), GFP_ATOMIC); if (!cladatum) return -ENOMEM; @@ -1340,12 +1341,12 @@ static int class_read(struct policydb *p, struct hashtab *h, void *fp) ncons = le32_to_cpu(buf[5]); - rc = str_read(&key, GFP_KERNEL, fp, len); + rc = str_read(&key, GFP_ATOMIC, fp, len); if (rc) goto bad; if (len2) { - rc = str_read(&cladatum->comkey, GFP_KERNEL, fp, len2); + rc = str_read(&cladatum->comkey, GFP_ATOMIC, fp, len2); if (rc) goto bad; @@ -1413,7 +1414,7 @@ static int role_read(struct policydb *p, struct hashtab *h, void *fp) __le32 buf[3]; u32 len; - role = kzalloc(sizeof(*role), GFP_KERNEL); + role = kzalloc(sizeof(*role), GFP_ATOMIC); if (!role) return -ENOMEM; @@ -1429,7 +1430,7 @@ static int role_read(struct policydb *p, struct hashtab *h, void *fp) if (p->policyvers >= POLICYDB_VERSION_BOUNDARY) role->bounds = le32_to_cpu(buf[2]); - rc = str_read(&key, GFP_KERNEL, fp, len); + rc = str_read(&key, GFP_ATOMIC, fp, len); if (rc) goto bad; @@ -1469,7 +1470,7 @@ static int type_read(struct policydb *p, struct hashtab *h, void *fp) __le32 buf[4]; u32 len; - typdatum = kzalloc(sizeof(*typdatum), GFP_KERNEL); + typdatum = kzalloc(sizeof(*typdatum), GFP_ATOMIC); if (!typdatum) return -ENOMEM; @@ -1495,7 +1496,7 @@ static int type_read(struct policydb *p, struct hashtab *h, void *fp) typdatum->primary = le32_to_cpu(buf[2]); } - rc = str_read(&key, GFP_KERNEL, fp, len); + rc = str_read(&key, GFP_ATOMIC, fp, len); if (rc) goto bad; @@ -1543,7 +1544,7 @@ static int user_read(struct policydb *p, struct hashtab *h, void *fp) __le32 buf[3]; u32 len; - usrdatum = kzalloc(sizeof(*usrdatum), GFP_KERNEL); + usrdatum = kzalloc(sizeof(*usrdatum), GFP_ATOMIC); if (!usrdatum) return -ENOMEM; @@ -1559,7 +1560,7 @@ static int user_read(struct policydb *p, struct hashtab *h, void *fp) if (p->policyvers >= POLICYDB_VERSION_BOUNDARY) usrdatum->bounds = le32_to_cpu(buf[2]); - rc = str_read(&key, GFP_KERNEL, fp, len); + rc = str_read(&key, GFP_ATOMIC, fp, len); if (rc) goto bad; @@ -1853,7 +1854,7 @@ static int range_read(struct policydb *p, void *fp) nel = le32_to_cpu(buf[0]); for (i = 0; i < nel; i++) { rc = -ENOMEM; - rt = kzalloc(sizeof(*rt), GFP_KERNEL); + rt = kzalloc(sizeof(*rt), GFP_ATOMIC); if (!rt) goto out; @@ -1878,7 +1879,7 @@ static int range_read(struct policydb *p, void *fp) goto out; rc = -ENOMEM; - r = kzalloc(sizeof(*r), GFP_KERNEL); + r = kzalloc(sizeof(*r), GFP_ATOMIC); if (!r) goto out; @@ -1929,12 +1930,12 @@ static int filename_trans_read(struct policydb *p, void *fp) name = NULL; rc = -ENOMEM; - ft = kzalloc(sizeof(*ft), GFP_KERNEL); + ft = kzalloc(sizeof(*ft), GFP_ATOMIC); if (!ft) goto out; rc = -ENOMEM; - otype = kmalloc(sizeof(*otype), GFP_KERNEL); + otype = kmalloc(sizeof(*otype), GFP_ATOMIC); if (!otype) goto out; @@ -1945,7 +1946,7 @@ static int filename_trans_read(struct policydb *p, void *fp) len = le32_to_cpu(buf[0]); /* path component string */ - rc = str_read(&name, GFP_KERNEL, fp, len); + rc = str_read(&name, GFP_ATOMIC, fp, len); if (rc) goto out; @@ -2011,11 +2012,11 @@ static int genfs_read(struct policydb *p, void *fp) len = le32_to_cpu(buf[0]); rc = -ENOMEM; - newgenfs = kzalloc(sizeof(*newgenfs), GFP_KERNEL); + newgenfs = kzalloc(sizeof(*newgenfs), GFP_ATOMIC); if (!newgenfs) goto out; - rc = str_read(&newgenfs->fstype, GFP_KERNEL, fp, len); + rc = str_read(&newgenfs->fstype, GFP_ATOMIC, fp, len); if (rc) goto out; @@ -2050,11 +2051,11 @@ static int genfs_read(struct policydb *p, void *fp) len = le32_to_cpu(buf[0]); rc = -ENOMEM; - newc = kzalloc(sizeof(*newc), GFP_KERNEL); + newc = kzalloc(sizeof(*newc), GFP_ATOMIC); if (!newc) goto out; - rc = str_read(&newc->u.name, GFP_KERNEL, fp, len); + rc = str_read(&newc->u.name, GFP_ATOMIC, fp, len); if (rc) goto out; @@ -2120,7 +2121,7 @@ static int ocontext_read(struct policydb *p, struct policydb_compat_info *info, l = NULL; for (j = 0; j < nel; j++) { rc = -ENOMEM; - c = kzalloc(sizeof(*c), GFP_KERNEL); + c = kzalloc(sizeof(*c), GFP_ATOMIC); if (!c) goto out; if (l) @@ -2147,7 +2148,7 @@ static int ocontext_read(struct policydb *p, struct policydb_compat_info *info, goto out; len = le32_to_cpu(buf[0]); - rc = str_read(&c->u.name, GFP_KERNEL, fp, len); + rc = str_read(&c->u.name, GFP_ATOMIC, fp, len); if (rc) goto out; @@ -2193,7 +2194,7 @@ static int ocontext_read(struct policydb *p, struct policydb_compat_info *info, goto out; len = le32_to_cpu(buf[1]); - rc = str_read(&c->u.name, GFP_KERNEL, fp, len); + rc = str_read(&c->u.name, GFP_ATOMIC, fp, len); if (rc) goto out; @@ -2244,7 +2245,8 @@ static int ocontext_read(struct policydb *p, struct policydb_compat_info *info, goto out; len = le32_to_cpu(buf[0]); - rc = str_read(&c->u.ibendport.dev_name, GFP_KERNEL, fp, len); + rc = str_read(&c->u.ibendport.dev_name, + GFP_ATOMIC, fp, len); if (rc) goto out; @@ -2311,7 +2313,7 @@ int policydb_read(struct policydb *p, void *fp) } rc = -ENOMEM; - policydb_str = kmalloc(len + 1, GFP_KERNEL); + policydb_str = kmalloc(len + 1, GFP_ATOMIC); if (!policydb_str) { printk(KERN_ERR "SELinux: unable to allocate memory for policydb " "string of length %d\n", len); @@ -2433,7 +2435,7 @@ int policydb_read(struct policydb *p, void *fp) ltr = NULL; for (i = 0; i < nel; i++) { rc = -ENOMEM; - tr = kzalloc(sizeof(*tr), GFP_KERNEL); + tr = kzalloc(sizeof(*tr), GFP_ATOMIC); if (!tr) goto bad; if (ltr) @@ -2472,7 +2474,7 @@ int policydb_read(struct policydb *p, void *fp) lra = NULL; for (i = 0; i < nel; i++) { rc = -ENOMEM; - ra = kzalloc(sizeof(*ra), GFP_KERNEL); + ra = kzalloc(sizeof(*ra), GFP_ATOMIC); if (!ra) goto bad; if (lra) @@ -2521,13 +2523,13 @@ int policydb_read(struct policydb *p, void *fp) rc = -ENOMEM; p->type_attr_map_array = flex_array_alloc(sizeof(struct ebitmap), p->p_types.nprim, - GFP_KERNEL | __GFP_ZERO); + GFP_ATOMIC | __GFP_ZERO); if (!p->type_attr_map_array) goto bad; /* preallocate so we don't have to worry about the put ever failing */ rc = flex_array_prealloc(p->type_attr_map_array, 0, p->p_types.nprim, - GFP_KERNEL | __GFP_ZERO); + GFP_ATOMIC | __GFP_ZERO); if (rc) goto bad;