From patchwork Wed May 17 14:45:13 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Smalley X-Patchwork-Id: 9731261 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 195F7602B4 for ; Wed, 17 May 2017 14:44:10 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 0AC782522B for ; Wed, 17 May 2017 14:44:10 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id F11DD28792; Wed, 17 May 2017 14:44:09 +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=-1.9 required=2.0 tests=BAYES_00, RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 Received: from emsm-gh1-uea10.nsa.gov (emsm-gh1-uea10.nsa.gov [8.44.101.8]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 060AB2522B for ; Wed, 17 May 2017 14:44:08 +0000 (UTC) X-IronPort-AV: E=Sophos;i="5.38,354,1491264000"; d="scan'208";a="7151098" IronPort-PHdr: =?us-ascii?q?9a23=3A1v3SPBeojU/+DJhz9vetDXgVlGMj4u6mDksu8pMi?= =?us-ascii?q?zoh2WeGdxcq6bRCN2/xhgRfzUJnB7Loc0qyN4v+mADNLvsbJmUtBWaQEbwUCh8?= =?us-ascii?q?QSkl5oK+++Imq/EsTXaTcnFt9JTl5v8iLzG0FUHMHjew+a+SXqvnYdFRrlKAV6?= =?us-ascii?q?OPn+FJLMgMSrzeCy/IDYbxlViDanb75/KBe7oR/MusQUjodvKKU8wQbVr3VVfO?= =?us-ascii?q?hb2XlmLk+JkRbm4cew8p9j8yBOtP8k6sVNT6b0cbkmQLJBFDgpPHw768PttRnY?= =?us-ascii?q?UAuA/WAcXXkMkhpJGAfK8hf3VYrsvyTgt+p93C6aPdDqTb0xRD+v4btnRAPuhS?= =?us-ascii?q?waOTE56mXXgdFugqxdrhyquhhzz5fKbI2JMfZzeL7Wc9EHSmpbRstfVzJPDJ6y?= =?us-ascii?q?YYUMCOQBJeRVo5TzqlQQthuzHhWgCP/1xzNUnHL6wbE23uI8Gg/GxgwgGNcOvW?= =?us-ascii?q?zJotXpKqgSSeC1w7fOzT7ecv1W3C3y6IzMch8/ofCHQLV9cdHMxkk0DA7FklWR?= =?us-ascii?q?ppDlPzOSzOgNtXOb4PB6WeKgjG4ntRh8rz6yzckvkonEnp8Zx1/L+CljwIs5OM?= =?us-ascii?q?e0RFB0bNK6CpdcqieXPJZsTMw4WWFnoiM6x6UDuZ68YScF1owqxwXaa/yba4iI?= =?us-ascii?q?5Q/jVPqJLTd4mn1lfLW/ig6u8Ue60O38V9S00E1QoipZktjDqnAN1xvJ5siBVv?= =?us-ascii?q?R95Vuu1SyK1wDS7uFIOUE0lazFJJ492rM8i5UevEvZEiL2hUn6lrGae0o69uSy?= =?us-ascii?q?9ujrerDmqYWdN49whAH+KKMumsmnDOQjLAcOW2mb+eKh1Lzs5EH2W7JKjuAwkq?= =?us-ascii?q?bFrp/aPt8WprK5AgBJ0oYj7AyzDzG90NsCh3UHI1VFeAyfg4jzJ17OOOz4Deu4?= =?us-ascii?q?g1m0kjdrwPbGMaf9ApXNNHfDlqzsfbR6605azQo818tf545KBbEbO/L/QEjxtM?= =?us-ascii?q?bXDhUhKQy73/7nCMlh1oMZQW+PAK2ZP7nOvl+L/eIvJO+MZI4LuDvmJfgl4+Pu?= =?us-ascii?q?jHAill8Ae6mpwYYXZGq/HvR8LEWTeWDsjcsZEWcWogo+S/TniVODUT5XYna9Qb?= =?us-ascii?q?g86yo1CI24EIjDQZqtj6aZ3CehGZ1WZH5JBUyQEXvycIWEQfgMYjqIIsB9ijwE?= =?us-ascii?q?SaShS4g52B6zqAD6zr1nLuzI+iEFrp/jysZ65/fSlRAz8jx0Cd6R02eTQGFohm?= =?us-ascii?q?kIXSM53LhjoUxhzVeOybV3g+BCGtxJ/P5GTgA6NZvAwONgENDyRhjNftGXR1a6?= =?us-ascii?q?Wt+mGy0+Tsotw98SZEZwA9WjjxHE3yqsGLIVkriLCIU18qLaxXTxIdxyy2zF1K?= =?us-ascii?q?kgkVkpXNFDNWu4ia5j7wLTHZLGk12Fl6a2cqQRxDDC9H+ZwmqUvUFYSxV9Ub3f?= =?us-ascii?q?UnAFZ0vWtsz55kfYQLCyF7srKAxBydSNKqFScN3mkU1GROv/ONTZe2+xlX2wCg?= =?us-ascii?q?yOxryQbYrqYH4Q3CDFCEgFigwT5niHNRMkCiemuWLeAyRkFUjzbEP07el+tHS7?= =?us-ascii?q?Q1c3zw6QbE1h0Ke19wUWhfOGSPMT2a8EtD0mqzVuE1a3x8jWBMaYpwp9YKVcZs?= =?us-ascii?q?sw701a2mLDtgxyIIagIrt4iVECdgR7pUTu1w94Co9Yi8glsGsqzBZuKaKfyF5B?= =?us-ascii?q?bD2Y3Yr3Or3MNmn/5wuva6jR2lDQ1daZ4KEP5O4+q1r9oAGjDlAi/Gl/09lJz3?= =?us-ascii?q?uc4Y3HDQQIXpL1TkY46QJ6p6rBbykj+YzUz2ZjMbSxsjPY3NIpHuQlwA66f9hD?= =?us-ascii?q?KKOECBPyE8oCCsiyNeMlhlmpYQgAPO1J6KE0OMameOec166wIOZshjSmgnpb4I?= =?us-ascii?q?plyEKD6zJ8SvLU35YC2/yY2AqHVzP4jFi/qcD6gppLai8IHmq40yTkA5RRZqJq?= =?us-ascii?q?d4YRFWiuO9G3xsl5h5P1RX5Y9UKsB08B2M+zYxadc1z93QpW1UQYunGnnSq4zz?= =?us-ascii?q?punDEzqaqTxivOw/7tdBAfIG5EWHFijUvwIYizl90aWEmobxM1lBe8/kb12axb?= =?us-ascii?q?pKV5L2nOTkZFZDP2L3ljUqu2t7qNf9VP5IkusSpJTOS2eUqaRaLloxsGzyPjGH?= =?us-ascii?q?NTxCo8dzGuvpX2gQZ6h36aLHd9t3fZYtxwygvE5NDGQv5RxDUGTjFiiTbLHli8?= =?us-ascii?q?I8Wp/dKMmpfbqO++SmahWodJfiXx1oyAsy+75XFtAR25hP2zn8HrEQ490SDnzd?= =?us-ascii?q?VqUzvHrArkaInxy6u6Kf5nflVvBFLk6Mp1BId+kpAriZETx3cagI6V/XwZnmfv?= =?us-ascii?q?K9lb3rj+bHUVTz4R39HV+BTl2FFkLn+R2YL5UGiSz9B/Z9m8f2wW2jgx78ZUB6?= =?us-ascii?q?eI9LZEhzd6okKkrQLNZvhwhi8dxuEz6H4emOwGpAstzjmdA7wLE0lXJyrsmw6P?= =?us-ascii?q?79Cko6VdfHyvfqSo1EpigdChC6mPohtBV3nkYZoiEipw78plPFLKznLz9pnueM?= =?us-ascii?q?PMYtILqh2UjxDAgvBNKJ0ri/oKgTRoOXrnsn0j1+40kwZu0IqnvIicNWpt5rm5?= =?us-ascii?q?DgRDNj3yesMT4C3igrhQnsaRxYCvEYtuFi8NXJT2UfKiCCgSuuj/NwaSDD08rW?= =?us-ascii?q?+WGbTFEg+Z9EdmqHfPHoulN36JOXYZys9iSwOFJExFhwAUXis1kYIlFgyww8zh?= =?us-ascii?q?akh57CgL5lHkshtM1v5oNx7nX2favgiobjM0R4aDLBpK9A5N/VzYMcqA4eJvBC?= =?us-ascii?q?FX4oeurBSTJWCBYQRHE30JUFSeB1//Jrmu+cXA8++AC+qkNffPb6+CqelEWPeM?= =?us-ascii?q?wpKu0pBr8CyQOcWKJHViCOc72kVbV3BjB8vZgykPSzAQly/VYc6bvgmz9TBsrs?= =?us-ascii?q?+l9vTrRAXv5ZCUBrRILdpv/gq6gaCZN+6fnCx5MypX1osQxX/Uz7gSxFgSizt0?= =?us-ascii?q?eDm1CbQNriDNTKPKmq9MEx4bZSJzNM1S4KI6wgZNONTUitfv2r5/lP41BE9PVU?= =?us-ascii?q?b9lcGxecwKP2a9OUvfBEmVL7uJOzvLw8DrYaO7UrBQjftbuAOutjqBFE/jJDuD?= =?us-ascii?q?nSHzVx+zKeFMkD2bPBtGtY6maRlhDmzjTNP9ah2nK997lyY2zqMoiX/QLm4TLz?= =?us-ascii?q?x8c0JLrr2N4iJVmelwGmxb7np4NumIgSiY4PPEKpYNtvtrBD54l+VA4HQ107FV?= =?us-ascii?q?9j1LRORpmCvOqd5ju0qmnfORyjV9XxpBtC1LiZmQvUp4J6XW7JZAVmjf/B4X62?= =?us-ascii?q?WfFQgKrcN/CtLzo6BQ1sTPlKXrJThZ8tLU8swcB87PJc2aLnUuKhvpFyTSDAcf?= =?us-ascii?q?Sj6rL27fjVRHkP6O7n2VsoQ6qp/0lZUURb9UTkI1Ge0BB0RiBNwNPpF3XjY+nr?= =?us-ascii?q?6aiM4H/n2+rRbLSMVdpJDHWeqYAe/zJzaBkblEexwIzKvkLYQUM433wVZial57?= =?us-ascii?q?nYvUHUrfRspNoip/YQ83u0hC7H9+Tmgv1E3/cQOt/GUfFfiqkR4qkgF+e/gi9C?= =?us-ascii?q?/w41crIVrHvCgwkUk1mdr7mj2RdTnxLKm+XY5IFyr0q0gxMpT+QwlrdwGym1Jr?= =?us-ascii?q?NCvcTbJLk7RgbXxriBPbuZZXH/5TU7dLYBsLyPGUYPUoykhcpT+hxU9c5uvFCI?= =?us-ascii?q?FulA00fp6wt3hAwR5sbMYpJazMI6pE1kJQibyVviC2zO8x2hMRJ0YW/WyJeS4I?= =?us-ascii?q?olEHNr4oJyqw5Oxj9wyDlyFFeGcSS/oguuhq+V8lO+Sc0yLg1KZOJV22N+yZKa?= =?us-ascii?q?OWpnbPlcqJQl4rzEwHiVNF/b9s3cckaUqUWFglzKGNGBQRKcrCNQZVYtJP+3fJ?= =?us-ascii?q?YyaOsPjCwYluMoqnDODoV+iOtagPgk26AAkpAp4M7sUdHpisyk3YK9noLKIdwx?= =?us-ascii?q?U3+AvrPEmFDOhOeB+TjTgHuN+ww4V43YlHPD4dH35wMT6t6bbUuw8qmuCMUM0y?= =?us-ascii?q?YncHWIsLLGg2VNSmmy5evHRBDD633vgfyAec8z/2vj7QAyXkb9p/ePeUYgthCN?= =?us-ascii?q?Wx+TUl7ae2j1/W8pLFKmH1M9Rip8XD6eQAp5aIE/lUV6Vys1/Am4lEQHynS3XP?= =?us-ascii?q?HsCxJ5jxbYkscNP1B22mXVy4jjI6U93+PM2xLqSShwHnW5pUupGB3D8/Lc+9Ci?= =?us-ascii?q?0eGxBoquEA/qJ9ZRcMY5wnYR7orAk+OKu/IB+E3dm0RWaiNydWReFFzeqmf7xX?= =?us-ascii?q?0zYsbuiixXs8T5E6yu638VINRJAKlRzR2PejZolEXifoAHBdfRvApTYhnWh7Ku?= =?us-ascii?q?ky2vs/wA/PsVQEKT+LcO1pZ3BasN4kAFOTIXN2Cm0+R1CGlofM+Q+s0KoU/ydE?= =?us-ascii?q?kdZUzPdJsH7gsZ/DeDisQrCkqY3Jsyo8atgru7Z+PpLlIsadrpzRgyLfQ4fKsg?= =?us-ascii?q?2eSiG6DfpblsJXICJCT/lCgXslNtAeuYpd9UoxUd8zJ7NSCKktorCqbSRrDSsJ?= =?us-ascii?q?wCAESYyPxz0Cjf2627fAkReQapsiOgQesJpemtsdTzJ2YiQGqa+5UYXWlnOLSm?= =?us-ascii?q?gMIAcX9gRC/BsOmJJqcO3554TFV4NDyzlTo/1oSCTLDYVo+0H9Sm6InVjyUO+h?= =?us-ascii?q?nPCx3QJO0PLs1cEWWARlBkhHwOZZjVAlKK1tK6YKoI7FrDuIdUL8vGLizOumJV?= =?us-ascii?q?ZRyc3Id132FoXFr2/8Xjca+XIKWY9F0GvfGogKkwpldKYro01BIY68dkni5zwk?= =?us-ascii?q?xoFpH7iiWsCo3FslrGgJSDm0HNZbDOFmql3XUiV/Y5+3sJXlJ4lSQmhI9ZKHsV?= =?us-ascii?q?dZjUNtPzS6yZdHKsFN4z8MXCRUrjmHutu9VtFD09dsD5AQOtd/p2v9GKRcNZiQ?= =?us-ascii?q?pX02pqLgynvH9DA5rli62C+zGq+jQuJe520RBAMpJ2GEpUkuC+sj6WDS81/Xvl?= =?us-ascii?q?Bz5edbCaCFjV9trzZlApBOGjFJ2GiqL1RpVnZGtflaJb/Uc8xbTfgyYwOvOxwg?= =?us-ascii?q?Gv4n2UyJ4V97nW3jbyx0qARa5zjXXxMoWikNnrfthToep9m7OT8dTpJFdikhYz?= =?us-ascii?q?vAKw2AgyxXughQa11yUZADHtlF460b3ZdT/sfaSUajMzsFUwZmNg0lyvdQiFBM?= =?us-ascii?q?sF2AeS/DCQqna+zPvgdwfceLo86jNO758xtfioP7rOA48L0OR3+hmQKzWt3Rsp?= =?us-ascii?q?HztsaUuUuUaKf3LfCzbWXHTDfSkRC6na0kAIXS/yjPLApbLIF3xmEqYZf9FWLG?= =?us-ascii?q?PwlKKqwAKkVHUqB6bMlJrfpBZ894YqoJ/7FiBg6fTBP1BIOvtOVGLkrURTnGNS?= =?us-ascii?q?WO7PGwoYLJ4rzBUuXgYsuMx2jZTK5pIph67iT0FKnw3Y9Y5EX2xu9n9llmRlje?= =?us-ascii?q?LyCBsNPhKxsT5Mm5akvtpIAmHS/NDZdrl3rt21tAeNYJTC2s7JQY0olW6HLqRe?= =?us-ascii?q?J/yEjzv/VY96N45okv/7Bp1cC0KL/OKfRAr0BoHAWbCx539pUpHGh/XXpeYvEQ?= =?us-ascii?q?KPfWeaQWk9zup/rwF6wN5x2f4/ZZZsffJ0Hdhsm/DSmRSR5ekwcbrj4aNQ+c2O?= =?us-ascii?q?Sbm6JvTMaluOz52l4s41eiLx4J1rZt5Zye9qqPvu/XYAPbzaIYVajyWsPzsrMs?= =?us-ascii?q?tluQ5fI+kr4OdHZ1Ywq6H+cDTcMd2n3vzaYxzSIrCc/DGazv+OJbXXIjgj3gg4?= =?us-ascii?q?x9H0kRGv4MG7qL+Z9TnmY+m+zcLNEWc6ZCmmiVFRG+Cb8C1WSr6zaLL2l5nxHO?= =?us-ascii?q?yQ//TXm07F/soi9yWTHMwMv7kkpJSrm3Al9fXyyoOUBktzOPOBDntMHttaQ060?= =?us-ascii?q?E2NXfktMmWmWukN75WENfzJNuGISk7vFgXloE+RsSz2YAHHtqwOMse/2t6bvTA?= =?us-ascii?q?8GOrjy9Ao6BciorF/s6V++vYHX+8j62bsbqB3jZYxWYkvVsn8NCvKunO58GWQ/?= =?us-ascii?q?Svz2sRSzx/uw7BUhOupLzUsU0bOUuR0EjRgIwKJNZZ3Xsm2U76+OgvWtUz9B9R?= =?us-ascii?q?FozYffMNuSjzOCfowVaYe983VCie0z5ME1LwD1Z5GLYz2HjxvMLPmnfc4VsoSZ?= =?us-ascii?q?dsd0b/nxx4E504KV4x6FgQ2icDEAkMZgqBA760HknlNpULVVQdZhubxrS6fb03?= =?us-ascii?q?3UJryLO1+ODTdfB8B7YKNvtFlQGOnUNbG5wMvq0cQbJ8Z0dd+7TKpgjmEIXoQ/?= =?us-ascii?q?/mmmcuOvKvX8Ba68cZt2E47QqlQBqg85hD5a4BiJ+Ubq5EfYTMvMdk4kd//zEP?= =?us-ascii?q?ajBCgBhxjhO+S+Acp/nv4sPFv5qs6+auUrstRuoM+hgsHWt+k4f/gFAtoNHQze?= =?us-ascii?q?dcSZfZiYfh/wBXJX6FpoLa3wN7KeoUJIKhZKxg+GkfJygCO3IOOsKba+Um4yBz?= =?us-ascii?q?NDXc/VpCDd0XaNwFPcrNlgFUilHzV7FI7MXbAEKYB511d88282r90Co1/ockUu?= =?us-ascii?q?b89D+2IojS715XMPNZkipsiNLCqfMRwfrTFCgY/3mZZAJowiOZ0ZWNDej//fmU?= =?us-ascii?q?wtHOS1wGBjI2U5taJDea9gyoWOy1lInuUgOT7cPzm4wxdEaRRny3gaQEvb1BEe?= =?us-ascii?q?pehSXh3jlRDJr5h/SLvNqw8GFXrEFIEJ5v7R3ZH6VSJol0ORbimca3XUVzGiz/?= =?us-ascii?q?eMXQdhovpuWW3PsM7PtiOEv+f4MbJQgEy73i43pPUgRuUKL2vkqeXe8JYdtmT/?= =?us-ascii?q?XErmxa6Y1+MKIPOVmdq4bsrjhWtFA3DggpaKUzrjxBbEXOmhNaW7rssr4algQc?= =?us-ascii?q?ScJ5uVNLGW+oN2Ix+yHHVb9MgKeMB/Ib9DSTTqoTU0RnKS5+TBa1149oe7S3h/?= =?us-ascii?q?xHtXlGnixlqvgwzzNmXAe8uTHrp68V2zIg/7G4tDMbtXNZTuWelzrIBkhCzfQL?= =?us-ascii?q?i6ccEHXi6V2nbXkdbYvy/qNoJcD9+okg+Xg/ZwssfzEeV+S6Fy7wl7+IApCIsN?= =?us-ascii?q?9EhR6Npt/BbbmoICgWK7Qy1BPjR39m0gTEmxZo6mQLSC267NA4PIW9Jdolxi2w?= =?us-ascii?q?FGjZalkM7K1JsM/quF8FVuQ2b01uwHl53siBWCINWNTFG3wpgQg8dWVEbJVD5A?= =?us-ascii?q?cVF6kshTaJsLdJ/gUQYDrPCYSl/Y/QncbU1nUnS9dl2H7WrLWfhpw2yH1lh890?= =?us-ascii?q?7imWtXQQd+zZU9dsAn/31ode1ezxee6gsuUGSIt60rSuTuUOMs65+Wu5wJ9qQF?= =?us-ascii?q?OqxqwCH1qlN+8O3qvbUyagSWCDReSLcnSDnzUnPU72/xWoKEM4aNtSpU8nLuTC?= =?us-ascii?q?noJclxHmUb5sQyWQpFzbzG8kMe4BdQI5ooSnewsMTOEPYeiQP+4uz+MiCFEUdX?= =?us-ascii?q?/GATN2C/OqsV6qhIV0IGtv4UPmYen26QDmNNySGgUYEY7EsJF+5Oa2RmWbOX9v?= =?us-ascii?q?1BdyJlV79//DF1Qtse9Ra46Rnd/Uh9thy+4EefBtMSkzutMIn4Jj7o6U0NyUfh?= =?us-ascii?q?7N1JbyIsrVouOZA/3ZwEQmYGZaUqAWYQnt/YU1IsY5W6HPHbtepRkcC7Y1QJgg?= =?us-ascii?q?N2fp6q55NwJycg/UZLSxnMbqvOaLaYVOq3/R9FIwIz/WuwcfxfysUQx7c5eqim?= =?us-ascii?q?38IZAoXDJBrsFiBQV9EYtKGsMAsxCnDICOlKG8kd+x9Ftwu/UWvqroFvDKyNO5?= =?us-ascii?q?0p12X5he+0OGJy7RBK1xjUR+kuSyg+vP0oXrCcz8Z9wITu57TXDZarXeBIWwNi?= =?us-ascii?q?qOOt7ge05B67Oc1LN5UhOMZCH2RqaGsCykNO544UUg0YF4ffDczDoq773B39vy?= =?us-ascii?q?fW5brD+5rXGVLJtf8EDKBevGUhJPV/WF9GdlHasKbYr78+sAPsAiwNiC7Alp8j?= =?us-ascii?q?tCyNGKLrOirkDSwEJ7c4zULE/y1CYkVokGOhO/MVEjgWXBsHTSHWxcLtS4Kclq?= =?us-ascii?q?mNuVCwbi6FVxmWEsYG5BHXHlRcmQOWgdxc2+YAyK9ARWD9cMheK3flQ4tqKqQ+?= =?us-ascii?q?lyJppFgfmqtKkAkdtxKSHAXstaPybLI7JtIzpRCPnPpFgvYh4ZvLg1Wps1aYKI?= =?us-ascii?q?IEwZLEeK0Tnywhfa0U3oa9ys076EICkM/Xpc1bLF0CZDpw2itPaHhs3sSqvZbJ?= =?us-ascii?q?DrXPLINioqSC2aTywoEUm14Vekp+YEvP2ALGcdp1AUZTiSCBQSpqB0ttXQCHXc?= =?us-ascii?q?meh9c50LnvyaXDrwSCJgnqooGilLrVyMQ+YEFQTOdH/hjm9ctxCjK/JP5n/lca?= =?us-ascii?q?OXxrBUW+0XBYtMdOeVQ93GdvBCdH8UkWACNeK9ecDMh6oo2VLPC20CGu/H80PN?= =?us-ascii?q?YlSRR6mn2z/zXYgT97Mxsy4s98OYyjR7CIzULr2foHio6Yf+gyGG776NHlIxal?= =?us-ascii?q?A41bpRSFKKxwNNfSReU9w=3D?= X-IPAS-Result: =?us-ascii?q?A2HfAQA9YRxZ/wHyM5BcGgEBAQECAQEBAQgBAQEBFQEBAQE?= =?us-ascii?q?CAQEBAQgBAQEBgwEpgVwSjniocCiLYFcBAQEBAQEBAQIBAmgogjMkgkkCdgMDC?= =?us-ascii?q?QIXMQgDAWwFiAJNgUINrycmAosPiD2NcAWeEJMODYIEiRYMhkUClEZYgQomCQI?= =?us-ascii?q?eCB8PhHmCX1qIaAEBAQ?= Received: from unknown (HELO tarius.tycho.ncsc.mil) ([144.51.242.1]) by emsm-gh1-uea10.nsa.gov with ESMTP; 17 May 2017 14:43:36 +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 v4HEfHp4000518; Wed, 17 May 2017 10:41:42 -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 v4HEfBF9051183 for ; Wed, 17 May 2017 10:41:11 -0400 Received: from moss-pluto.infosec.tycho.ncsc.mil (moss-pluto [192.168.25.131]) by tarius.tycho.ncsc.mil (8.14.4/8.14.4) with ESMTP id v4HEf5eO000509; Wed, 17 May 2017 10:41:05 -0400 From: Stephen Smalley To: selinux@tycho.nsa.gov Subject: [PATCH] selinux-testsuite: Test ioctl xperms Date: Wed, 17 May 2017 10:45:13 -0400 Message-Id: <20170517144513.19131-1-sds@tycho.nsa.gov> X-Mailer: git-send-email 2.9.3 X-BeenThere: selinux@tycho.nsa.gov X-Mailman-Version: 2.1.20 Precedence: list List-Id: "Security-Enhanced Linux \(SELinux\) mailing list" List-Post: List-Help: Cc: Stephen Smalley Errors-To: selinux-bounces@tycho.nsa.gov Sender: "Selinux" X-Virus-Scanned: ClamAV using ClamSMTP Extend the existing ioctl tests with a simple test for the ioctl xperms support. This depends on: 1) checkmodule that supports module policy version >= 18, 2) kernel that supports kernel policy version >= 30. The tests are automatically skipped if xperms are not supported by checkmodule or the kernel. Signed-off-by: Stephen Smalley --- policy/Makefile | 6 ++++++ policy/test_ioctl_xperms.te | 18 ++++++++++++++++++ tests/ioctl/test | 33 +++++++++++++++++++++++++++++++-- 3 files changed, 55 insertions(+), 2 deletions(-) create mode 100644 policy/test_ioctl_xperms.te diff --git a/policy/Makefile b/policy/Makefile index 14b215b..7bc7f95 100644 --- a/policy/Makefile +++ b/policy/Makefile @@ -2,11 +2,13 @@ POLDEV ?= /usr/share/selinux/devel SEMODULE = /usr/sbin/semodule CHECKPOLICY = /usr/bin/checkpolicy +CHECKMODULE = /usr/bin/checkmodule DISTRO=$(shell ../tests/os_detect) RHEL_VERS=$(shell echo $(DISTRO) | sed 's/RHEL//') POL_VERS := $(shell $(CHECKPOLICY) -V |cut -f 1 -d ' ') +MOD_POL_VERS := $(shell $(CHECKMODULE) -V |cut -f 2 -d '-') TARGETS = \ test_global.te test_capable_file.te test_capable_net.te \ @@ -26,6 +28,10 @@ ifeq ($(shell [ $(POL_VERS) -ge 24 ] && echo true),true) TARGETS += test_bounds.te endif +ifeq ($(shell [ $(MOD_POL_VERS) -ge 18 ] && echo true),true) +TARGETS += test_ioctl_xperms.te +endif + ifeq ($(shell grep -q cap_userns $(POLDEV)/include/support/all_perms.spt && echo true),true) TARGETS += test_cap_userns.te endif diff --git a/policy/test_ioctl_xperms.te b/policy/test_ioctl_xperms.te new file mode 100644 index 0000000..f9bc8d5 --- /dev/null +++ b/policy/test_ioctl_xperms.te @@ -0,0 +1,18 @@ +define(`FIOCLEX', `{ 0x00006601 0x00005451 }') + +# Domain for process that is allowed the required ioctl xperms. +type test_ioctl_xperm_t; +domain_type(test_ioctl_xperm_t) +unconfined_runs_test(test_ioctl_xperm_t) +typeattribute test_ioctl_xperm_t ioctldomain; +typeattribute test_ioctl_xperm_t testdomain; +allow test_ioctl_xperm_t test_ioctl_file_t:file { open read write ioctl getattr setattr }; +allowxperm test_ioctl_xperm_t test_ioctl_file_t:file ioctl FIOCLEX; + +# Domain for process that is not allowed the required ioctl xperms. +type test_ioctl_noxperm_t; +domain_type(test_ioctl_noxperm_t) +unconfined_runs_test(test_ioctl_noxperm_t) +typeattribute test_ioctl_noxperm_t ioctldomain; +typeattribute test_ioctl_noxperm_t testdomain; +allowxperm test_ioctl_noxperm_t test_ioctl_file_t:file ioctl ~FIOCLEX; diff --git a/tests/ioctl/test b/tests/ioctl/test index 7ce2c9e..fb84bae 100755 --- a/tests/ioctl/test +++ b/tests/ioctl/test @@ -4,7 +4,21 @@ # use Test; -BEGIN { plan tests => 2} +BEGIN { + $test_count = 2; + $test_xperms = 0; + + $modver = `checkmodule -V | cut -f 2 -d -`; + $selinuxfs = `cat /proc/mounts | grep selinuxfs | cut -f 2 -d ' '`; + chomp($selinuxfs); + $kernver = `cat $selinuxfs/policyvers`; + if ($modver >= 18 && $kernver >= 30) { + $test_xperms = 1; + $test_count += 2; + } + + plan tests => $test_count +} $basedir = $0; $basedir =~ s|(.*)/[^/]*|$1|; @@ -26,7 +40,22 @@ ok($result, 0); # individual calls, so we expect success always from that program. # $result = system "runcon -t test_noioctl_t -- $basedir/test_noioctl $basedir/temp_file 2>&1"; -ok($result, 0); +ok($result, 0); + +if ($test_xperms) { + # + # Attempt to perform the ioctls with the required ioctl xperms. + # + $result = system "runcon -t test_ioctl_xperm_t -- $basedir/test_ioctl $basedir/temp_file 2>&1"; + ok($result, 0); + + + # + # Attempt to perform the ioctls without the required ioctl xperm. + # + $result = system "runcon -t test_ioctl_noxperm_t -- $basedir/test_ioctl $basedir/temp_file 2>&1"; + ok($result); +} system "rm -f $basedir/temp_file 2>&1";