From patchwork Fri May 4 20:54:38 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Guy Briggs X-Patchwork-Id: 10383991 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 4DCA860159 for ; Mon, 7 May 2018 12:36:47 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 33A9728B0A for ; Mon, 7 May 2018 12:36:47 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 2874A28B0C; Mon, 7 May 2018 12:36:47 +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=unavailable version=3.3.1 Received: from ucol19pa09.eemsg.mail.mil (ucol19pa09.eemsg.mail.mil [214.24.24.82]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 4205128B0A for ; Mon, 7 May 2018 12:36:45 +0000 (UTC) X-IronPort-AV: E=Sophos;i="5.49,373,1520899200"; d="scan'208";a="691769732" Received: from emsm-gh1-uea11.ncsc.mil ([214.29.60.3]) by ucol19pa09.eemsg.mail.mil with ESMTP/TLS/AES256-SHA; 07 May 2018 12:36:43 +0000 X-IronPort-AV: E=Sophos;i="5.49,373,1520899200"; d="scan'208";a="12946573" IronPort-PHdr: =?us-ascii?q?9a23=3AeQMglReooMMUG8E+2MYMcfFulGMj4u6mDksu8p?= =?us-ascii?q?Mizoh2WeGdxcq7YReN2/xhgRfzUJnB7Loc0qyK6/umATRIyK3CmUhKSIZLWR?= =?us-ascii?q?4BhJdetC0bK+nBN3fGKuX3ZTcxBsVIWQwt1Xi6NU9IBJS2PAWK8TW94jEIBx?= =?us-ascii?q?rwKxd+KPjrFY7OlcS30P2594HObwlSizexfb1/IA+qoQnNq8IbnZZsJqEtxx?= =?us-ascii?q?XTv3BGYf5WxWRmJVKSmxbz+MK994N9/ipTpvws6ddOXb31cKokQ7NYCi8mM3?= =?us-ascii?q?0u683wqRbDVwqP6WACXWgQjxFFHhLK7BD+Xpf2ryv6qu9w0zSUMMHqUbw5Xy?= =?us-ascii?q?mp4rx1QxH0ligIKz858HnWisNuiqJbvAmhrAF7z4LNfY2ZKOZycqbbcNwUX2?= =?us-ascii?q?pBWttaWTJHDI2ycoADC/MNMftEo4X4oVYBqgewCwmyCe/20zNGhGL53bcj3+?= =?us-ascii?q?o8DAHGxxQgEMwSv3TItdn1MKASUO6ox6XMzTjPavVb1jDh5obIbB0tuOiAU7?= =?us-ascii?q?BtfsrL0EUhCh7Fjk6IqYP7IzyVyvkGv2yF4+Z8UO6ijXMspQNsrTi13soiip?= =?us-ascii?q?fHiIwWxF/G+yV2wog1K8CgSEN5fNKpHoVftzqBOodqXs8vWX1ktDomxrEav5?= =?us-ascii?q?OwYSgEyI4gxx7ac/GJb4mI7Q7jVOmLOzd3mW9udrOihxey7EOt1/f8Vsi70F?= =?us-ascii?q?ZFtSpOj97BtmoC1xPI8cWHUOVy8Vqh2TmVywDf8P1LIUcxlafCLZMq37A+lp?= =?us-ascii?q?0WsUvZHy/2nl37jKyIeUU+/Oin9eDnbq/hpp+GOI94kg7+MqUymsy/HOQ3KR?= =?us-ascii?q?ICUHSc+eS50rDo4E73QK1Sg/ErnaTUv4rWKMQGqqKjHQNY3Zgv5wyiAzu+0d?= =?us-ascii?q?kVnGMLIE9GdR+FlYTlJV/DLf7iAfq9jVmhlipgyercMb37GJrNK2DOkLLmfb?= =?us-ascii?q?lg9UFR0BEzzdVD55JMDbEBPe7zVlfxtNPGCh85NBS5w/r9B9Vn14MeRHmPDr?= =?us-ascii?q?WFMKLSrVCI5uUvL/OKZIAJozbyN+Ip5/vvjX89gVMdfK+p0oULaH2gA/hrLE?= =?us-ascii?q?qUbWDsj9scC2sGoAUzQPLwhFGfSTJTYmy9X6M45jE1EoKmCoLDS5i2gLOf2C?= =?us-ascii?q?e7H5tWZn1JC1yVCnjocJiEW/EQZy2MOc9siSAEVLi9RI8h0hGirgn6y6F9Ie?= =?us-ascii?q?bO9S0Ysozj2MBv5+LPjREy6SB0D8OF3mGPSGF0mHkHRyM23K9lp0xw0VWD0a?= =?us-ascii?q?9+g/xdD9NT/O9JXRkgNZ7H1eB6DMryWg3ZdNeTVFmmWsmmAS02Tt8pwd8OYV?= =?us-ascii?q?xyFMmhjhDY2CqqBb4Vl6KQCZw69qLcwnfwKN1gy3bAyKkhkkMqQsxVNW2pnq?= =?us-ascii?q?R/7RTcB5bVk0WFkKanbbwc0zDW+2idy2qOvV1YUAlrXKXEQ38QeFXZoc7+5k?= =?us-ascii?q?PYQL+kEa4nPRdZyc6eNqtKbcXkgkhBRPflPtTRfny+m2OxBRuT3LyDcpDqe2?= =?us-ascii?q?IH0CXaEkgEnBgZ/WyaOggmGiehv2XeASRzGlLzeUzs6/Jzp2+8Tk8x0w6FdV?= =?us-ascii?q?Zh16av9h4Tm/OcV+sZ3qgYtyc5tzV0AFG90srIBNqYvQVhZqRcYcgm7Vdfz2?= =?us-ascii?q?3ZrQ19Poe4L6BmnFERbxp4s1np1xVtBYVKidIqo28yzApuNaKY10tMdzKe3Z?= =?us-ascii?q?DsJLLXLnf9/BWxZK7KwFHf0M2b+qAX6PsmrVXjuRumFksm83p81NlU3GGQ5p?= =?us-ascii?q?LQDAodSZjxSFo49wBmp7HGZSkw/4PV1HxrMamyqTLC3tYpCPIkyhamZdtfNr?= =?us-ascii?q?mLFBXxE80bGcihNvYmm163YRIYJOpS7rI7P9u6d/ua366mJOhhnDOijWRC/o?= =?us-ascii?q?99yFmB9yRiReHV2JYF2euX3hOdVzf7jleurNz4mZxeaTEVBGq/xjDuBJRNaa?= =?us-ascii?q?1qYYYLFWCuLtW5xtVknZHtXWJX9F+4B14d3c+pYRuSY0Xm3QxezkQbu3unmT?= =?us-ascii?q?G3zzZsiTEmsrKf3DDSw+TlbBcHOXRERGpljVfxOoW0jMoVXEuvbwg0jhel4l?= =?us-ascii?q?z6x6dDrqRlM2bTWVtIfzTxL2x6SKS/q6CCY89R55MyqihYSvizYVWARr76uR?= =?us-ascii?q?sa3DvpH3FCyzAjazGqppL5kgRmh22HKHZ8smHZed1wxBfY/9HcXuJe3jsYSy?= =?us-ascii?q?l+lTnXB0KzM8Ov/dqKi5fJqvq+WH65Vp1PbSnrypuNtDGm6mJ3GhC/kPWzm9?= =?us-ascii?q?L9HQg8zyD7y8FgVT/Uoxbkfonry6O6PPp8fklmHl/87NF6Gp1ln4srgpEQ3n?= =?us-ascii?q?YbhpCP8noBi2vzN8tU2b7mZnoXWTEL28LV4BTi2EB7IHOG3Yb5VmmDzct7fN?= =?us-ascii?q?m3eX0W1Twn789RFaeU6aZInSxvolq3tQjRe+Ryni8Byfsy734Xm/8JuAsxwS?= =?us-ascii?q?WBBbASB1NUMjDslxSP6dC+o75aZGKucbi2zkV+h9ehAKuFogFGV3bzYo0iEj?= =?us-ascii?q?No7sVjLFLM12X+6oXleNnLcdIfrwaUnAnEj+hULpIxi/ULiDF8OWLlvH0lze?= =?us-ascii?q?87ggB13Z2guoiINXlt9rqjAhFELj31e98T+jb1gKZEmcaW24SvEYt7GjoXW5?= =?us-ascii?q?vpQ+mlECkPtfv7LAaCCjo8qm2UGbDHBw+Q9F9mr27TE5CsL3yXJ2cWzdN5RB?= =?us-ascii?q?SGJ0xQngYUXC48npEnCgCm3svhcF125joJ/F73tgNMyv50Nxn4SmrfvB2nai?= =?us-ascii?q?owSJeBNBpZ9AdC51vLPsyE9e9zAjpY8YO7rAyWMGCbfANIDXwTWkOYGV/jML?= =?us-ascii?q?6u5cPP8+eGHOa+KeXBYamWo+xES/iI3Y6v0pdh/zuUKMWPOGRtAuYl2kpFQH?= =?us-ascii?q?95G97VmzMRRCwLjyjNddKUpA+g+i1rqcCy6OzrVxjy5YuLELZdLdRv+wy2gK?= =?us-ascii?q?uaOe6fniB5JSxf1pMWyn/C0KIf00IKiyFyazmtFqwNtS3NTaLUhKBaFBsbay?= =?us-ascii?q?R9NMtG8a08whVNOc7citPwyLF0lPg1BElZVVb5gMGmedQKI32hNFPAHEuLOq?= =?us-ascii?q?6JJTvXw8HwZKOxUrNQg/tJuB23ozaUCVfjPi6ElznrSR+gLf1MgDucPBxEt4?= =?us-ascii?q?G3agxtBnT7TNL6dh27N8d6giAqzr0xgXPKM3IcPSVnfkNTsLKQ9yJYg/R4G2?= =?us-ascii?q?xH9HZlK/eLmzqB5enCNpkWqedrAjhzl+9C7nQ60aVa4zxfRPNvnivSstluo0?= =?us-ascii?q?q9n+aV1jVnVQBCqjFRhIKEpU9iI7nW9oFcWXbY+xIA9WOQCw4QqNt9Et3ioK?= =?us-ascii?q?5QytnVlKLoNDdC/dPU/c0GCMjSNM2HMWAuMR7zFD7TFgsFQiahNXvDiExFjP?= =?us-ascii?q?GS6nqVo4AhpZf3n5YOTr5bVEcpFvMBEEhlB8INL4ttUjM/j7GbiM8I5XyjrB?= =?us-ascii?q?jeX8hVopDGVuiPAfX0MjqYg6NLZwcTwbP/K4QfLIr721ZtalNihoTFB1LQXc?= =?us-ascii?q?xRoi1mdgI0pkRN8Hx6TmItwELocRmi72EJFf6zhBI2jRF+Yes1/jf2/1g3Pk?= =?us-ascii?q?bKpDc3kEQpgtrlgD+RcDn3LKqrQI5ZFTH7t0krPZP9WQp1aheynUN8PjfeW7?= =?us-ascii?q?1Rl6dgdXxsiALEo5RPFuRTTbNabxILwvGXf+sn0VJZqiq9xE9H4fDKCZxtlQ?= =?us-ascii?q?cwdp6stX1A0Rp5bNEpPazQOLZJzl9Ii6KSuS+o0/o9wBUZJ0cM7mySfjUHuF?= =?us-ascii?q?YPNrY4JCql5fBj6QuHmzRfYmcMTOYqruhs9kwjJ+SK1zjg3KJbKkCtK+yfKL?= =?us-ascii?q?uUu2rAlc+IWlMw0UcIl0hZ/bdoysojdkuUV1w1zLSPDRgJMtDCKQ5NZcpI6H?= =?us-ascii?q?fTZTqOsfnKwZ9tOYWyCPrnTeuVuaYXhUKkBxopEJ4K7sQaHZms0VvULcH5I7?= =?us-ascii?q?4Z0R8t/hjkJE2ZDPRVfxKGiC0HrN+kzJBpx4ZdPC0SAWVmPCqs57bXvBIlgP?= =?us-ascii?q?2NXNcueHcVQIsFOmgwWMKkhy5Tp25AAyWv0uIF1AiC6CfxqTnKAznibtpsee?= =?us-ascii?q?yUaAh2B9Gs4zU/9Ka3iUXJ/ZrCOmH6L9ViusPP6O8AoZaIFe9UR6Fns0jAg4?= =?us-ascii?q?lYW2CqU2nXHN6xIJjwcZcjbdr1C3a9SVG/hDQ1T9rrMNaqNKiIjhniRZxIv4?= =?us-ascii?q?mDwDAjKci9GykFGxhuo+ED5aR8ZRAMYpcgfRHosAE+OLClLweDztWiWWCtJi?= =?us-ascii?q?VKT/NH1+W1e6RXzzYwbu+90HYgUpA6z+yw8U4RRJELjgrTyuuiZ4heSyf8AW?= =?us-ascii?q?ZRewPRqiolj2JhLPo9wv8jwBPUtlkRKyqEdOhoaGNYod4zHVaSIHVwCmo/QV?= =?us-ascii?q?+Tl5HO7RWt378I+StRhthU0fBfvHj4oJDffCqmWLa3ppXNryogcd8mrrVqPo?= =?us-ascii?q?P9JMuLr4nRkSHBTJbOqA2FSzS1F+Bam9RKJyJYWvZIk3k/OcMaoYpB9VYxVs?= =?us-ascii?q?AmKrxVDqksp6ylaTpjDS4W1i8XT5qO0iEYjOqg3LXXjQufcJMnMBMYqppCmc?= =?us-ascii?q?cdXzRwYiwAuK+pT5/WmHOcSmgXPAcT6hxB6x4CloBqYu/o+5bHTJhIyz5Sov?= =?us-ascii?q?J7TDHLFoV2+FTnSmGam1/4SO+uk+axxwJd0Ors0sUHWB54EUVd3fxZllEvKL?= =?us-ascii?q?5sMKQQopTKvSWWdUzkuGLtye2mJFZVyc3VeF34DJbFtWTmXS0G/H0YX4lPx2?= =?us-ascii?q?/DFZ4KiQp2dL4rpElQIIChYkv/6SYoyJhpH7m5UMCrxkwqrXUdSierDdVOFf?= =?us-ascii?q?9pvEjQWD1/bJChsI/lNIlKQm9M5J2drE9UkEB3PC6jyppTNd1N4j8KXDhAuj?= =?us-ascii?q?icssG9SMtf1s9yCJ8MP8pwu2znFKNCJpeRv2U8uqbzxX/B5zA8rFC6yS2rG6?= =?us-ascii?q?+/S+JW5XceGwsuJ2SapEkiFO4s8mDV8lDWrF974/1bBr+UjUVqoTZ9GJ9OCi?= =?us-ascii?q?xO1XC/IFR5VGNGvPlCKKTJb8xcROE/agW1OxwjE/4qxU+J8Fp1nXf4Yixyqh?= =?us-ascii?q?BV9zrbXwYqSSkfmq3tliEGqsG7JT8aTIpFbSkmbyfAMA+bhTxbvBNEZE1wXZ?= =?us-ascii?q?AWHMpF8akB3YRI5srCVVqsKSYdURxiLA04y+BQlUpev0iDZC/SExKode7RvR?= =?us-ascii?q?1zY8iRttSlLPPj/AdIkonnqvw3970fR326ng2gWdLer4jiudCRq0SBarz4PP?= =?us-ascii?q?OmYX/dUjfDkAq8hbE6AJnW5yLTKhZUK4FmyXo4ZpjsEXLLMglbKKIaPUVbUb?= =?us-ascii?q?t3ZslBouBfe8BrYr0J+bN3ChKBWBzvBJSlrONaIVbLWTTeMyKB//SkroLd8b?= =?us-ascii?q?PRVertatGCynvcX613OZJ65iXhFLfxzY9S4Ez21elx9kliU1jJLziBrMj9Jg?= =?us-ascii?q?MM/MSibFXtsYApHTzMHJd9i37txkZed8UJXSGl7JMYx45H53rqT+J3zFTzuv?= =?us-ascii?q?VI97Z48Yk3/6xpycCsKKfKMvRarVVoDQWIBghx7ZUtB3V/R3pNbeAPLvfRYb?= =?us-ascii?q?4Zgtrqq+ztEKwX8hKV8fRDadTbP0HBhtW/CjaERBxYhgcOtyAVIRaH2v6Yn6?= =?us-ascii?q?90VdylqvLn2kIs5Fi+KgAJzKx36YeD4KqIq/fdbwHNwrgcRqjqWsTzo6wpu0?= =?us-ascii?q?yI4f0kkKABenBpYwK9CucQTcgdyXn8zaAx0S0jCdvDEKz69P5FSX05girqm4?= =?us-ascii?q?phEFUOBvMUAb2L8JxcnmgigezZMcYWcqRYlWaRDhOkF6ICyXq36yuWPGZlgw?= =?us-ascii?q?vB0xfrQW+p61/2tyB4SzPWz9j/ikpVSqW3BUBKUiqrI0B4tj2PPBDvtNXqp6?= =?us-ascii?q?s49102PXbitNKWk2utIrVXENPjJNaEOyk7uEoXjIEtRtyowY0bFse9INYV8H?= =?us-ascii?q?F6cPTe7nimnDJfrKhchorR+MeV9u/QHXm6gK2Qs6+NyyxAyngkoVE/7citNv?= =?us-ascii?q?PP592PWPmo0ngeTidhtAvbXh61rLPbo0oSOUOVzEfBgJYKMc1B3XkkykHm4/?= =?us-ascii?q?AuQNQ39AhFF4bAYfYCqSryODvyz1afecg4VjKC0ztNA1L6DUV4GLUm2G3ups?= =?us-ascii?q?7Jkm3Q+1IwTIlqa0PnnQB3D5k/KU817VgXxSwDERQCaR+FF7yoAEXlIpECVU?= =?us-ascii?q?cddRSG0r+6er003U1o2L+v4vHcbfBkDaoXKvldlhKOnERcGp8Ota0eW7d8dl?= =?us-ascii?q?9G+a7ZuAftFo/nX+L8mnooL/21RcJa/t4FuHs++Aq/QACg6Zhb5bYBlJ+Ibr?= =?us-ascii?q?JEYYTLvM1k7kdm5CQAeTZRjxVklBO2T/wcq/7/7dTBt5qo8OmuXr43R+oL7x?= =?us-ascii?q?g0G3h+j5zojV84oNHXzOldRZfXiYT+7ABNO2SFuJve0xRnNeUOLJ+kc6h6+H?= =?us-ascii?q?UaPSgeIGgOMsCMZ/k7+S9tPy3Z50ZeDcMUedMYIM3NlBhMikLzRLFc6srbG1?= =?us-ascii?q?GfC4dpdMAk9nH3xy4x8Zs9VObg9TC3KIvH715XI/NMkCVsldzFpOgPwvreEi?= =?us-ascii?q?sX7meDaxhz3CyCz4OBC/Hq/eWD0NvUTU8JHjYqU4dBIzqP4QOnSfCvlJr3Tg?= =?us-ascii?q?OU6tT+gJY/dEKMWHOxnL4KsrtXEeJajCX0wCReHJjvh/2Jq9qs9HdXtlpfHY?= =?us-ascii?q?Z88xLFHrlfPpJ8ORj/jcmkWEx8Bir5eMHJeRsjo+6WyfkW4+R+LUTyf4kbLQ?= =?us-ascii?q?wYy7ji83paUhNuSKLqvlaeRe8RYtpmR+/DrnBR841gMLUDPFmapJzttTdIs0?= =?us-ascii?q?s7AAomZb4/tDBacVPOnAJNUabupLEAkhccUcJ+uUJUFmK/JHk+5yHeWapIg6?= =?us-ascii?q?efDv0V8jOOTq0BSEhoPSZ+TAmz2JpwYbepmupHsmxelCNnvPcqyyBmRAe7uS?= =?us-ascii?q?D0paIN3jIg+LeiuDoduXxFSvienDrJCFVCyvQKlqQcC3f55FyiYXkDcpH94L?= =?us-ascii?q?16KsTh74Uh5WowYQk7dS0cQeugEz3wj7+PAoGXsdJcmgSCuMPVYL+3MCgdK7?= =?us-ascii?q?U9yRX4R3Rn1Qjehhlo+nMRQjq89N8kOJm9OcE9yyqqB2fbelgM4qdSvcr/r1?= =?us-ascii?q?ELSvU5aU97zGVlzMeHWjUHRNbTFGYtkggkdWJEfYpM6R8eEKkpjCiHvq1C/g?= =?us-ascii?q?wPezfUFYKl+ojMksvS33kyU8tqzHrMpqKZnpMqzGFlm9Rs4y6LuXQSdO/YU8?= =?us-ascii?q?h3D3jxzIhfyuv+Z/OzveABUodmzqquUOMaOMm55WS2wIlqWlOixrkGBFW2Lu?= =?us-ascii?q?kDxqvAXie+TW2YXviLc3SSnzknL0H+/x6oLkc4aM1StU8yLvPChoJAlw3mSb?= =?us-ascii?q?50SDufpVvazGw7L+wXbAM3uIaiewwPUuERfeycKvY0zP05ElsMYGfDHTFqBO?= =?us-ascii?q?+urV6tgI97Nm1u4EXie+Tt8xzpP8WJFxkBEI7asoRx9uKgSmKGI39gwwV4PF?= =?us-ascii?q?No+OfHC1Qxquhcfo6WndjUmdt2yvYFd/N3Pi0mpt4Tm55s6ZWO0MiUbx7d1J?= =?us-ascii?q?DyKs/JovKAGf3Q01wqen1GUroeeQ7144Q6PtgkW7zcBLdZuRUcBbMmQJw6LG?= =?us-ascii?q?rx9bt7LAV0cgLLY7S0mMbqrPqRZpRIv3/W8k4wLCDEth0G0PO7UQx7b5Gsh3?= =?us-ascii?q?X1O50wWDNBr9tzBRtiHYtPHd4ArgW9D56TgqG7hMe7+1lmtO8SrarwFvfK2c?= =?us-ascii?q?y734prXJha4leEMS3MBKltnkRljuOygurP0pnxFcPuY9UEW/ZnQmTdcL/JAp?= =?us-ascii?q?2/Ki6SOsL7Y0NG8buc0LVjUhWLZSD5RLGLtCu+O/Vh/0o7y5Z0fO3JzDwi97?= =?us-ascii?q?vbwsf9Z3lHpie/qn6ELIBf7FLPBePCXh9ZSuGI8Hh7Eq0NbIv19eAOMdo4zN?= =?us-ascii?q?ia/QZz8GcK7MzQB6mns1+J8193dI6TCULo3yc/VsEuIQ+jeR8ogGnEujHUHH?= =?us-ascii?q?hdMuC+JMVticrTBRvosQ05vUIIQiYVHmvuWMfUOmUB3c+6TBOF+RgNDNsZme?= =?us-ascii?q?OzP0kiufv2Ac1pPIhV0cOnqJkKj55UMzrTXsVTOmn1Jb5yPzxeRsHOv0RgNh?= =?us-ascii?q?gJr7Q4RK8rapWUZkAKKkGNzWX11wSUlQXSesCi1aKVLTxe3nhZwraN9TlXu0?= =?us-ascii?q?Htv/uFjMznTL3DKZ37QvPWGDQqWyvcRjkoF0utv1C+tKxA9N6ZJ3oP6msZaT?= =?us-ascii?q?+ICRIC7oVoocXUAyfXmPZ/NMkOhfaHS2XrRSZljqsuF2NOskyRR/crCwbbdT?= =?us-ascii?q?nijXBatQjkIeVDqzatTruEy6VPWvAHSq5Be+aEWdbddPZCbx4ynTUYJOu3Y8?= =?us-ascii?q?DGov5t1lPOUHtcEq/U+VKETVKHauKTyiitXogPuYUw/C0y9YSU1hRaF6XOIq?= =?us-ascii?q?bXoz+17sbslyucuOvDRkExckc1h6QEG2DHzx5efjIqEdYQ7XvsSa6JfUoE+2?= =?us-ascii?q?84wch02hADY0wnSHJk+mdbkPa0BotSTltC3zDme+EPcF0iVGB4xkSN+ACnJI?= =?us-ascii?q?xd45qBTnJC9rYKVYsWJeUp74+SIqYL3fI1x2098hECnw7GJGt011vD/qfVB6?= =?us-ascii?q?06w7RD4S89/vUlOyPHTzDedz3BzYyrQ4JKyDx1qH/pn8zToqh2NbRcqo04SF?= =?us-ascii?q?cHCC57PJbcqDZGV2z5?= X-IPAS-Result: =?us-ascii?q?A2BnBADcR/Ba/wHyM5BcGgEBAQEBAgEBAQEIAQEBAYNBA?= =?us-ascii?q?2F6KIxPjBVIAQEBBoEHgTCTJhSBXRIYCwgBgUuFRiE1FwECAQEBAQEBAgFrH?= =?us-ascii?q?AyCNSSCUAMDAQIkUgMDCQEBSAgDAVMGARIFhQ8NAwypHDODeQGERII4iCURe?= =?us-ascii?q?4EHgQ8vhW0CgSWGDwKXaEIIhWWIaIdDhR+JRocGgSUeATWBUjMaCBsVgn4Jg?= =?us-ascii?q?hcXg0WFFIUIAVFTegEBFI5sAQE?= Received: from tarius.tycho.ncsc.mil ([144.51.242.1]) by emsm-gh1-uea11.NCSC.MIL with ESMTP; 07 May 2018 12:36:25 +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 w47CaOZv030498; Mon, 7 May 2018 08:36:24 -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 w44KtdCQ082820 for ; Fri, 4 May 2018 16:55:39 -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 w44KtkF4032054 for ; Fri, 4 May 2018 16:55:46 -0400 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A1BYAQCLx+xaly0bGNZcGwEBAQEDAQEBC?= =?us-ascii?q?QEBAYNBZHoojE2MFUsGgQaBMJMbFIFkCyMJgUuCdQKCOCE1FwECAQEBAQEBAhQ?= =?us-ascii?q?BAQEBAQYYBkuFNQMDJ1IQUVcGARKFBw0DDKpYM4N5AYRLgkKIJRF7gQeBDy+Fb?= =?us-ascii?q?QKBJYYPApdbQgiFZIhoh0GFGYlChwSBJR0BgggzGggbFYJ+CYIXDgmDRYUUhQg?= =?us-ascii?q?BUVOBEI5nAQE?= X-IPAS-Result: =?us-ascii?q?A1BYAQCLx+xaly0bGNZcGwEBAQEDAQEBCQEBAYNBZHoojE2?= =?us-ascii?q?MFUsGgQaBMJMbFIFkCyMJgUuCdQKCOCE1FwECAQEBAQEBAhQBAQEBAQYYBkuFN?= =?us-ascii?q?QMDJ1IQUVcGARKFBw0DDKpYM4N5AYRLgkKIJRF7gQeBDy+FbQKBJYYPApdbQgi?= =?us-ascii?q?FZIhoh0GFGYlChwSBJR0BgggzGggbFYJ+CYIXDgmDRYUUhQgBUVOBEI5nAQE?= X-IronPort-AV: E=Sophos;i="5.49,363,1520913600"; d="scan'208";a="269536" Received: from emsm-gh1-uea10.ncsc.mil ([214.29.60.34]) by goalie.tycho.ncsc.mil with ESMTP; 04 May 2018 16:55:46 -0400 IronPort-PHdr: =?us-ascii?q?9a23=3AX4KTuBFAyo3e3DOCrrXQTJ1GYnF86YWxBRYc79?= =?us-ascii?q?8ds5kLTJ76pcq/bnLW6fgltlLVR4KTs6sC17KN9fi4EUU7or+5+EgYd5JNUx?= =?us-ascii?q?JXwe43pCcHRPC/NEvgMfTxZDY7FskRHHVs/nW8LFQHUJ2mPw6arXK99yMdFQ?= =?us-ascii?q?viPgRpOOv1BpTSj8Oq3Oyu5pHfeQpFiCazbL9oMBm6sRjau9ULj4dlNqs/0A?= =?us-ascii?q?bCrGFSe+RRy2NoJFaTkAj568yt4pNt8Dletuw4+cJYXqr0Y6o3TbpDDDQ7KG?= =?us-ascii?q?81/9HktQPCTQSU+HQRVHgdnwdSDAjE6BH6WYrxsjf/u+Fg1iSWIdH6QLYpUj?= =?us-ascii?q?m58axlVAHnhzsGNz4h8WHYlMpwjL5AoBm8oxBz2pPYbJ2JOPZ7eK7Ses8US2?= =?us-ascii?q?pfU8pITiBPAJ6zb5EWA+QcIOZYtJH9qEUSohuiHAWsAOTvyzFVjXPy3aA21u?= =?us-ascii?q?IsHgba0gIgAd8CqW3YotfoO6cISOy70bTIzS7bb/xIxTj99JXDfhQ/rf2QWL?= =?us-ascii?q?59d9fax0syGAPfllietIzrMS2b2OoOsWeb4ehvVey0hmI7tw18uCSjytswho?= =?us-ascii?q?XVgI8e11DK9T9+wIYwPdC2VE97bsKkEJRKrSGVKpZ9TMI/Q2BopS0316cGuZ?= =?us-ascii?q?+0fCgF05Qs2hnSa+aIc4eT+R/jTvieLip4hH1/ZLKznQq98U+lyuDlUMS/zV?= =?us-ascii?q?hEri1AktbWt3AN0QTe6suZRftn+EeuxzKP2xrU6uFeLkA4jaXbK589wr4wi5?= =?us-ascii?q?ocql7PETPxmEXziqKda0Yq+vCw5uj5f7nrqYWQO5F7hw3kLKgjmNazDOs4Pw?= =?us-ascii?q?QWXmWW+P6w2KDg8ED7WrlGkPM7n6fDvJ3YK8kWoLOyDRVP3YY58Rm/Ci+r0N?= =?us-ascii?q?QGknkDK1JIYByIgZLnNVzQLv31E+2xjkiwnDpq3fzJIKPuApDWLnjMirvheK?= =?us-ascii?q?xy609YyAYpyNBf5pZUBqkAIPL1REDxqMTVAgEkPwG72errFtpw2pkAVW+NGK?= =?us-ascii?q?OUP6PfvUeN5u01IumMYIEVuCz6K/gg//Pul3A5lkQGcKmzw5QYdXC4Ee56I0?= =?us-ascii?q?mDfXXshdIBHX8QvgUiVOzqlEGCUTlLanapQa084jA7CIS7DYbMXY2tnLyA0z?= =?us-ascii?q?u7Hp1RfGxGDEuMHm3ye4WLXPcMdnHaHsg0tj0CSKjkYpIt1A3mkQb7z7thIa?= =?us-ascii?q?Lw+zYE/cbn1d5o96jaiB0z6RRuAsid2n3LRGZxyCdAYxwT+OgrpU1710fG0q?= =?us-ascii?q?VihfFcPcJc6ukPUQogM5PYietgBIa2EibAeMqZAHCrXvmrH3kMVskt2dIHZg?= =?us-ascii?q?5YEtSmjxbMlw6rGKNdw7qGGJA57IrC0HXrYcVw0XDL0O8mlVZwBoNpOHGoh6?= =?us-ascii?q?pj+hKbK4PXnkHRs6exaexI2iPR+maH0WeU+U1VTgN0ebvKUGpZZUbMq9n9oE?= =?us-ascii?q?TYQOnqQZAmNBZRgfWPIbZQa8H4xXBBSOrnNZzaYnmt0zO0BBCV1vaXYYH3YW?= =?us-ascii?q?QBzWDYD0QZlw0743mLL049Cz2nrmaYCyZhQxanQkXw/OZkqW+qBmo5xhqXdU?= =?us-ascii?q?Bk2rypsjcPjvydV/4Ywq8etW91rzRyAUb43tTKBtWaphZwVLtTbMl741pd02?= =?us-ascii?q?/d8QtnMcrkZ5tPgl8YbhQ/u0L1y10jEYhEkM43vFs23QFyLuSey1oHeDSGi8?= =?us-ascii?q?PeILrSf1Pz9xCmcaKe9UzPmPyM+6gA87xssVrplBukGkor7zNs1NwDgCjU3Y?= =?us-ascii?q?nDEAdHCcG5aU0w7RUv4u6HOHNv7p7I1XBqLai/uyPD3NRsHuY+1xK8ZIgGYp?= =?us-ascii?q?68OCSpOPUzXpHoJeEvgFfvaxsFOKZX9apnd8+ldv7T3qmtMa4gmT+9lm1I7c?= =?us-ascii?q?h71V7E7CtzTOPEnt4FzviU0xHBVmL6i1Gsvw=3D=3D?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0A+AQAzyOxaly0bGNZcGwEBAQEDAQE?= =?us-ascii?q?BCQEBAYNBZHoojE2MFUsGgQaBMJMbFIFkCyMJgUuCdQKCOCE1FwECAQEBAQE?= =?us-ascii?q?BAgETAQEBAQEGGAZLDII1JIJQAwMnUhBRVwYBEoUHDQMMqlkzg3kBhEyCQog?= =?us-ascii?q?lEXuBB4EPL4VtAoElhg8Cl1tCCIVkiGiHQYUZiUKHBIElHQGCCDMaCBsVgn4?= =?us-ascii?q?JghcOCYNFhRSFCAFRU4EQjmcBAQ?= X-IPAS-Result: =?us-ascii?q?A0A+AQAzyOxaly0bGNZcGwEBAQEDAQEBCQEBAYNBZHooj?= =?us-ascii?q?E2MFUsGgQaBMJMbFIFkCyMJgUuCdQKCOCE1FwECAQEBAQEBAgETAQEBAQEGG?= =?us-ascii?q?AZLDII1JIJQAwMnUhBRVwYBEoUHDQMMqlkzg3kBhEyCQoglEXuBB4EPL4VtA?= =?us-ascii?q?oElhg8Cl1tCCIVkiGiHQYUZiUKHBIElHQGCCDMaCBsVgn4JghcOCYNFhRSFC?= =?us-ascii?q?AFRU4EQjmcBAQ?= X-IronPort-AV: E=Sophos;i="5.49,363,1520899200"; d="scan'208";a="11457979" X-IronPort-Outbreak-Status: No, level 0, Unknown - Unknown Received: from updc3cpa06.eemsg.mail.mil ([214.24.27.45]) by EMSM-GH1-UEA10.NCSC.MIL with ESMTP; 04 May 2018 20:55:45 +0000 X-EEMSG-check-005: 0 X-EEMSG-check-006: 000-001;6885463b-b983-4ec4-992f-bf45657e23d0 Received: from localhost.localdomain (localhost [127.0.0.1]) by UPDCF3IC04.oob.disa.mil (Postfix) with SMTP id 40d46S3DZYz62qT for ; Fri, 4 May 2018 20:55:44 +0000 (UTC) Received: from UPDC3CPA11_EEMSG_MP27.eemsg.mil (unknown [192.168.18.22]) by UPDCF3IC04.oob.disa.mil (Postfix) with ESMTP id 40d46R2r4tz62qQ for ; Fri, 4 May 2018 20:55:43 +0000 (UTC) Authentication-Results: UPDC3CPA11.eemsg.mail.mil; dkim=none (message not signed) header.i=none X-EEMSG-check-008: 16532397|UPDC3CPA11_EEMSG_MP27.csd.disa.mil X-EEMSG-check-001: false X-EEMSG-SBRS: 3.5 X-EEMSG-ORIG-IP: 66.187.233.73 X-EEMSG-check-002: true X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A0BjAAB4yOxah0npu0JcGgEBAQEBAgEBAQEIAQEBAYQleiiLb16MYAaBBoEwkxsUgWQLIwgBgUuCdQKCWTQYAQIBAQEBAQECFAEBAQoLCQgoIwyFKQMDJ1IQUVcGARKFBw0Pqlozg3kBhEyCQog2e4EHgQ8vhW0CgSWGDwKXW0IIhWSIaIdBhRmJQocEgSUcggozGggbFYJ+CYIXDgmDRYUUhQgBUSMwgQ4BAY5nAQE X-IPAS-Result: A0BjAAB4yOxah0npu0JcGgEBAQEBAgEBAQEIAQEBAYQleiiLb16MYAaBBoEwkxsUgWQLIwgBgUuCdQKCWTQYAQIBAQEBAQECFAEBAQoLCQgoIwyFKQMDJ1IQUVcGARKFBw0Pqlozg3kBhEyCQog2e4EHgQ8vhW0CgSWGDwKXW0IIhWSIaIdBhRmJQocEgSUcggozGggbFYJ+CYIXDgmDRYUUhQgBUSMwgQ4BAY5nAQE Received: from mx3-rdu2.redhat.com (HELO mx1.redhat.com) ([66.187.233.73]) by UPDC3CPA11.eemsg.mail.mil with ESMTP; 04 May 2018 20:55:30 +0000 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.rdu2.redhat.com [10.11.54.6]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id B77BA4270963; Fri, 4 May 2018 20:55:29 +0000 (UTC) Received: from madcap2.tricolour.ca (ovpn-112-12.rdu2.redhat.com [10.10.112.12]) by smtp.corp.redhat.com (Postfix) with ESMTP id 66E9E215CDA7; Fri, 4 May 2018 20:55:27 +0000 (UTC) X-EEMSG-check-009: 444-444 From: Richard Guy Briggs To: Linux-Audit Mailing List , LKML , Linux NetDev Upstream Mailing List , Netfilter Devel List , Linux Security Module list , Integrity Measurement Architecture , SElinux list Date: Fri, 4 May 2018 16:54:38 -0400 Message-Id: <5b0e0eef72b5137830f9f6c67908e5252dbf48f5.1525466167.git.rgb@redhat.com> In-Reply-To: References: In-Reply-To: References: X-Scanned-By: MIMEDefang 2.78 on 10.11.54.6 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.7]); Fri, 04 May 2018 20:55:29 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.7]); Fri, 04 May 2018 20:55:29 +0000 (UTC) for IP:'10.11.54.6' DOMAIN:'int-mx06.intmail.prod.int.rdu2.redhat.com' HELO:'smtp.corp.redhat.com' FROM:'rgb@redhat.com' RCPT:'' X-Mailman-Approved-At: Mon, 07 May 2018 08:32:10 -0400 Subject: [PATCH ghak81 RFC V1 5/5] audit: collect audit task parameters 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: Eric Paris , David Howells , Ingo Molnar , Steve Grubb Errors-To: selinux-bounces@tycho.nsa.gov Sender: "Selinux" X-Virus-Scanned: ClamAV using ClamSMTP The audit-related parameters in struct task_struct should ideally be collected together and accessed through a standard audit API. Collect the existing loginuid, sessionid and audit_context together in a new struct audit_task_info pointer called "audit" in struct task_struct. Use kmem_cache to manage this pool of memory. Un-inline audit_free() to be able to always recover that memory. See: https://github.com/linux-audit/audit-kernel/issues/81 Signed-off-by: Richard Guy Briggs --- MAINTAINERS | 2 +- include/linux/audit.h | 8 ++++---- include/linux/audit_task.h | 31 +++++++++++++++++++++++++++++++ include/linux/sched.h | 6 ++---- init/init_task.c | 8 ++++++-- kernel/auditsc.c | 4 ++-- 6 files changed, 46 insertions(+), 13 deletions(-) create mode 100644 include/linux/audit_task.h diff --git a/MAINTAINERS b/MAINTAINERS index 0a1410d..8c7992d 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -2510,7 +2510,7 @@ L: linux-audit@redhat.com (moderated for non-subscribers) W: https://github.com/linux-audit T: git git://git.kernel.org/pub/scm/linux/kernel/git/pcmoore/audit.git S: Supported -F: include/linux/audit.h +F: include/linux/audit*.h F: include/uapi/linux/audit.h F: kernel/audit* diff --git a/include/linux/audit.h b/include/linux/audit.h index dba0d45..1324969 100644 --- a/include/linux/audit.h +++ b/include/linux/audit.h @@ -237,11 +237,11 @@ extern void __audit_inode_child(struct inode *parent, static inline void audit_set_context(struct task_struct *task, struct audit_context *ctx) { - task->audit_context = ctx; + task->audit.ctx = ctx; } static inline struct audit_context *audit_context(struct task_struct *task) { - return task->audit_context; + return task->audit.ctx; } static inline bool audit_dummy_context(void) { @@ -330,12 +330,12 @@ extern int auditsc_get_stamp(struct audit_context *ctx, static inline kuid_t audit_get_loginuid(struct task_struct *tsk) { - return tsk->loginuid; + return tsk->audit.loginuid; } static inline unsigned int audit_get_sessionid(struct task_struct *tsk) { - return tsk->sessionid; + return tsk->audit.sessionid; } extern void __audit_ipc_obj(struct kern_ipc_perm *ipcp); diff --git a/include/linux/audit_task.h b/include/linux/audit_task.h new file mode 100644 index 0000000..d4b3a20 --- /dev/null +++ b/include/linux/audit_task.h @@ -0,0 +1,31 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* audit_task.h -- definition of audit_task_info structure + * + * Copyright 2018 Red Hat Inc., Raleigh, North Carolina. + * All Rights Reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * Written by Richard Guy Briggs + * + */ + +#ifndef _LINUX_AUDIT_TASK_H_ +#define _LINUX_AUDIT_TASK_H_ + +struct audit_context; +struct audit_task_info { + kuid_t loginuid; + unsigned int sessionid; + struct audit_context *ctx; +}; + +#endif diff --git a/include/linux/sched.h b/include/linux/sched.h index b3d697f..b58eca0 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -27,9 +27,9 @@ #include #include #include +#include /* task_struct member predeclarations (sorted alphabetically): */ -struct audit_context; struct backing_dev_info; struct bio_list; struct blk_plug; @@ -832,10 +832,8 @@ struct task_struct { struct callback_head *task_works; - struct audit_context *audit_context; #ifdef CONFIG_AUDITSYSCALL - kuid_t loginuid; - unsigned int sessionid; + struct audit_task_info audit; #endif struct seccomp seccomp; diff --git a/init/init_task.c b/init/init_task.c index c788f91..d33260d 100644 --- a/init/init_task.c +++ b/init/init_task.c @@ -9,6 +9,7 @@ #include #include #include +#include #include #include @@ -118,8 +119,11 @@ struct task_struct init_task .thread_group = LIST_HEAD_INIT(init_task.thread_group), .thread_node = LIST_HEAD_INIT(init_signals.thread_head), #ifdef CONFIG_AUDITSYSCALL - .loginuid = INVALID_UID, - .sessionid = AUDIT_SID_UNSET, + .audit = { + .loginuid = INVALID_UID, + .sessionid = AUDIT_SID_UNSET, + .ctx = NULL, + }, #endif #ifdef CONFIG_PERF_EVENTS .perf_event_mutex = __MUTEX_INITIALIZER(init_task.perf_event_mutex), diff --git a/kernel/auditsc.c b/kernel/auditsc.c index f294e4a..b5d8bff 100644 --- a/kernel/auditsc.c +++ b/kernel/auditsc.c @@ -2068,8 +2068,8 @@ int audit_set_loginuid(kuid_t loginuid) sessionid = (unsigned int)atomic_inc_return(&session_id); } - task->sessionid = sessionid; - task->loginuid = loginuid; + task->audit.sessionid = sessionid; + task->audit.loginuid = loginuid; out: audit_log_set_loginuid(oldloginuid, loginuid, oldsessionid, sessionid, rc); return rc;