From patchwork Sun May 13 01:58:22 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: 10398227 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 95B2560536 for ; Mon, 14 May 2018 12:45:23 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 8BC0A1FE82 for ; Mon, 14 May 2018 12:45:23 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 7FD28223A6; Mon, 14 May 2018 12:45:23 +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 uhil19pa11.eemsg.mail.mil (uhil19pa11.eemsg.mail.mil [214.24.21.84]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 57EA91FF29 for ; Mon, 14 May 2018 12:45:22 +0000 (UTC) Received: from emsm-gh1-uea11.ncsc.mil ([214.29.60.3]) by uhil19pa11.eemsg.mail.mil with ESMTP; 14 May 2018 12:45:21 +0000 X-IronPort-AV: E=Sophos;i="5.49,400,1520899200"; d="scan'208";a="13247167" IronPort-PHdr: =?us-ascii?q?9a23=3AhAhhkhyzYGe8o6XXCy+O+j09IxM/srCxBDY+r6?= =?us-ascii?q?Qd1esTKfad9pjvdHbS+e9qxAeQG9mDsLQc06L/iOPJYSQ4+5GPsXQPItRndi?= =?us-ascii?q?QuroEopTEmG9OPEkbhLfTnPGQQFcVGU0J5rTngaRAGUMnxaEfPrXKs8DUcBg?= =?us-ascii?q?vwNRZvJuTyB4Xek9m72/q99pHPbQhEniaxba9vJxiqsAvdsdUbj5F/Iagr0B?= =?us-ascii?q?vJpXVIe+VSxWx2IF+Yggjx6MSt8pN96ipco/0u+dJOXqX8ZKQ4UKdXDC86PG?= =?us-ascii?q?Av5c3krgfMQA2S7XYBSGoWkx5IAw/Y7BHmW5r6ryX3uvZh1CScIMb7Vq4/Vy?= =?us-ascii?q?i84Kh3SR/okCYHOCA/8GHLkcx7kaZXrAu8qxBj34LYZYeYO/RkfqPZYNgUW2?= =?us-ascii?q?xPUMhMXCBFG4+wcpcDA+8HMOlfs4fzp0UDoQKnCQeuGezv0CZEiGLr3a0hy+?= =?us-ascii?q?QuDx3J3BA5E9IKt3TVosj+OKMSXOywyqTHyinNYfNI1Dvk8YTGcA0uoeuVUb?= =?us-ascii?q?xtbMrR0lEvGB3ZgVWMtIfpOy2Z2vgIv2Wd8uFuV/+gi3Q/pg9xvDahyMQihY?= =?us-ascii?q?vHho0XxFDK6D15zYQoKdC2VkF7esWpHIdMuyyAK4d6Xt8uT31utS0nyrMGo5?= =?us-ascii?q?m7fC0SxZo7xh7Qd/yHfJKS4h3+Se2fICp4hXJ4c7+inRay8EegyuLnVsKp11?= =?us-ascii?q?tKtCVFncLXu3AXyRPc98iHReFh/ku7xTmP0AXT5/hCLEspm6TbLJshzaQxlp?= =?us-ascii?q?oVqUnDHTH5mF/wjKCIckUo4O+o6/7oYrn+qZ+cNpN0igHjMqs1gMCwHeM4Mg?= =?us-ascii?q?0IUmOG+uq8zKXu8VD2TbhFlPE7krTVvIrEKckUuKK1GRJZ3p4i5hu+FTuqzd?= =?us-ascii?q?cVkHsdIF5bdh+KgZLlNlPALf3+EPyxmU6jkC1xyPDDJrDhB5LNIWXdn7r5Zr?= =?us-ascii?q?Z97lJcyBI0zdBC+5JYErEBL+z3Wk/2rNHYEgU2Mxa1w+b6E9VxzJ8eWGKTDa?= =?us-ascii?q?+ZN6Peq1mI6f40I+aQfoMVvTf9K/w96/7vi382h0MdcLG00ZYYZ320BPRrL1?= =?us-ascii?q?iDbXbyjdoND30GshcmQOzvklKCUDpTZ3ioX6I74zE2EJmmApnHRoCshryBwS?= =?us-ascii?q?i6EoRNaWBBF1CMF2vneJufW/oXdCKTItNukjwDVbS7TY8hzguhuBX1y7pgMO?= =?us-ascii?q?rY4jcYuo771Nhp++3Tkgk/9T5zD8SbyW6NU2F0kXkORzIt3qB/pkp9ylKZ3q?= =?us-ascii?q?hjn/xXC8ZT5+hTXgc9L57cwPRwC8ruVQLZYteJVFGmT82kATEzVN0+39wOY1?= =?us-ascii?q?16G9WkjxDDwTGnA7ERl7yWC5076b/c337tJ8Zg0XrG07Mhj1Y+SMtVKWKmnr?= =?us-ascii?q?J/9xTUB4PRi0WWib2leroa3C7M6GeDynGDvEBGXwFuT6rJR3cfZlHZrd7h/E?= =?us-ascii?q?PNU6euCag7MgtG0cONN6xKatvvjVpbWvjjPNXebnmrlGiuHxaIwamAbI3we2?= =?us-ascii?q?USxC/dElQLkxgP/XaaMggzHjquo37EAzx0Dl/gf0Ts8exip3yhVU800xuGb0?= =?us-ascii?q?t/2Lqp4hQVn+CTS+sP3rIYvycssyt7HE6n0NLMCtqAvBFsfL1GbtMn4VdHzn?= =?us-ascii?q?rZtwhnMZO8Ma9unFkecx54v0n2zRV4Fp1AkdQ2rHMt1AdyKKSY0E9feDOcw5?= =?us-ascii?q?/wP6PYKnXo/BGvcKPW3Une38iQ+qcK8vs4qlHjsxquFkst6Xln1MNV03SE7J?= =?us-ascii?q?XQEAUSSY7xUlow9xVip7DbYy4954XP2H1pNam4qz7C29QzCOsj0BmgZdRfMK?= =?us-ascii?q?KaFADsCcEaAdahKPAykVizch0EJPxS9LIzP86+efqG2aqrPON+kzK8lmlH7p?= =?us-ascii?q?5y3V+L9ypmUOHIx4wFw/aa3gSZSzj8kE2tssftmYBLfTsSBHawyTD4BI5NYa?= =?us-ascii?q?1/ZYgLCX20LM2x2tp+hoXtVmVd9F67BlMKwdSpeBSJb1Dn2g1Qz0sXq2S9mS?= =?us-ascii?q?Sk1zx0jy0prq2H0SzN2evidx0HOnNQSWlhl1jsIo+0j80AUEivdQgpmwOv5V?= =?us-ascii?q?zmyKhDuKR/M27TTF9ScCfrNWFiU7W/tqCZbsFV9JwotD9bUOOmYVCVUrT9uQ?= =?us-ascii?q?cV0zv/H2tCwzA2by2ltY/9nxNkk2KdMHZyrH3CdMFr2Rjf5cLTRfhN3joHXi?= =?us-ascii?q?Z0kz/XCUagP9Ox59Wbi4/DsvyiV2KmTpBTazTkwp6buSu04G1rDgezn/atld?= =?us-ascii?q?37CQI6yzP018F2VSXUqxbxepLr16qgMeJgZUloGETx69F8GoF5nIowgYsf2X?= =?us-ascii?q?4AipWT43UHjX/5Mc9H1qLmcHoNWTkLzsbb4Qf/3E1jMmyGx5jiVniG3Mtuec?= =?us-ascii?q?O6bXgL2iI49cxKD72U7LNclytvvlW4tR7RYeR6njoF1/su6WIVg/0OuAo31C?= =?us-ascii?q?mSHrASHU5ePSzjjBmI69G+rKNNa2a1dri8zk1+ncquDLuauAFTRG75eos+HS?= =?us-ascii?q?939sh/NFPM0Gbv6o39Y9nfc9YTthySkxfdgOlYM4kxluILhSphOGLyoWYlx/?= =?us-ascii?q?Q9jRNwwZGwpJKHJHl1/KKlHh5YMSX4Z9kU+jHpiaZRgNyW0JyoHpRvATgLR4?= =?us-ascii?q?boQu6zED4IsvTnLQmOGiUmqniHAbrfAROf6EB+onLMDZ+rMWqXKWIazdp8Qh?= =?us-ascii?q?mdP0pfjx4IXDkgmZ45DA+qztT7cEhl/jAR+kL4qhxUx+JwLRb/T2Pfqxmwaj?= =?us-ascii?q?guTpifMARZ7htZ6kfIKsyR8PhzHzpC8p26qwyNN3abaBhWAmEHXUyEHV/jMa?= =?us-ascii?q?e06dnG7eeYGvK0L+HSbrWWtexeS/CIyIqx0otg4jmBLduPPn9/AP07wEZDW2?= =?us-ascii?q?52G9jBkTUVVyMXjz7Nb9KcpBqk4i14tN2/8PDwVQ3z5IuPF7tTPcxh+x+sh6?= =?us-ascii?q?ePLemQhDx2KTxAzJMD2WfIyKQD3F4VkyxudDmsEbAeuiPWSaLQnaFXDxAFZC?= =?us-ascii?q?NvKMtI76U83gxTNsLBjNP6yKJ4hOYvC1hZTVzhht2pZcsSLmGzLlzHAlqLNL?= =?us-ascii?q?ODJTDQzcH4f76zSbpKjOpOrx2wozGbE039MTufiznlTRevMftDjCuDJhxRpJ?= =?us-ascii?q?m9cgpxCWjkVN/pdwG0MNpwjT0w3b04m2jHNXACPjhmckNMr7qQ7SVCjvV5BW?= =?us-ascii?q?NB8mJvLfOYlCaB8+nYNpEWvONlAiRuie1V/W86xKFT7CFYQ/x1gzDfocRyrF?= =?us-ascii?q?GjiOWPzSBnUBVWoDZRmI2LpVliObne9pRYX3bE5ggC7X2ICxkRqdtlC8fvu7?= =?us-ascii?q?tMytjBlaLzLi1N89TI8ssdHcfULNiLMH07MRrmADTUFhcKTSa3NWHDgExQiO?= =?us-ascii?q?qd+WaSopg+q5jsg4YOSqRBWFwuCPwVFl5pHMccL5dzXzMkl6ObjcET6HWirB?= =?us-ascii?q?jRXthavovdWvOcG/rvNC2Zjb5CZxcSxrP4N4sTPJXh20N+cll6gJjKG03IUN?= =?us-ascii?q?BLoy1hags0r1tW8HVlVGI8xVjlagS37H8UD/60kQY8ihFibuQ16Dfs/1A3K0?= =?us-ascii?q?LRqysxn0kxntPljCuMfzHvN6iwXJtZCyzuu0g2KJP7TB5/bReukkx8KDfEW7?= =?us-ascii?q?VRgqN6emBkkgDcp4VAFOVbTa1cfhAQw/SXaO8p0VRYsSqnwkBG6fHCCZt4mw?= =?us-ascii?q?sgaYSsoG5Y2wJ/cN41IrTdJLZOzlhVnK6OpCio1+Evzw8YPEkN6mSSdzALuE?= =?us-ascii?q?ETKrYmIC+o8fB25gyZhztPYm4MWOQ2ovhy7EMyJ/yAzz78075EMk2xNeyfLq?= =?us-ascii?q?OBu2jHkc6IQ08w2V0TmklA/Lh2zd0jfFSOW0Ao1ruRGAwDNdDeJgFNc8pS6H?= =?us-ascii?q?/TcD6IserT2511O56wFuPvTe+VqKYbmESkHB0qH4QN9MgBGIej0F3AJ8f9ML?= =?us-ascii?q?EF0Qkt5BjsJFidFvRGZgmLnykdrMGl0JB33ZJQKSocAWVnLCq34bjXphcwgP?= =?us-ascii?q?WdXNY6eHEaUZUYNnguQs21hzZZv2hcDDmwyu8W1RKN7yH9pivNFznxdMBsZO?= =?us-ascii?q?2OZRNrBtC24isw/LSriV7N85XeO2H7Oc5kutDR9eMQv4yHBO9MTblhr0fcnJ?= =?us-ascii?q?FVR3itU27VD9G1IZnxa443YNz7DHa6T0azizUvT8f+JNytNLSHgRn0RYZIt4?= =?us-ascii?q?mWxCsjOtG5FjEfHRdwuu4C6blgag0EZpo0fQTntx8iN6ClJgeXzMmuSX63KT?= =?us-ascii?q?RKV/lf0fm6Z7tPwiowb++6zXwgTo06z+i36kMCWZAKjxHEyvm4fYVeVzb8Gm?= =?us-ascii?q?BFcQXVuSU5j3RhNvo1wuon2hzItVgcPCyVe+NxbWxFv9c8BVSUIXpsEWc3XF?= =?us-ascii?q?6cgpDF4gK10bAS4jFRn9BK3u1ZqHL+pIPQYCqwWKy3rpXYqzEvYsYgo6BqK4?= =?us-ascii?q?PsP9WGu43EnjzEVpbQqA2EXDS9F/pAldhaODhYT+VQmWE5JcwGvpJM6VA3Vs?= =?us-ascii?q?c/O7NPCK4sprSxaTR8FCAc0DUXWp+H0jEZnui83L7amQuKf5Q5LBwIqpNCjc?= =?us-ascii?q?UBUyRueCMRuLejV5nKl2+DUmUEPAUT4h5Q6w8bioBweeTl4I7JTJBS0T5Wv+?= =?us-ascii?q?x7XTfLFpVy8Fv7UG6Wi0DiSPq9i+ypwR5SzPX039kBQhF/E09dyP1Nm0s0Mr?= =?us-ascii?q?F4MbcQsZDOsj+Jc0P6s2btyOqpJFlR1c3UeUf3DJDAtWbmVC0T52EUT5dVyH?= =?us-ascii?q?7DDZQSjxZ5aKEzqVRCOoypZkb+5z0hx4RoBba4Vtumx1c7onkYWSimCd1BC/?= =?us-ascii?q?tpsFjPQj1qf4irqIn5O5VVWmJQ/YeSq01akEpzLy65yJxcK85W7z8CRjdPpy?= =?us-ascii?q?mSvN+1SM1exMB2FIUAItFhtHfhAKlEIoSeo2UqurzzzX/U4yg8sFC+xDqpAa?= =?us-ascii?q?+5QeVZ/2kQGggyImSerU4vD/Ay/WjO6FDNtUt0//xaBriJgkV9ujF9HopBBj?= =?us-ascii?q?xRz3CqM0xzTGVas+VdMKnaadZcQ+Q0ZRO1OBwzDv8m302I/UFohnj1eSpyuR?= =?us-ascii?q?VG+yrFRQk7STEVgqvxmT0ZssynJTgaS5dTYDU9cyvFLhmUlTpRvBlBd0FgQ4?= =?us-ascii?q?oZDcpd+7EHwYtU+dLPSUa2JiEfRhNiMh833OFCmkFdqEWYYT7SDQ62evbVqB?= =?us-ascii?q?F3et2RrMGxJvTj4AhHkp/nsPw/96gbRX2mnhOiTMvDoIDird2FqFGOdLvmPO?= =?us-ascii?q?Khe3PBSibDjQyoj7c+E5bK5zTTMBZcK5Ri1XorfIXuCW/RMhRCPK8UO01bVa?= =?us-ascii?q?VmZtpcueBae9VoeKAX9q9xHhiHXA/gGJSzrPlaKVbeXS/RLyud/eCjo4/f8L?= =?us-ascii?q?LQRPP8acyLwnbIX7h4Poxm6TXhHbflz5Ne8FLs2vhx7kN6VUTGMyeZodT7OA?= =?us-ascii?q?wE+cmieVH+vpAyGTPWB4lwn2Tzyk5ccMoYXjOl/I4eyJxH9Hb6Ufh43VTrsO?= =?us-ascii?q?1O67lk7pE646hyyceoP6jdNOhavFR8AhiTGwVq7IkiD3Z5R2BNeO8eMvPRcb?= =?us-ascii?q?4ejcD0pOD9D7YX5wGN++xFddvHIFnMmtWlCj6CVxNLgRwMqSMeLguAzf6Kgb?= =?us-ascii?q?F0Sceipej9xE0t/0KyLhkczLBi/Y2E4LaHpPfLbxvNyrgJQq3qSdn3rrQopU?= =?us-ascii?q?yS+eEkm6QUdWFuZQ2oDvQdVtUByWj61aAl0zggE8XdELL84PRDTW42nir8m5?= =?us-ascii?q?BhGFUbAvEUEqCR/YRZhWc4n/bWNsMNf6BHh2aPEQKkEr4exn6q8SSXJnJljg?= =?us-ascii?q?vJ0xHqTmO59EX2ojNgQSvQ09fjlVJYVrutCkdUUSqpI0h4vy6RMwfzqNr4o6?= =?us-ascii?q?I17FoxMmD+stKCinehMqtNH8LjPNycPTU0pFUPgZ0+W9yv2IQbGd6jL9cU63?= =?us-ascii?q?xxc+XR5HiqkyBbpadLnY3e4tua+v/PB3mvk7Waq6mRxDBf0nU4v1A/6tW7O/?= =?us-ascii?q?HL+dKLQ+qn13wQTyd5tAvNRRi1paLHr1oMI0yEzF/LmJAWPtFexXQ40EXm6f?= =?us-ascii?q?MiQNI18QVSDIfAZ/UMpTDpIjT02kqfY8gqViaCzztXA0j1HkdiFKg7wmLws9?= =?us-ascii?q?rDlW3M9F0wWolwa0vniARyD4U/L0It9FcXzTQYHAgIaBCUFreoClr5LYoKUk?= =?us-ascii?q?gDcxeH3KOgdqcxw0Jz3qul5PXPYuxkG6oNKvFdgxaKnFhAH5IbsbYTQLxidF?= =?us-ascii?q?BA867XvBLtC5D9X/jhl3o/K+G6QtxA/cAerXsi7R61RwC85pdb87YblJeIe7?= =?us-ascii?q?ZFYZnNps9z9Vto6CUUdiNTnBhwkQ+2XfobpOD57djRqICo5fq2VKYxW+UX8A?= =?us-ascii?q?A5CH9/j5vrjlEsu9PX1+ZASo3Nk4v/7QRNLmWWt4bdzhZzN/ABK5+xfLZn7X?= =?us-ascii?q?UIPTISJ3UUPdqZc/M8+TNiMC3P51xeBcMBfcsYM9DRmQ9Iik3oVrZT9tDYGl?= =?us-ascii?q?OBEId8acQo72vxyDAo/poxSf7g5yWqJZ/D71FMMfRDjD9vlN7Yp+ga3+DSCC?= =?us-ascii?q?4J7nmdcRR1xTmCy5aVAfbq4eqM0M3UV08BHiMuXIdSPiCC9hK7Ruq1j5jpVg?= =?us-ascii?q?KU6tPtj5I+bk2QW2exkL4DsqlSDe5Kkj/70SRGFoDpm/KVtMKh6GRJuV1BDI?= =?us-ascii?q?Zz6hrFFKJEPpplPRT4l8+rRlVzBybkfMHbaAAuueqMyesW5eVxKVf+b5cBIh?= =?us-ascii?q?0Y07L69WZVTgx2Rb7wv1aWQeURZN98R/PftHxV6IVgK6gUPFiGv5HqqzhFqV?= =?us-ascii?q?8sDA8ucr8woSRQdlPSkw1NR6b0pLkAhxMTUdFlok9MAnu8Nn8x6TTBVKRVir?= =?us-ascii?q?SRCfMO/zWcS6wBSUNoPT1kTxOywpVudKOjnepbvWNegiN9vP8q3iRkRBu7uS?= =?us-ascii?q?3sobgB1i4g+LG8qTUOpH1ETuSYkyfTClVDze8HjbkdC3b881O8ZGQMbIro7L?= =?us-ascii?q?lhO8vg6ZEr424jbhU7Yy0GQeOgBjnxj6OWGIOPtslRhBqQuMrTbL+zKjMSOq?= =?us-ascii?q?46yRL5SHh3yhLekwpw8GsXXjWg68cpJIejNsYryCqoHXPWdVgW7aNPrsTxqU?= =?us-ascii?q?QHTO0oZlN92G9jyNSIRjURRMzTHGY4lgckaWFDcJNN9xAaE60ojy2TvqlB+A?= =?us-ascii?q?EUYSvbHp6j+obOgcfCwWM9QstyxmLKuq2FgYsn0Hhkm9N37S6Ov28fd+7CXM?= =?us-ascii?q?9vBXjz0JlQyerka/WrrO8HVJNsyK69X/8aLsmj5Wy21Y1xVUC7wLQeA0G0MP?= =?us-ascii?q?QHxrfcTyelVXOYVvqWfGSWmDY5KEHy7wGyLlIrcMdKs1M9Muzai55SiQLhVb?= =?us-ascii?q?J0Rj2OqlLAzW0jMOYadwcot4e9fwwFUvQdZ++GJegh2Pc+EkcDb2fVHStqDO?= =?us-ascii?q?+7qVCsnJBhO3Vh/Ur1f//g8gXnMNuOABkLD5TWrplr+fy1XmiBI2NvzAVuPE?= =?us-ascii?q?lo8OfSD1MxtutCfJuKhdjQg8500fUZd/dsLSI9psQTlZx95oWO1seFbw3RxI?= =?us-ascii?q?7oJd7JuviYH+Hfz0Myd2FeU7oZZx715oojMt49Wr3TBqdZvQ8HCKg7WpMhMW?= =?us-ascii?q?Dx+LtzLANpfQ7bfK60jdXypuKXeptUoGfb7lcqIyjAux0Dy/q0TQtgYpC0hn?= =?us-ascii?q?XyJo4/RjZAr91rFxtnE5FDG8QarwqoG5SUgr20i8et+0NmvO8HqajwBerJ1N?= =?us-ascii?q?S+xIp8RIVa5UqXPDbRA6lrn0tljuSugvva1Jn+F9/ic8seVOdnWm7FdqPGHo?= =?us-ascii?q?KnJzKMP8L8fFRG86Sd0LJiSRiRYjr2X6+Yuy2lLvlk5l87yoNgdurJ0DMt96?= =?us-ascii?q?3b2Mf1Z2xDvSejo3uJO4de4VHJHuHeQQxbSeCE8GdkGq0Xa5H49OEQPtw+k5?= =?us-ascii?q?Cg5FxX7TJfwI6sPqSgsgfp00N/dJTUZG/owDpxDY0LJgmvdEIxjW7Fgm7QDX?= =?us-ascii?q?RVMo6vLsw7xJ6xLTnJrx11mGcwditCF3DuSNO5J2cWwYS9aReM+QYNCMwMya?= =?us-ascii?q?r/XU8+q736b+R0Fphb0diyr6kdnN9sYwTGRcxbOS6YCL5tInIFCOjTqFU2Sg?= =?us-ascii?q?ALvqJzWYovY5WKZkQdPxHEgQX/0QXD1VH5bZSA2biEJG4y825bh+bD3CRCpg?= =?us-ascii?q?2ltOzcjsD9XbTxcp77RrjRPTAjWzXcQi49RwLh3VaipupMh/eTPH0evkFcRy?= =?us-ascii?q?WeFQoe7qRutsSYWmvSn/BzOYYHj+2AWjzhDSh/mLc2Cw5Vuk2WBfkODw/baz?= =?us-ascii?q?nmmmUK/ESDIONB8mjkc6zQ46dcQPEMD45BdOHRasHTefFCKjw0iy8UcLK4ft?= =?us-ascii?q?vBv/M41E7FQnEYD7jg6lKTVgiVT+aayjatWp8a6cx8gQcs+9TNjmdzEr/Ud+?= =?us-ascii?q?KEqjqv9JOopDqJsu3ZEG82ago6h/xUU0ebxxwVEmAPC9gPtAnCX7/ITVxN23?= =?us-ascii?q?0ywbZ01BUkYgl/UnRylHZRmaDuSYViVVcIgTb2E7U9Z1dtAWZ1rRLQuF/7fM?= =?us-ascii?q?AAtMbPRmRX6roLT88HIeI17JXMZ/BC/c0H9ms3mAVj7mOQAlZGgUSA+qvUWq?= =?us-ascii?q?d9wu4nhyE0/PBzC0eIRT6XMm3K0ZGvBM8HwyBy6Wvl2MzZsqElNLZTq4xjRl?= =?us-ascii?q?ZfByVwK90=3D?= X-IPAS-Result: =?us-ascii?q?A2AcAQAUg/la/wHyM5BcGgEBAQEBAgEBAQEIAQEBAYNAA?= =?us-ascii?q?2F7KIt2XowQSQEBBoEHgTCTMhSBXRIYCwgBgUuGCCE0GAECAQEBAQEBAgFrH?= =?us-ascii?q?AyCNSSCUAMDAQIkUgMDCQEBSAgDAVMGARIFgyCBcg0DDKwtM4N5AYRCgieIJ?= =?us-ascii?q?RF7gQeBDy+FbQKBJYYPApdzQwmFZ4hqh0mFJolVhw6BJRw4gVIzGggbFYJ+C?= =?us-ascii?q?YIXF4NFhRSFCAFRU3oBARSPVgEB?= Received: from tarius.tycho.ncsc.mil ([144.51.242.1]) by emsm-gh1-uea11.NCSC.MIL with ESMTP; 14 May 2018 12:45:20 +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 w4ECjJXO002736; Mon, 14 May 2018 08:45:19 -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 w4D1xmDG072291 for ; Sat, 12 May 2018 21:59:48 -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 w4D1xth6005592 for ; Sat, 12 May 2018 21:59:55 -0400 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A1BSAQA5m/dalyoaGNZbHAEBAQQBAQoBA?= =?us-ascii?q?YNAZHsoi3ZejA9LBoEHgTCTMhSBZAsjCYFLgnUCgwkhNBgBAgEBAQEBAQIUAQE?= =?us-ascii?q?BAQEGGAZLhTUDAydSEFFXBgESgyMCgXINAwysFDODeQGEQ4IniCURe4EHgQ8vh?= =?us-ascii?q?W0CgSWGDwKXc0MJhWeIaodJhSaJVYcOgSUcggozGggbFYJ+CYIXDgmDRYUUhQg?= =?us-ascii?q?BUVOBEI8vAQE?= X-IPAS-Result: =?us-ascii?q?A1BSAQA5m/dalyoaGNZbHAEBAQQBAQoBAYNAZHsoi3ZejA9?= =?us-ascii?q?LBoEHgTCTMhSBZAsjCYFLgnUCgwkhNBgBAgEBAQEBAQIUAQEBAQEGGAZLhTUDA?= =?us-ascii?q?ydSEFFXBgESgyMCgXINAwysFDODeQGEQ4IniCURe4EHgQ8vhW0CgSWGDwKXc0M?= =?us-ascii?q?JhWeIaodJhSaJVYcOgSUcggozGggbFYJ+CYIXDgmDRYUUhQgBUVOBEI8vAQE?= X-IronPort-AV: E=Sophos;i="5.49,393,1520913600"; d="scan'208";a="275698" Received: from emsm-gh1-uea10.ncsc.mil ([214.29.60.34]) by goalie.tycho.ncsc.mil with ESMTP; 12 May 2018 21:59:55 -0400 IronPort-PHdr: =?us-ascii?q?9a23=3AvP1rqRGaFZ9vjVmZygsfAJ1GYnF86YWxBRYc79?= =?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+vCw5uj5f7nrqYWQO5F7hw3kLKgjm9azDOsmPg?= =?us-ascii?q?QWXmWW+P6w2KDg8ED7WrlGkPM7n6fDvJ3YK8kWoLOyDRVP3YY58Rm/Ci+r0N?= =?us-ascii?q?QGknkDK1JIYByIgZXpNVzTPfz1Ce2xjkiwnDpl3fzJIKPuApDWLnjMirvheK?= =?us-ascii?q?xy609YyAYpyNBf5pZUBqkAIPL1REDxqMTVAgEkPwG72errFtpw2pkAVW+OGK?= =?us-ascii?q?OUP73evUeN5u01IumMYIEVuCz6K/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?6/OiWrQvUzXpXoJeEvgFfvaxsFOKZX9apnd8+ldv7T3qmtMa4gmT+9lm1I7c?= =?us-ascii?q?h71V7E7CtzTOPEnt4FzviU0xHBVmL6i1Gsvw=3D=3D?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0CBAADJmvdalyoaGNZbHAEBAQQBAQo?= =?us-ascii?q?BAYNAZHsoi3ZejFoGgQeBMJMyFIFkCyMJgUuCdQKDKjQYAQIBAQEBAQECARM?= =?us-ascii?q?BAQEBAQYYBksMgjUkglADAydSEFFXBgESgyMCgXINAwysFDODeQGEQ4IniDZ?= =?us-ascii?q?7gQeBDy+FbQKBJYYPApdzQwmFZ4hqh0mFJolVhw6BJRyCCjMaCBsVgn4Jghc?= =?us-ascii?q?OCYNFhRSFCAFRU4EQkAkBAQ?= X-IPAS-Result: =?us-ascii?q?A0CBAADJmvdalyoaGNZbHAEBAQQBAQoBAYNAZHsoi3Zej?= =?us-ascii?q?FoGgQeBMJMyFIFkCyMJgUuCdQKDKjQYAQIBAQEBAQECARMBAQEBAQYYBksMg?= =?us-ascii?q?jUkglADAydSEFFXBgESgyMCgXINAwysFDODeQGEQ4IniDZ7gQeBDy+FbQKBJ?= =?us-ascii?q?YYPApdzQwmFZ4hqh0mFJolVhw6BJRyCCjMaCBsVgn4JghcOCYNFhRSFCAFRU?= =?us-ascii?q?4EQkAkBAQ?= X-IronPort-AV: E=Sophos;i="5.49,393,1520899200"; d="scan'208";a="11728888" X-IronPort-Outbreak-Status: No, level 0, Unknown - Unknown Received: from uphb3cpa03.eemsg.mail.mil (HELO USFB19PA03.eemsg.mail.mil) ([214.24.26.42]) by EMSM-GH1-UEA10.NCSC.MIL with ESMTP; 13 May 2018 01:59:54 +0000 X-EEMSG-check-005: 0 X-EEMSG-check-006: 000-001;ab016522-b3b0-48e8-99bd-665b5e89d4f8 Received: from localhost.localdomain (localhost [127.0.0.1]) by USFBF3ID10.oob.disa.mil (Postfix) with SMTP id 40k6Th1Lrdz2L92Y for ; Sun, 13 May 2018 01:59:52 +0000 (UTC) Received: from USFB19PA15.eemsg.mil (unknown [192.168.16.17]) by USFBF3ID10.oob.disa.mil (Postfix) with ESMTP id 40k6Tg0fRmz2L92X for ; Sun, 13 May 2018 01:59:51 +0000 (UTC) Authentication-Results: USFB19PA15.eemsg.mail.mil; dkim=none (message not signed) header.i=none X-EEMSG-check-008: 127386426|USFB19PA15_EEMSG_MP11.csd.disa.mil X-EEMSG-check-001: false X-EEMSG-SBRS: 5.2 X-EEMSG-ORIG-IP: 66.187.233.73 X-EEMSG-check-002: true X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A0BeAADUmfdamEnpu0JbGwEBAQEDAQEBCQEBAYQkeyiLdl6MWgaBB4EwkzIUgWQLIwgBgUuCdQKDKjQYAQIBAQEBAQECFAEBAQEBCAsLBigjDIUpAwMnUhBRVwYBEoMjAoFyDQ+sFDODeQGEQ4IniDZ7gQeBDy+FbQKBJYYPApdzQwmFZ4hqh0mFJolVhw6BJRyCCjMaCBsVgn4JghcOCYNFhRSFCAFRIzCBDgEBkAkBAQ X-IPAS-Result: A0BeAADUmfdamEnpu0JbGwEBAQEDAQEBCQEBAYQkeyiLdl6MWgaBB4EwkzIUgWQLIwgBgUuCdQKDKjQYAQIBAQEBAQECFAEBAQEBCAsLBigjDIUpAwMnUhBRVwYBEoMjAoFyDQ+sFDODeQGEQ4IniDZ7gQeBDy+FbQKBJYYPApdzQwmFZ4hqh0mFJolVhw6BJRyCCjMaCBsVgn4JghcOCYNFhRSFCAFRIzCBDgEBkAkBAQ Received: from mx3-rdu2.redhat.com (HELO mx1.redhat.com) ([66.187.233.73]) by USFB19PA15.eemsg.mail.mil with ESMTP; 13 May 2018 01:59:49 +0000 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 7F9EE40201A2; Sun, 13 May 2018 01:59:48 +0000 (UTC) Received: from madcap2.tricolour.ca (ovpn-112-35.rdu2.redhat.com [10.10.112.35]) by smtp.corp.redhat.com (Postfix) with ESMTP id 2C5CC10E51A6; Sun, 13 May 2018 01:59:42 +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: Sat, 12 May 2018 21:58:22 -0400 Message-Id: <90031e185e85e5e327aaafb40882d2e3e52ea4c8.1526173613.git.rgb@redhat.com> In-Reply-To: References: In-Reply-To: References: X-Scanned-By: MIMEDefang 2.78 on 10.11.54.3 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.6]); Sun, 13 May 2018 01:59:48 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.6]); Sun, 13 May 2018 01:59:48 +0000 (UTC) for IP:'10.11.54.3' DOMAIN:'int-mx03.intmail.prod.int.rdu2.redhat.com' HELO:'smtp.corp.redhat.com' FROM:'rgb@redhat.com' RCPT:'' X-Mailman-Approved-At: Mon, 14 May 2018 08:42:00 -0400 Subject: [PATCH ghak81 RFC V2 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 called "audit" in struct task_struct. See: https://github.com/linux-audit/audit-kernel/issues/81 Signed-off-by: Richard Guy Briggs --- MAINTAINERS | 2 +- include/linux/audit.h | 10 +++++----- include/linux/audit_task.h | 31 +++++++++++++++++++++++++++++++ include/linux/sched.h | 6 ++---- init/init_task.c | 7 +++++-- kernel/auditsc.c | 6 +++--- 6 files changed, 47 insertions(+), 15 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 f7973e4..6d599b6 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(void) { - return current->audit_context; + return current->audit.ctx; } static inline bool audit_dummy_context(void) { @@ -250,7 +250,7 @@ static inline bool audit_dummy_context(void) } static inline void audit_free(struct task_struct *task) { - if (unlikely(task->audit_context)) + if (unlikely(task->audit.ctx)) __audit_free(task); } static inline void audit_syscall_entry(int major, unsigned long a0, @@ -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 74f60ba..d33260d 100644 --- a/init/init_task.c +++ b/init/init_task.c @@ -119,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 d441d68..4c1fd18 100644 --- a/kernel/auditsc.c +++ b/kernel/auditsc.c @@ -836,7 +836,7 @@ static inline struct audit_context *audit_take_context(struct task_struct *tsk, int return_valid, long return_code) { - struct audit_context *context = tsk->audit_context; + struct audit_context *context = tsk->audit.ctx; if (!context) return NULL; @@ -2066,8 +2066,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;