From patchwork Tue May 9 20:50:37 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Jurgens X-Patchwork-Id: 9718957 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 21A7860364 for ; Tue, 9 May 2017 20:52:14 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 1236228389 for ; Tue, 9 May 2017 20:52:14 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 0736B2848E; Tue, 9 May 2017 20:52:14 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-4.2 required=2.0 tests=BAYES_00, RCVD_IN_DNSWL_MED, UNPARSEABLE_RELAY autolearn=ham version=3.3.1 Received: from emsm-gh1-uea11.nsa.gov (smtp.nsa.gov [8.44.101.9]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 229FE28389 for ; Tue, 9 May 2017 20:52:13 +0000 (UTC) X-IronPort-AV: E=Sophos;i="5.38,316,1491264000"; d="scan'208";a="5619578" IronPort-PHdr: =?us-ascii?q?9a23=3AzK1uvBfrMktAxICP2hIY0F1plGMj4u6mDksu8pMi?= =?us-ascii?q?zoh2WeGdxcq7bByN2/xhgRfzUJnB7Loc0qyN4v+mATVLuMzR+Fk5M7V0Hycfjs?= =?us-ascii?q?sXmwFySOWkMmbcaMDQUiohAc5ZX0Vk9XzoeWJcGcL5ekGA6ibqtW1aFRrwLxd6?= =?us-ascii?q?KfroEYDOkcu3y/qy+5rOaAlUmTaxe71/IRG0oAnLqsUanIRuJrsvxhbKv3BFZ/?= =?us-ascii?q?lYyWR0KFyJgh3y/N2w/Jlt8yRRv/Iu6ctNWrjkcqo7ULJVEi0oP3g668P3uxbD?= =?us-ascii?q?SxCP5mYHXWUNjhVIGQnF4wrkUZr3ryD3q/By2CiePc3xULA0RTGv5LplRRP0lC?= =?us-ascii?q?sKMSMy/2/Nisx0kalVvhSvqRJiyILQeY2ZKeZycqbbcNgHR2ROQ9xRWjRBDI2i?= =?us-ascii?q?coUBAekPM+FaoInzv1sDrwayCAeyC+P00TJEmmP60Lcm3+k7DQ3KwAotFM8Ovn?= =?us-ascii?q?TOq9X1Mb8fX+6vw6nO0D7Na+5W2S3y6IfWdBAhuuyHULVtfsXLz0kvFh3KjlGS?= =?us-ascii?q?qYH+OjOayOANs2yB4OpmUuKuhHQrpB12ojiq38ohjJTCiIwSylDB7yp5wYA1KM?= =?us-ascii?q?W5SEFgf9GkFoZftzmdN4tsXsMuWXxntzgkyrEeop60YDIFyJI9yx7bcPOKdZWD?= =?us-ascii?q?7BH7VOuJPDt1i31odKi/ihqv60Ss1OLxWteu3FpXtiZJj93Bu34X2xHc6MWLUO?= =?us-ascii?q?Zx80ah1DqVygzf9OVJLEYpnqTBMZEh2KQ/lp8LvETGGS/5hVv5gbeNdkUh5uio?= =?us-ascii?q?8+PnYqj6ppOEN497lAX+MqM2l8yjG+s4KAkOX3WA+eimyL3i/VH2QLVNjvEslK?= =?us-ascii?q?nWrIvaKtgBqq68Ag9V1p4v6xe5Dzi4zNQVhWQLIV1KdR6dj4XlJkvCLO73APuh?= =?us-ascii?q?mVigjS9nx/XcMb3gBpXNIGLDkLDkfbtl8E5T1g4zzdFZ55JJBbANOen8WkjstN?= =?us-ascii?q?zeEhA2LRe0zv37CNR9yoweWWWPDrWfMKPJq1CE/O0vI+6SZIMNojbyN+Al5+Ly?= =?us-ascii?q?jX8+gVIdf66p3Z0NZ3CkHvRpOUOZbGHugtcGF2cKuxAxTPf2iFKcSz5TfGy+X6?= =?us-ascii?q?Um5jE0EIimF5vMRpixgLyd2ye2Bp9WZmJcBV+QEnfobIKEW/ENaCKMOcJhnDgE?= =?us-ascii?q?VaWuSoA6yBGushP6y6d9IurT4C0Yuorp1MJp6O3LiREy6Tt0AtyT0mGMS2F0m3?= =?us-ascii?q?0HRyUt0aBxv0Ny11CD0bJijPxAD9xT4PFJXRkmOp7A1eB6DMryWg3ZdNeTVFmm?= =?us-ascii?q?WsmmAS02Tt8p3tABf0N9G9KkjhDfwianGKEVmKKRBJw186Pc2H7xK9x7y3nYyK?= =?us-ascii?q?krl0MmTddXNW26mq5/8BDeCJPVk0qDjaanbrgT3CnI9Gif12WOp11YXBR2Uarb?= =?us-ascii?q?QXAVflHWosjh5kPeU7+uDqwqMwtAyM6FLKtHcdjpjVFfSPfiPtTSeWSxlH2qBR?= =?us-ascii?q?aLx7OMcpTld38b3CrDFEgOixoT8mqeNQgiGiehpHrTAyd1Gl7oZ0Ps8PJ+qG+g?= =?us-ascii?q?TkMu1AGFcVFu26Cu+hELgfycSvUT3q8LuSo6tzp1HEy938/NC9aaqQtuZrlcYc?= =?us-ascii?q?g64FdBz27ZsBZ9PpO4JaB4mlEeaxh3v1/p1xhvFIpAidIlrGkrzAppMq+YyElO?= =?us-ascii?q?dymZ3ZDrIr3XLnP98wyxZKLM3VHeytmW8L8V6Psks1XjoB2pFk06/nVpydlayX?= =?us-ascii?q?2c6YnLDAoJSp/xV1439xljq7HBbCg9/JnY1Xp2Mam7qjXCwc4mBPM5yha8eNdS?= =?us-ascii?q?KKCEGxXxE80dGsijM+8qlEKqbhIDIeBe7qk0P9mpd/Gewq6kIP5gnC66jWRA+I?= =?us-ascii?q?1yyF+D9zB9SuHWxZYI2OuX0ReCVzvmi1ehqM/3k5heZT4OBmq/1TTkBIlJa61p?= =?us-ascii?q?c4YLE2CuI9arxthlnJ7tXXlY9VCmB1wc3s+lYxySYELh3QdIz0QYvWSnmTekzz?= =?us-ascii?q?xzizwooLCQ3CjSw+v8bhoHIXVGRHd8glf2Ooe0ktUaUFKvbwgzmxuv/Vz6yLRD?= =?us-ascii?q?pKRjM2nTRl9FfzTrIG5/U6u/rL6CbtVT55MvtCVYTP6zYUuGSrLnpRsVzT/jFX?= =?us-ascii?q?NExD8nbzGqpon5nxtihWKbLXZzqH7Zdt9rxRrE/tPTW+RR3j0cSCl/kznXCUC2?= =?us-ascii?q?P8O18tWMi5fDrue+Wnq/Vp1SbSbr0YSAtDGh6WJ2AR2/mPazmtL8HAg+0C/70c?= =?us-ascii?q?NlVT/PrBrmZYnrzau6O/p9fkZ0HF/899Z6GoZmn4s0hZEQwmQaioyO/XUZlWfz?= =?us-ascii?q?MNNb2b/xbXcWXj4L29/V4A7k2EJ/NXKF3YT5WWuBwsF5fdm1fnsW2j4h78BNEK?= =?us-ascii?q?qU9rtEnS9xolWmtwLeff99nzkGxPs19X4Vn/oJtBAqziWHDbAYBVNYMjD0lxSU?= =?us-ascii?q?89C+q71aZH61frit0Epyh8quAKuZrQFbXHb5ZpAiHSlr48V6LF7M1nrz5Z3+dN?= =?us-ascii?q?nWc90TqgWekw3cgOhNNJIxiv0KiDJkOW3ju30l0PU2jR9w0pG8p4iHLXti/L6j?= =?us-ascii?q?Dh5fLD31aNsZ+ivxgqZGgsaWw4evE41/GjUNQZTlVuyoEDQPuvTnLQqOFiMzqm?= =?us-ascii?q?uDE7rFAQCf8Ftmr27IE52zL3GYPmQZzdF5SRaBJUxfnAAVUCw0npEjEACm3svh?= =?us-ascii?q?cF125joJ/F73tgNMyv50Nxn4SmrfvB2naiowSJeBNBpZ9AdC51vLPsyE9e9zAj?= =?us-ascii?q?pY8YO7rAyWMGCbfANIDXwTWkOYGV/jML6u5cPP8+eGHOa+KeXBYamWo+xES/iI?= =?us-ascii?q?3Y6v0pdh/zuUOMWAJH9iD+E82kpGRn15FdrWlCgISywNjS3Nd9SbpBC++iJpss?= =?us-ascii?q?+/7O7nWAX15YuAE7FSK8lg+wiqgaefMO6dnCN5Jixc1pMI23DI1KQf00QIhCx1?= =?us-ascii?q?cTmiD6gAtTXRQ63Kgq9YEQQXayVtO8tU96g8xBVCOdbHitPp0b51luQ1B01LVF?= =?us-ascii?q?D7n8Gmf8gKI2a9NV7cHkmEKLGGKSfMw8HtbqO2UadQg/lMtx2spTabFFfuPjqZ?= =?us-ascii?q?lzb3Sh+vKvtDjCeHPBxZo4GwaQxiBnTmTN78bR27KtB3hyUswbIonnPKKXIcMT?= =?us-ascii?q?9kfkNLtL2f9ztYgu1kFmxP73plN/KEmzqX7+nZLJYZq/1rDTh1l+1A5HQ20bxV?= =?us-ascii?q?7DtLRPZtgivdssZuo026kumI0jdnSARBpS1Vi4KNvEViJaLZ+4JBWXna4h0C83?= =?us-ascii?q?+cCxMQp9tqEtfvobxfysDTlKLvLzdP68/b/dACCMfOJ8KHKmAuMQTyFT7PFgQF?= =?us-ascii?q?TiOrNXvFiEBHlPGS63uVoYIgqpT1hJoOTbxbVVwyFv8ADERqAsACKo9tXjw4ib?= =?us-ascii?q?6bkNII5X2moRnKXspaoIrIVv2MDvX0MzuZlqNLZwUSzrP3M4sTLZf320p8ZVlm?= =?us-ascii?q?hI7KAVbfXchRoi19aQ85uF5C8HlxTm003ULocR6i72EIGv61hBE2jBFyYeM39D?= =?us-ascii?q?fj+103PEbFpDMskEktntXomSqecDHrI6euQ45bEC30t1AvPZP9RgZ6dwyynUh/?= =?us-ascii?q?OzfDSLNdlbxgdXpkiAXEo5tABeZcTbFYYB8X3fyXe/Io0VFGpiW9wk9G5PXKCZ?= =?us-ascii?q?15mwswdp6jsXFA1hl/Y94yIKzfOLBGzkNMhq6UuC+nyPwxyhcEJ0kR6GOSZDII?= =?us-ascii?q?uEsQO7klJyuo+vJj5BeHmztEdmgMWeQlou529kM9POSAyjzv36RFKk+vK+yVN7?= =?us-ascii?q?mZtHTYlc6UXlMw0VsFl09b8rds1ccuaEmUV0c0zLuNDRsJM9HCKQJUb8ZI8njc?= =?us-ascii?q?YzqOu/3XwZ1pJ4W9CvzoTeiWuaYOnE2kBxgmEJ4W7ssdHpmhy1rXLcb9LLEYzh?= =?us-ascii?q?Ut6hzrJE+bA/VJYh6LlikIo92nxp9twYZdPi0dAXl6MSiv+7nXoQkqgPyeU9go?= =?us-ascii?q?ZncaX5AJOWgoV82gnC5VpXNADCO40ugB0giN8yf8pjjMDDn7d9dsee2bZQ1tCN?= =?us-ascii?q?6r4jUy6LK5iUTN8pXZKWD6LspttcPS6eMAppaHF/NVQaN7s0jCh4lSX2aqXHLX?= =?us-ascii?q?Ed6pO5jwbJEhbdjzCnagTFO/jTM0T8DqMdaiKKiInBvkRYFOsImUxDojL9OyFi?= =?us-ascii?q?kCGxdsoOEO/Ll8ahMHY5o6Zx7oqgs/OrejLwef19WhX3yiKSBKT/VFy+W1eaBX?= =?us-ascii?q?xTI2buCm0HsgUo06z+6v/E4OXpELjgvRxfC/Z4leSiXzFXtdex3TqiYjkWhuKP?= =?us-ascii?q?oyyP8lwBzUqVkcLyyLdOtxZWxYvtE8AFSSIWl2Cms4XFKTkIvD4w620L8J5Sdd?= =?us-ascii?q?mchb0fFdunjkopDfeC6sWLCsqZjNqSUgadkmrLFvPoP7J8uHtJXenjvZTJbKqQ?= =?us-ascii?q?CKSy+6GOBcmtRJLiJYXeNEmWc7NswaoYBB81Y+Vt8iJ7xTD6khvqulZiRiDSMJ?= =?us-ascii?q?1yAWSp2A0yIYguenwbTajBeRfI4lMBwev5VImsEdXDJuYiMCuK+jUJ3bl2CZSm?= =?us-ascii?q?gKJAcT6RpD5Acbm4BtYO/q+4vIQ4VKyzJMpPJ0SCTLHIFy91TnUmGWnUT4SPK5?= =?us-ascii?q?nuyz2wJSze7j0tkcWB57EkhT3/9YmFYyJrxrLKcdpZLFsjiNdUzmpm3t0/emKE?= =?us-ascii?q?NXycLKa13yFJDFunbkUi0A5X0UQpdCyGvCGpsPiAd5Z6MrpVpWLICgZEn++yQu?= =?us-ascii?q?x551ELmgScCr21EloG4cRyiwCdpBDPppvUnLWD1/eZ+rtovqO5FTQm9W952dr1?= =?us-ascii?q?ZZkEptMy6lx5pTMdtN4jsWUDhJvzqdoMO4SNdf1s9uE58MPtB/tm/zGa9eJJeR?= =?us-ascii?q?o3w2urnuynDD+DAxq1a6yyutFKCmVe5Z+HceGgoxLWSEtkYvF/cs8nvV8l3VqF?= =?us-ascii?q?905fpbBr6VgUVyuzt9H5FOBjdV1X++NVhzSmdJs/lCIqTPb8NcW+UyZQOoOxEm?= =?us-ascii?q?FP4m2VCJ8l9wnXjnZix9qBda+zrdXgQvUikVmqnimTsbqs69OD8aT4lHbTIubi?= =?us-ascii?q?vfLAKbgy9Xtg5Fa052Q5AZHspF+7YD0Itb5MrNU0CsKT0eURxjMQI53/xflVJD?= =?us-ascii?q?sEqGeCDdCxaoeujVshFte8eestKpJuzj/AhbkoPnrPw496IbSn26ng2tRMvTr5?= =?us-ascii?q?Pgut2PrUSCbqH4PPOgYXXZVjjDkQiwhas4D5nN5yXTMBBUK4NgxnogfJfsEnPE?= =?us-ascii?q?MgpeJ6IDOUVbUb51ac9cruBdfc9kd74D+bVxCRKfWhPvBIuvoeFELlbUWzvTND?= =?us-ascii?q?iO/fKkoY3N97zdVfbvadGWy3bBXa13Io9w6SPnFLfyzY9e5k321+92+UN0VVfK?= =?us-ascii?q?LyKMoMnvKw4Q+MaicU7isYEzEjPNHJd8inztyV9cd8APWS2l7IwYyI9F6Hb3Ue?= =?us-ascii?q?94yFb8v/BS97Z+9Yk6+LRpycCqJajMN/hVrUhnDQWKCQlw8JUiHnR/TXhLYuAN?= =?us-ascii?q?MPfRYbgZjcf2puDvDKwX9Aea9PFFadbcPEHBndS/CiuARhNamgcBtSQaIRGY1/?= =?us-ascii?q?KfnK90U8mlr/Dj2k0x+1i+MgIGzLd16IeY4KqHuvHYYAbKwLgZXqjqWtnzoa4y?= =?us-ascii?q?u0OT4v0kkKABenBvbw2gCugdWdYXxn38wqAy0SIsD8TDEqri+PFZTXI5mSngm5?= =?us-ascii?q?RnEFUIAf4UGKeL/YBCnmc5h+PZN8cZcqZZmmqVEh6kCLACw2ax6ySLOGllng3O?= =?us-ascii?q?0xboTGOx9lD2qyF4QTHLz9j+jEVYTaW3Cl1UXyqyPk90qjWPMxT0tNDvo6Q68F?= =?us-ascii?q?k2MnD4tNKKjGahPrdXEtb+JNyaJCk4vlMXjJs/Rty1w48bAsa9IM0M8H5icvve?= =?us-ascii?q?9nmrnDFbr6dAnYre7dmf+u/LEnm4k62at7KNySheyng5oV4/7dSgOevV59GQQv?= =?us-ascii?q?So0GERTzxkuwbaWh64pbPao0oTOUyR30fBgJYKMc1B3XkkykHm4/AuT84p+wVa?= =?us-ascii?q?CInAfO8CpDD0ODbv2laQf9M3WTeY0ztLH1L6C0N0GK4i12LspMjJj2vf+0U0Ro?= =?us-ascii?q?lscEzqnRh3D549KU8t81UXzDQMHhUKaRCBFr6oHV7lLYwGVUcddRuHwKK2eqAt?= =?us-ascii?q?3U182rmv/vPcbfRgB6oRMfZQlgyOnFleGp8NtK0RXrJ9dEFH9K7WoAjiBJLrX/?= =?us-ascii?q?74mnosLfe1WNxV8dgFt3s+5QayXxug6JZZ4LkBlJ+FbbVEbobQvM9i80hr/zkP?= =?us-ascii?q?djZCgBJnlRO2TfgcpPz/4tjcqJen8eeuVL0jRuoN9Rg0Bnh+j4Pqj1A+pdHazP?= =?us-ascii?q?tTSorIhovh6g9NPmSKuIHA0xZmM+YOLJirfLl4/XUdOyceP24OPcaRa/Qk+y9i?= =?us-ascii?q?KinT6EBCAsICYtMYJsnNlRlPikL3XLFT98zbGkKXCopob8An9Xb3xyw18ZoyVe?= =?us-ascii?q?bg8jy2KYrc715TJfNDijtjlNbYqOgS2/rSBzAd4WOFZBht3iOC156NBu7s/eWW?= =?us-ascii?q?1t7UU0kJHigoXIpGOTWC+AOnRuuplJrzSQOb8NXzgI8keEKWWHOxgLwPsrxQHu?= =?us-ascii?q?5YliX7wj9eG5j6h/2Pqdqj9ndXtl1cHYZ37B3FBLtQPpVhNhTljcmnXE58CTXj?= =?us-ascii?q?eMvMbBohpPKWxvsQ4+V5L0b+apEUIhQYy7L97npZSRBuR6DyvlaYW+IRedRnRe?= =?us-ascii?q?jArn9L84JhK7UAMEKbpJP0sjdCsEo2DxMxaL8ssjxacVHDkxFXW6nupLENkRcT?= =?us-ascii?q?Udl9uU9IGGK/Jng+5ybZWqtJjKmdEvsV8i+cTqYWSUVnLjt+Qw+p2JVpY7apmP?= =?us-ascii?q?dHsmVaniNyvvcnyDlmRBqmti3qua0NxTwh+LaitDUConxJVOOenDnUCV9b1vQF?= =?us-ascii?q?kb8cC2r+6Vy7eHQDY5f94KJ8Jcj56Icv7HIxYRQlfy0bUuWtEC7wj6aSDYyJrt?= =?us-ascii?q?1QnhmNuN/BbbWrNygdKqw9yQ7/R3h6ygXenhFo8GsNQjm68NAkJIG9Ods4ySup?= =?us-ascii?q?GGjbck0M4qBIsMbqq14LTfU2ZkllwGp+08iLXCsNS9LTG2wtlAgrdX1EcI5f6R?= =?us-ascii?q?8dD6QogyiIsbNA/gwPZDfUD5mq+ojXncfTw3U9Ss1qxm3OrK2fmpwqyGFlm89z?= =?us-ascii?q?7iOWunQdaeLYU8FoAnXo2IZQ0+r+aOuxsuwdTotp1qihWucYMsa/4Wu2xIlqWk?= =?us-ascii?q?i9y7QRG1q5N+ECyanfUyehUmCYQuOLc26NnzklKELy4wenLkEvYsdQs0A9KvfC?= =?us-ascii?q?hoJblwD5U7N0RiWRpUfczGwnMOMaaxw5tZyiewwLUO4RffaTKfIpwP0kB1sGd2?= =?us-ascii?q?XJEjduC++qrV6tm5B2O2lh4UX/eunt7gHmP8eRGhYaFY7WtJhx9uKmRmiZI39v?= =?us-ascii?q?0AVyPFVo9+fYD1kxs+5cc5WSndjXnNl70/QKd/RqMS07pNETnJhv6Y+K38eWaR?= =?us-ascii?q?vR1Ir9JcnJoviEBP3S118ldX9cUroFeg71/IE6PtklW73PA7tWowkTCbI9QJw7?= =?us-ascii?q?OGf77Lt0Ix9rcg7NeLS0hdHnpvqMZptQvXDW9FwxLCDYux0N0fG0SAt7b5exh3?= =?us-ascii?q?rsPJ8wXDVBr8Z2ChtnGotPFNkMrw29A56bgKu7kcO++1tmu+8Wtqr9Ev7K28q9?= =?us-ascii?q?34VwR5hV+1eGPTfQBKluh0RqkP6ygvPe3ZXrDsPiY9wEXvBhQmHZcr/GApm/Kj?= =?us-ascii?q?WWN8PyY05G6b+c365nXRiKYSD5XraGtDe6O/l+5kU70IN4dvLJzDMx97HbxMfy?= =?us-ascii?q?Z2ZDqyekqX6GKoBS7ETOBePERBJUVfuF/3p5Ha0Nc4T76v0CMdo8z9iA+wNz9i?= =?us-ascii?q?hN0NOZI6i9qU/BwkZ7dZPdLEv01Cc1QI0KIBWkMUswmm/UsXXdDm5aLsijM8Vt?= =?us-ascii?q?h8yVDhP17UlrhW4tfnJBGnbvRdqJImgUxca+ZAyM9AJWANcPmOG5eVI4tqKsU+?= =?us-ascii?q?lnJI1Flv+xubUEj9lpMSfPS9ZePy7LMb92MSBdDuLVpFgnehQEqaQ6Wp8pZZiS?= =?us-ascii?q?J0MKKEKAxjnuwgvC0E30cdus2b2XICYX9HVI0bbF0TlKpwmktveVmMrjUKrWbJ?= =?us-ascii?q?vuRv7dLDIlVi2GRTQ1CUup+02ru/kDvPWDOmofv1YUYj6SCA4Uu6BvotjQDnPJ?= =?us-ascii?q?le1lYpIKmOiQWzrsRy1giKoyGiFLuFiDQ/UZDgbWdX7hj3RYuAG5OP9M+Wjqb6?= =?us-ascii?q?aZxqpIQeAWBJVDcuGBSdvCZf9ePysolikeOOukfd3cqrE50kjSTWsYCKnF71ue?= =?us-ascii?q?Q1STQvOCxjLnR4IVv5I7uiAw4NLfgjd3E7jUP7aYvzOu6YC4jCOEtuDfVWQgeF?= =?us-ascii?q?I1j/wYAGmAwRhAL2cEB8sTuE7zXq7TL3pLgWkkjeNoxg8kZBV4Unoo1GZf2vm6?= =?us-ascii?q?BJ53U1kR2U+nRrUkcUp4ATUrtRuG6wvzbNgCkcXeQ2tX8LwcD4EaKa97u8HsJK?= =?us-ascii?q?IMzaNxj3pdqysgvnDYVgtQ?= X-IPAS-Result: =?us-ascii?q?A2F7AgBSKxJZ/wHyM5BdGwEBAQMBAQEJAQEBFgEBAQMBAQE?= =?us-ascii?q?JAQEBgwEpgW6OdJBicpcIKIpyVwEBAQEBAQEBAgECaCiCMyKCQQYBAiRVAwkBA?= =?us-ascii?q?RcIKQgDAVMZBYhQgUwEtHM6JgKKe4g9gmeLAAWJPYZlgQFYjAqKT4hMggKJFQy?= =?us-ascii?q?GRpRAWIEKTyEVhHZEHIFmc4h0AQEB?= Received: from unknown (HELO tarius.tycho.ncsc.mil) ([144.51.242.1]) by emsm-gh1-uea11.nsa.gov with ESMTP; 09 May 2017 20:52:12 +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 v49Kq9UH005798; Tue, 9 May 2017 16:52: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 v49KpISJ149473 for ; Tue, 9 May 2017 16:51:18 -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 v49KpH4u005429 for ; Tue, 9 May 2017 16:51:17 -0400 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A1B5AgDVKhJZf4GlL8FdHAEBBAEBCgEBgyyCF450kGJylw+GJAKFRAECAQEBAQECEwEBIV2FFgMDJ1IQGAgxVxmIVYFQtHI6inABAQgoiD2CZ4sABYk9hmWBAViMCopPiEyCAokhhkaUQFaBC08hFYU6HIFmPTaIdAEBAQ X-IPAS-Result: A1B5AgDVKhJZf4GlL8FdHAEBBAEBCgEBgyyCF450kGJylw+GJAKFRAECAQEBAQECEwEBIV2FFgMDJ1IQGAgxVxmIVYFQtHI6inABAQgoiD2CZ4sABYk9hmWBAViMCopPiEyCAokhhkaUQFaBC08hFYU6HIFmPTaIdAEBAQ X-IronPort-AV: E=Sophos;i="5.38,316,1491278400"; d="scan'208";a="6046339" Received: from emsm-gh1-uea11.corp.nsa.gov (HELO emsm-gh1-uea11.nsa.gov) ([10.208.41.37]) by goalie.tycho.ncsc.mil with ESMTP; 09 May 2017 16:51:17 -0400 IronPort-PHdr: =?us-ascii?q?9a23=3ArvNrrRO737yUEKTNVKIl6mtUPXoX/o7sNwtQ0KIM?= =?us-ascii?q?zox0LfT8rarrMEGX3/hxlliBBdydsKMbzbKP+Pm6CSQp2tWoiDg6aptCVhsI24?= =?us-ascii?q?09vjcLJ4q7M3D9N+PgdCcgHc5PBxdP9nC/NlVJSo6lPwWB6nK94iQPFRrhKAF7?= =?us-ascii?q?Ovr6GpLIj8Swyuu+54Dfbx9GiTe5Y75+Ngm6oRjeusULn4dvKbs6xwfUrHdPZ+?= =?us-ascii?q?lY335jK0iJnxb76Mew/Zpj/DpVtvk86cNOUrj0crohQ7BAAzsoL2465MvwtRne?= =?us-ascii?q?VgSP/WcTUn8XkhVTHQfI6gzxU4rrvSv7sup93zSaPdHzQLspVzmu87tnRRn1gy?= =?us-ascii?q?ocKTU37H/YhdBxjKJDoRKuuRp/w5LPYIqIMPZyZ77Rcc8GSWZEWMtaSi5PDZ6m?= =?us-ascii?q?b4YXD+QPI/tWoYf+qVUJrxS+CxKhCP/zxjJSmnP7x7E23/gnHArb3AIgBdUOsH?= =?us-ascii?q?HModv7LqgSV/2+wq3VzTXZYPNZxzH96JPVeR0mvP6DR7RwccvPxkkrFQPIlVCQ?= =?us-ascii?q?ppLhPzORzOsNtW+b7uV6We2zjG4nrhh8rz6yzckijYnJg5gaylHC9ShhwYY6Ps?= =?us-ascii?q?O3SEhmbt68F5tQrT2aO5FrTcw8XWFkoD06xaEctp69ZiQKzI8oyhjCYPKEa4iF?= =?us-ascii?q?+g/vWeKfLDtii39oeqiziwuz/EWg0OHwS9e43VJMoyFYiNfDrGoN2AbW6sWfSv?= =?us-ascii?q?ty4EOh2TGX2gDW9O5EJUQ0mrDdK54mzb88jIYcsUPZEi/3nEX6lK6WdkM69ei0?= =?us-ascii?q?8+nrf7Hrq5GGO4J7iAzyKLkil82/DOgiLwQCQWyW9fy51LL5/E35RLtKjucxkq?= =?us-ascii?q?ncqJ3VON4Upqi4AwBL1oYj6Q2yDzK439QcmXkINlRFeBWIjoTzJ17OJ/X4Ae+l?= =?us-ascii?q?g1uwiDdr2+zGPrr5D5XWMHfDlLbhfbBg609T0wcz0dBe6I5UCrEGOv7zXFTxu8?= =?us-ascii?q?bCAh82NAy03bWvNNIozY4aWGSSEoeFIajSthmO/etpLO6SN6EPvzOoB/Ejr9zz?= =?us-ascii?q?l3A0n0RVKaWg25oabHKQG/liJ0yfZmqqidAERzRZ9jEiRfDn3QXRGQVYYGy/Cu?= =?us-ascii?q?dlvmk2?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0HrAQBSKxJZf4GlL8FdHAEBBAEBCgEBF?= =?us-ascii?q?wEBBAEBCgEBgwGCF450kGJylw+GJAKFRAEBAQEBAQEBAgECEAEBIV2CMyIBgkA?= =?us-ascii?q?DAydSEBgIMVcZiFWBULRzOopxAQEIKIg9gmeLAAWJPYZlgQFYjAqKT4hMggKJI?= =?us-ascii?q?YZGlEBWgQxPIRWFOhyBZj02iHQBAQE?= X-IPAS-Result: =?us-ascii?q?A0HrAQBSKxJZf4GlL8FdHAEBBAEBCgEBFwEBBAEBCgEBgwG?= =?us-ascii?q?CF450kGJylw+GJAKFRAEBAQEBAQEBAgECEAEBIV2CMyIBgkADAydSEBgIMVcZi?= =?us-ascii?q?FWBULRzOopxAQEIKIg9gmeLAAWJPYZlgQFYjAqKT4hMggKJIYZGlEBWgQxPIRW?= =?us-ascii?q?FOhyBZj02iHQBAQE?= X-IronPort-AV: E=Sophos;i="5.38,316,1491264000"; d="scan'208";a="5619500" X-IronPort-Outbreak-Status: No, level 0, Unknown - Unknown Received: from mail-il-dmz.mellanox.com (HELO mellanox.co.il) ([193.47.165.129]) by emsm-gh1-uea11.nsa.gov with ESMTP; 09 May 2017 20:51:03 +0000 Received: from Internal Mail-Server by MTLPINE1 (envelope-from danielj@mellanox.com) with ESMTPS (AES256-SHA encrypted); 9 May 2017 23:50:57 +0300 Received: from x-vnc01.mtx.labs.mlnx. (x-vnc01.mtx.labs.mlnx [10.12.150.16]) by labmailer.mlnx (8.13.8/8.13.8) with ESMTP id v49Koor4031538; Tue, 9 May 2017 23:50:56 +0300 From: Dan Jurgens To: selinux@tycho.nsa.gov Subject: [PATCH 4/9] checkpolicy: Add support for ibendportcon labels Date: Tue, 9 May 2017 23:50:37 +0300 Message-Id: <1494363042-121766-5-git-send-email-danielj@mellanox.com> X-Mailer: git-send-email 1.7.1 In-Reply-To: <1494363042-121766-1-git-send-email-danielj@mellanox.com> References: <1494363042-121766-1-git-send-email-danielj@mellanox.com> 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: Errors-To: selinux-bounces@tycho.nsa.gov Sender: "Selinux" X-Virus-Scanned: ClamAV using ClamSMTP From: Daniel Jurgens Add checkpolicy support for scanning and parsing ibendportcon labels. Also create a new ocontext for IB end ports. Signed-off-by: Daniel Jurgens --- checkpolicy/policy_define.c | 70 ++++++++++++++++++++++++++++ checkpolicy/policy_define.h | 1 + checkpolicy/policy_parse.y | 14 +++++- checkpolicy/policy_scan.l | 2 + libsepol/include/sepol/policydb/policydb.h | 7 ++- 5 files changed, 91 insertions(+), 3 deletions(-) diff --git a/checkpolicy/policy_define.c b/checkpolicy/policy_define.c index 6f92bc5..2926f18 100644 --- a/checkpolicy/policy_define.c +++ b/checkpolicy/policy_define.c @@ -5085,6 +5085,76 @@ out: return rc; } +int define_ibendport_context(unsigned int port) +{ + ocontext_t *newc, *c, *l, *head; + char *id; + int rc = 0; + + if (policydbp->target_platform != SEPOL_TARGET_SELINUX) { + yyerror("ibendportcon not supported for target"); + return -1; + } + + if (pass == 1) { + id = (char *)queue_remove(id_queue); + free(id); + parse_security_context(NULL); + return 0; + } + + newc = malloc(sizeof(*newc)); + if (!newc) { + yyerror("out of memory"); + return -1; + } + memset(newc, 0, sizeof(*newc)); + + newc->u.ibendport.dev_name = queue_remove(id_queue); + if (!newc->u.ibendport.dev_name) { + yyerror("failed to read subnet management interface device name."); + rc = -1; + goto out; + } + + newc->u.ibendport.port = port; + + if (parse_security_context(&newc->context[0])) { + free(newc); + return -1; + } + + /* Preserve the matching order specified in the configuration. */ + head = policydbp->ocontexts[OCON_IBENDPORT]; + for (l = NULL, c = head; c; l = c, c = c->next) { + unsigned int port2; + + port2 = c->u.ibendport.port; + + if (port == port2 && + !strncmp(c->u.ibendport.dev_name, + newc->u.ibendport.dev_name, + 64)) { + yyerror2("duplicate ibendportcon entry for %s port %u", + newc->u.ibendport.dev_name, port); + rc = -1; + goto out; + } + } + + if (l) + l->next = newc; + else + policydbp->ocontexts[OCON_IBENDPORT] = newc; + + return 0; + +out: + free(newc->u.ibendport.dev_name); + free(newc); + return rc; +} + int define_netif_context(void) { ocontext_t *newc, *c, *head; diff --git a/checkpolicy/policy_define.h b/checkpolicy/policy_define.h index b019b1a..3282aed 100644 --- a/checkpolicy/policy_define.h +++ b/checkpolicy/policy_define.h @@ -44,6 +44,7 @@ int define_netif_context(void); int define_permissive(void); int define_polcap(void); int define_ibpkey_context(unsigned int low, unsigned int high); +int define_ibendport_context(unsigned int port); int define_port_context(unsigned int low, unsigned int high); int define_pirq_context(unsigned int pirq); int define_iomem_context(uint64_t low, uint64_t high); diff --git a/checkpolicy/policy_parse.y b/checkpolicy/policy_parse.y index f50eab1..35b7a33 100644 --- a/checkpolicy/policy_parse.y +++ b/checkpolicy/policy_parse.y @@ -136,6 +136,7 @@ typedef int (* require_func_t)(int pass); %token SAMEUSER %token FSCON PORTCON NETIFCON NODECON %token IBPKEYCON +%token IBENDPORTCON %token PIRQCON IOMEMCON IOPORTCON PCIDEVICECON DEVICETREECON %token FSUSEXATTR FSUSETASK FSUSETRANS %token GENFSCON @@ -171,7 +172,7 @@ base_policy : { if (define_policy(pass, 0) == -1) return -1; } opt_default_rules opt_mls te_rbac users opt_constraints { if (pass == 1) { if (policydb_index_bools(policydbp)) return -1;} else if (pass == 2) { if (policydb_index_others(NULL, policydbp, 0)) return -1;}} - initial_sid_contexts opt_fs_contexts opt_fs_uses opt_genfs_contexts net_contexts opt_dev_contexts opt_ibpkey_contexts + initial_sid_contexts opt_fs_contexts opt_fs_uses opt_genfs_contexts net_contexts opt_dev_contexts opt_ibpkey_contexts opt_ibendport_contexts ; classes : class_def | classes class_def @@ -697,7 +698,7 @@ fs_contexts : fs_context_def fs_context_def : FSCON number number security_context_def security_context_def {if (define_fs_context($2,$3)) return -1;} ; -net_contexts : opt_port_contexts opt_netif_contexts opt_node_contexts +net_contexts : opt_port_contexts opt_netif_contexts opt_node_contexts ; opt_port_contexts : port_contexts | @@ -721,6 +722,15 @@ ibpkey_context_def : IBPKEYCON ipv6_addr number security_context_def | IBPKEYCON ipv6_addr number '-' number security_context_def {if (define_ibpkey_context($3,$5)) return -1;} ; +opt_ibendport_contexts : ibendport_contexts + | + ; +ibendport_contexts : ibendport_context_def + | ibendport_contexts ibendport_context_def + ; +ibendport_context_def : IBENDPORTCON identifier number security_context_def + {if (define_ibendport_context($3)) return -1;} + ; opt_netif_contexts : netif_contexts | ; diff --git a/checkpolicy/policy_scan.l b/checkpolicy/policy_scan.l index 07352cb..f38dd22 100644 --- a/checkpolicy/policy_scan.l +++ b/checkpolicy/policy_scan.l @@ -184,6 +184,8 @@ fscon | FSCON { return(FSCON);} ibpkeycon | IBPKEYCON { return(IBPKEYCON);} +ibendportcon | +IBENDPORTCON { return(IBENDPORTCON);} portcon | PORTCON { return(PORTCON);} netifcon | diff --git a/libsepol/include/sepol/policydb/policydb.h b/libsepol/include/sepol/policydb/policydb.h index 5ecc623..326a7bb 100644 --- a/libsepol/include/sepol/policydb/policydb.h +++ b/libsepol/include/sepol/policydb/policydb.h @@ -360,6 +360,10 @@ typedef struct ocontext { uint16_t low_pkey; uint16_t high_pkey; } ibpkey; + struct { + char *dev_name; + uint8_t port; + } ibendport; } u; union { uint32_t sclass; /* security class for genfs */ @@ -396,6 +400,7 @@ typedef struct genfs { #define OCON_FSUSE 5 /* fs_use */ #define OCON_NODE6 6 /* IPv6 nodes */ #define OCON_IBPKEY 7 /* Infiniband PKEY */ +#define OCON_IBENDPORT 8 /* Infiniband End Port */ /* object context array indices for Xen */ #define OCON_XEN_ISID 0 /* initial SIDs */ @@ -406,7 +411,7 @@ typedef struct genfs { #define OCON_XEN_DEVICETREE 5 /* device tree node */ /* OCON_NUM needs to be the largest index in any platform's ocontext array */ -#define OCON_NUM 8 +#define OCON_NUM 9 /* section: module information */