From patchwork Wed Apr 12 13:41:00 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Christian_G=C3=B6ttsche?= X-Patchwork-Id: 9677517 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 30C5260383 for ; Wed, 12 Apr 2017 13:41:33 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 2192B285F2 for ; Wed, 12 Apr 2017 13:41:33 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 142672867B; Wed, 12 Apr 2017 13:41:33 +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=-3.6 required=2.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, RCVD_IN_DNSWL_MED, RCVD_IN_SORBS_SPAM, T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from emsm-gh1-uea11.nsa.gov (emsm-gh1-uea11.nsa.gov [8.44.101.9]) (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 E2C5F285F2 for ; Wed, 12 Apr 2017 13:41:31 +0000 (UTC) X-IronPort-AV: E=Sophos;i="5.37,190,1488844800"; d="scan'208";a="4824475" IronPort-PHdr: =?us-ascii?q?9a23=3AovhHaxBFPofKkqjPzKAmUyQJP3N1i/DPJgcQr6Af?= =?us-ascii?q?oPdwSPr5o8qwAkXT6L1XgUPTWs2DsrQf2rSQ6v6rBzFIyK3CmUhKSIZLWR4BhJ?= =?us-ascii?q?detC0bK+nBN3fGKuX3ZTcxBsVIWQwt1Xi6NU9IBJS2PAWK8TW94jEIBxrwKxd+?= =?us-ascii?q?KPjrFY7OlcS30P2594HObwlSijewZbJ/IA+roQjQucUbgItvIbstxxXUpXdFZ/?= =?us-ascii?q?5Yzn5yK1KJmBb86Maw/Jp9/ClVpvks6c1OX7jkcqohVbBXAygoPG4z5M3wqBnM?= =?us-ascii?q?VhCP6WcGUmUXiRVHHQ7I5wznU5jrsyv6su192DSGPcDzULs5Vyiu47ttRRT1hi?= =?us-ascii?q?gHLTo5+3zJhMJ2gqxQvRatqwViz4LIZY2YMud1cKHActMAXWdPXshfWS9cDI2i?= =?us-ascii?q?dYQPF+gMMftWoobhqFUBswC+CBKwBOz00DJEmmP60bE43uknDArI3BYgH9ULsH?= =?us-ascii?q?nMstj1NL0SUeGuzKnUzDXMdfVW1i/85pDObhAhveqMUq5wccXP1EIiEB/KjlqR?= =?us-ascii?q?qIziOTOayP8NvnOU7+pnUuKvhGonpB90oje1x8csjpPFiZ4SylDB7Ch0xps+K9?= =?us-ascii?q?6gSENjfNKpH5RduzuaOodrWM8uXW5ltDggxrEboZK2ficHxI46yxLBa/GLaYuF?= =?us-ascii?q?7gz5WOuQIDp1gm9udqiliBao60egz/XxVsyz0FlXsCVIisLMtnUR1xzL7ciHV+?= =?us-ascii?q?d98l+h2TmR0wDT7flJIVwumqrBKp4h36UwmoAPsUXDAiD2mEL2gLWQdko44ein?= =?us-ascii?q?9/7rYrDnpp+YL4N0iwf+PboymsGnHOg1PQcDU3Kb9OihzrHv40L0TKtQgvEriq?= =?us-ascii?q?XZtYrVJcUfpq63GQ9V1YMj5g6kDzi41NQYnH8HLE9KeR6elIfpPEzOIPbkAvih?= =?us-ascii?q?mFShiytrxvDaMb3hBZXBNH7DkKz7crpn5E5czxQzwchF551IErEBPO7zWkjpud?= =?us-ascii?q?zaCR85NRa7w/rnCNpn0IMTQmCPAqifMKPXq1CI/f4vLPeWZI8Oojr9LOIl5/H2?= =?us-ascii?q?h38jhVAdZbWp3YcQaH2gHPRmIV+WbmbvgtcaFmcKuAs+TPLxhV2MVT5TenmzUL?= =?us-ascii?q?kh5jE9FIKmEJ3PRoe3gLyOxC27BIFZZnhaClCQFnflb52EVOkXZy2MJM9hkyAE?= =?us-ascii?q?Vb+6Ro8gyx6hqhH1x6BgLurO9S0SrYjj28Rt5+3PiREy8iR5ANma02GLSWF7g3?= =?us-ascii?q?0HRzs33K1ku0Ny1E2D0a9ij/xfD9xT6OtDUh0mOp7E0+x6F9fyVxrccdeVUlmm?= =?us-ascii?q?WM6rDi02TtI039ABeV19G8m4ghDFwSWqH6cfl6aXC5ws7qLcw3/xKt58y3bAyK?= =?us-ascii?q?kukV0mTdVKNWK4mq5/7QjSCpXOk0WBiamqc6Ec0zTM9GeH1mWOu05ZXBR3UaXf?= =?us-ascii?q?UnAVflHWosjh5kPeU7+uDqwqMwtAyM6FLKtHcdjpjVFfSPfiPtTSeWSxlH2qBR?= =?us-ascii?q?aLx7OMcpTld38b3CrDFEgOixoT8mqeNQgiGiehpHrTAyJ2FV31eUPs8PJ+pWij?= =?us-ascii?q?TkAu1QGKblZh16Kx+hEPmfOTVekf3rUeuCcusz90Bkqy38rKC9qcoApsZKtdYd?= =?us-ascii?q?I54FdCy23ZrRdwPpK+IK9/gV4eaR54v1v01xVwCIVPj9QlrG8wwAp1M6KY30tL?= =?us-ascii?q?dymE0pDoJr3XNm7y8Qiha67MwF7e1sqZ+qYU6PkjrlXjpACpGlM583RpyNlZyX?= =?us-ascii?q?yc5o/FDAAKS5L+Tl439wRmp7HdeiQ95Jnb1X5rMampqTLC2MgmBOgiyha9Zdtf?= =?us-ascii?q?N7mEFADqGc0AG8euMPAqm0Subh8cJu9d6bQ0P8K4ePucw6OkJvpvnDe8gWRA+o?= =?us-ascii?q?B93VqG9zBgRe7Qw5YF3/aY0xObWDjmiFeurNv3mZxEZDEVBWe/0jTrBI9Paa10?= =?us-ascii?q?YYYLCH2hL9exxtpgm57nQ2RY+0K7B1MaxM+pfgKfb0fz3Q1K0kQXumCnlDCjzz?= =?us-ascii?q?xylDEooK+f0zbIw+j4choIJHJLTnF4jVjwOYi0k8waXE+wYgknjhSl4Vr6yLZB?= =?us-ascii?q?pKRkNGTTX1lHfzLtIGF/V6u8rL2CY9RA6JkwqyVYTPy8YUyGSr76uxYazz7sEH?= =?us-ascii?q?ZfxD8hczGnoYn2nxt/iG2BNnlzt2bZddt2xRjB+NzWXeRR0SYeRClklTnXAUCx?= =?us-ascii?q?P9+o/dWQk5fMrPu+Wnm7WZJNaynrypmMtCyh5W1lGRe/hey8msX7EQgm1i/2z8?= =?us-ascii?q?dqVSTUoxbgZYnrzb62Pv5nfklvAl/85NF3GoV/kos2np4Qw38aio+S/Xodnmf5?= =?us-ascii?q?Kc9b1r7mbHoRWT4LxMbY4Azk2E14MnKF3pn5WWuZwstgYdm6f2wX1zkm78BSCa?= =?us-ascii?q?eU6r1EkjduolaiqwLef+R9lC8HyfQy8H4an/0JuA01wyWHBbASGU1YMjL2lxuU?= =?us-ascii?q?6NC/or5aZH2ycbesz0pyh9ehDKuNogtEQnb2Zo8iHTNs7sV4KF/MyGf86pzgeN?= =?us-ascii?q?XKd90frAabkxDEj+hJL5IxkOEHhS97NWL7un0q1/Q3jRpw0pGmpIKHMXli/Lql?= =?us-ascii?q?Ah5EMT34f8AT9S/rjaZFhcuW3J6gHpN6GjUNQpToUeikEDUItfToLwyOCiEzqm?= =?us-ascii?q?+HGbrDGg+S8F9moGjSE5CvKX6XPGMWzdN+RBaDPkxSmx0UXC4kkZ4jDQCm3tfh?= =?us-ascii?q?cEBk5jAL+lH3tBVMyuVyNxnwTGjTvgGoZSkoSJKHNhpZ8hlC51vJMcyZ9u9zAS?= =?us-ascii?q?dY8YC6oQyTLGyUegRIAXsPWkOaG1DpJqOu6sXY8+iEGuq+KOPDYa2UpuxDU/eF?= =?us-ascii?q?3o6g0op6/zeML8mPMGNtD/sh1kpER3B5FNzTmy8TRCwPiyLNc8mbqQ+/+ix3qs?= =?us-ascii?q?Cw7u/mWAfo5YuBBbtdL8lv+wy2gaeEMu6fmjx1KTBG2ZMQ3XXI0qQQ3EYOiyFy?= =?us-ascii?q?cDmgCboAujTLTKLMna9XCgUWay1tO8RV6KI8xBNCOdbBitPy1L53kOI6C0tfWV?= =?us-ascii?q?zmgMGpatQAI3uhO1PfGEaLKLOGKCXWzMHxe6yxUqBfjONOuBGqvjabCUDjNCyZ?= =?us-ascii?q?lzb1TxCvLf1MjCaDMRxEpY6ybw1gCWfmTNPpcBG7NsF4jSEuy70umnzKLXIcMS?= =?us-ascii?q?R7c05VtL2c9y1Zju96G2Nb6nplKumFlj2D4ObEL5Yaq/xrAj57l+hC+nQ116NV?= =?us-ascii?q?7D1YRPxygCbSoMRurE+7nemU0DVnVgZOqjFQhI+Qp0ptJaDZ+oNHWXbe8xIH9X?= =?us-ascii?q?+QBAgSp9t5Ft3vvLhdyt7VlK3pMDdC68nZ/cUdB8jOM8KHLHQhMRvvGDHOCgsK?= =?us-ascii?q?UT+rOnvbh0BHl/GS7HKVpIAgqpfwgJoOVqNbVFstG/wBEUtpG9gCIJZsXjM4ir?= =?us-ascii?q?6XltUI6mSioxXLX8VVoJTHVvOUAfXyJzeUlqVLZhsSwbPlNoQfLIP61FZ+allh?= =?us-ascii?q?m4TKHVDcXddXoi1udgU0ullC8GBiTm0v3ELochii4H4cFf6zmB47kRZxbvo2+z?= =?us-ascii?q?ft+Vg3IEDGpCwqkEk+gd/lmyyecCbtLKesWoFbEzD7t0crPZPlXQl4dgqynVR6?= =?us-ascii?q?OzfCQrJelbpgdWRwhw/btppDA/lcTbdLYBUI3/GYe+0o0UhAqiWg3UJH+ezFCZ?= =?us-ascii?q?54mAswdp6trmxP2wR4Y94vIqzfOqlJw0NMiaKJuy+nyvo+wBQCJ0oX9mOdZjII?= =?us-ascii?q?slQSNrY6Pyqo4vBs6QualjtFZmcDTf4qr+lp9kM6IOSA0zjv07hYKkCyNuyTNa?= =?us-ascii?q?WZtHbclcSQWFM/ylsIl1VZ/bhxycojaVSbV1sxw7SLDRQGKcrCJBpOYMpT7njc?= =?us-ascii?q?YCGOsevVwZJvIYq8FvrkTemQu6YImkikBhomH5wQ7sQdGZmhyFzXIt35LL4E1B?= =?us-ascii?q?ot/x/mK0+fDPRTfxKKniwHrN+jw59qx4ldJy0dAGVnPSWx+LnXuhcggOCfU9cu?= =?us-ascii?q?fncaQowEO2orV82hhSFWpXtADCOt3eIH0wWC9CXzpifNDDnmddVvfvOUZQ5qCN?= =?us-ascii?q?6s4zUz6rS2iVnU8pTeIGH2L9JitcHT6ekCvZaIF+tUTaVhs0fbg4RYQ3uqU3TR?= =?us-ascii?q?Ht6zJpnwbJIhbdPyCnanSFC/jCg1T8jpNta3MqeImR3oRZpTsISDxzAsK8u9Fj?= =?us-ascii?q?AYGxdtqOAO/75zZQoGY5UnexHorBg+O7a5IAiGztWkW3ytJidOT/lD0eW6YKRa?= =?us-ascii?q?wDcwYe+/z3sgSI06w/Ss/E4TWp4KlBDexPekZ4lYSyTzHGJSexnXryoji2dhLv?= =?us-ascii?q?oywvs4wB7QslkcKTCKe/ZvaGxYv9ExHlySIXJuCmUkXVOci5TM4hK01bAI4yRd?= =?us-ascii?q?h8pU0fFCsHXmop/fYTesWKu3qZXVsystdsUpo6xxMIP5OcSKrpXekSLDTJPIqA?= =?us-ascii?q?2KTDa6F+ZGmthXOC9YT+NIlnsjOcwaoodB6E0xV8k4J7xTCKkjuLGqaTx4DSEM?= =?us-ascii?q?1y8VTYWA0yIegu2kwbvVig+QcIg+MBwDqJhNmN8dUy9qbSwAvKCjUoXXl2mDSm?= =?us-ascii?q?gNOgge9h9D5AMamY92Z+zl7pfIQIVKyzFIv/J+SjHLGYVw91vnVmGWhkD1R+6/?= =?us-ascii?q?nOyvxg9d1u/j0scFVx5lEkhS3fxWl0syJLFwMakQsZbAsiWUekPioGLt1OymKU?= =?us-ascii?q?FLyc3Sdl33EIrFtW34Ui0H4XMaXJJBxmvDGJoViAd2dKErpFBQL4+8YUb++yYo?= =?us-ascii?q?x4J3ELmkTcqr3UoqrW4aRye2FNpME/1psFDNVzJ5eJ2ktJLlO5FWQm9R5pKdsU?= =?us-ascii?q?tZn1txPC6505ZcLNtN4jEUVjhVvTqdpMeySNFE2cJuFZ8DOM1/u3DmF65fJJiR?= =?us-ascii?q?uWc5uqLxxX/d+jA8tli6xDGyG6+3T+JZ42MeFR8zJ2SbsEUvCfUj8nvK+FDXrl?= =?us-ascii?q?905/tbBqSIjUhprjdxBIxBBjZI1XCgLlR8VnpGvv5bKKvLbcNTXeM+ZRi1Oxwx?= =?us-ascii?q?DfQmxVCG/VlonXflZCx/rhNa+yfZXwYuTykUjLDtmTkQqsy8PD8aTJVIbS4/YC?= =?us-ascii?q?jZMQKbnjtXvA1ea0FsVJAVGNFF+6sU3YFM5MrNVV6sKT0ZXBxlLg83y+BflVNF?= =?us-ascii?q?sEmCeiDQFguodffOsh1rZsidtsipI+rl/A1fkIPorPg497kfR32hgQCtXdfer4?= =?us-ascii?q?rnu92WqkeOcbz3P/e6YXDfUDjGlQqwiqs8D5nW4yjTNxJWK5lgxno+e5fhDXPE?= =?us-ascii?q?MA9bKK0FP0pbTb51adFYreBAfcNkf7wJ+aB1DBKdWhzvAJCvrOVBLlvLRzTeKD?= =?us-ascii?q?uO//eiro3N9rzSV/LgZtCSyHnaWa53OIl16SXjEbfwzYBe4lb22utq9k5iUlfG?= =?us-ascii?q?PTyOoMjjKw8W6sSvbVftvposHTzKGphwi2btyltGd8UJXy2g6I4Yx49B6HbsVe?= =?us-ascii?q?J41VD+sPdM+LZ56Yk4+axpxNywJafVN/RVr1FrDQSTBgp36JohGm5/SH5NYuUJ?= =?us-ascii?q?MvfeYbwZjdzyq+DwD6EX8AaV+/BDZtTaO0HMgdK/CjaBSRxegAgOtzgaLheG1/?= =?us-ascii?q?Gfn694U8GlpfL22kg1+VixMgYGzKxx5YeD4qeIuPXXYAXPwrcZQaXqW8fzrqg2?= =?us-ascii?q?u0yI+/0klbkOemhrbA27CuQdUdQdxmj4x6Aw0S0sC9/DH67n+PNbUnI2hDbgm5?= =?us-ascii?q?RjEFUKBvMbB6CE8J9Ynmgmh+zZLcEZfbpammmRDxKkFKENyWKz4SuNPGZlmg3O?= =?us-ascii?q?0w33QW6r7l/5tzV4QSzXz9fniEVVSKK6BUJPXyqtJU94sS+APAvyu9rxoqQ59k?= =?us-ascii?q?Y2MnbrtNiVjmuuJKtXH9HjJNybOSQ0pkgYjJs/Rty13oAUBMSyLcwN8H5kaPve?= =?us-ascii?q?8GSrnzVHo6hZm4rU+tuV9enPHXm8k62arK2AxD9Fyng5uVE/7s6vNvTV6tKXXf?= =?us-ascii?q?unzGcRQD15uwfbWB61sLPbpUgOOUOXyEfLhJAKPtZB0Hk+0kHr/+kjQNQ29AlE?= =?us-ascii?q?F4bAYf0CpSrpNzvv3Vafec83WTWC0ztKBFL6D0N0GK8m2GL/pMjJj2vf+0U0Ro?= =?us-ascii?q?lscEzqnRl3D4I+KUIx51gY3DEOEQ0MaR+BCrGnG1jlLIUDVUgZahSHx6K2eqEp?= =?us-ascii?q?0k1v2rmv/vPcbfRgB6oRMfZQlgqOnENeGp8WqqAeTqxzdEJa9K7NvAfiE5LnX/?= =?us-ascii?q?/klXUuKfK1XtpW8ccDt3st+gy/XQav6Y9f77YHj5CFbrVEboLSvM9m4Edo+yUP?= =?us-ascii?q?ezdWgBdlkRO2S+8cq/744tTBtpqn9PquXr43R+oL7xg0G3h+j5zojVAhoNHX0v?= =?us-ascii?q?xRSojLhoX/7g9NOX+KuIDV0xVmL+oBNZ6rdq5693obPygeO24OPd2OZvk94i5i?= =?us-ascii?q?Ki/c6EBZD8MXe9wYINTClhxOhk3uQrFT+dLRGkWEBIdra8Ao8233xSgu/ps9Se?= =?us-ascii?q?bh5iW5JZLe71FRJ/NMljhslNbZqecJxvrdFTYY7mOEaxhvxSOC0YOCB+z3/eWW?= =?us-ascii?q?x9HeT0kGETIuU4dBODqC/hSqRvKvm5X1TgyU6sHygJUkdEKTX3Cxh7oKsqJNEe?= =?us-ascii?q?5GlyX60SNTFpjviPKJr9Ws6GVWtlpdEIZw9xHFG7tQPo99ORvmksmnXE98BjHw?= =?us-ascii?q?eMvMbBohpPKWxvsQ4+V5L0b+eZUbLQwAy73g73paUBBjR6P3vlaWXOIReMFpSO?= =?us-ascii?q?jeoXBP9IJsMakPM0aBpJbytDdHtEg2ABM1aL83tjFaeVPBnBdLVKbouL4NkQ8c?= =?us-ascii?q?Ud9luUBSGWK/In8+5yHdWaRTkqaRFOQf8i+PQawWT0VoLiR+Tgu62Jpwfbupgf?= =?us-ascii?q?dHsmRBkiNmvvcq1z1mRB2huSzjvK8N3Swv+Ku4tTobo3BFSPuRkzvQA1VZ0PsK?= =?us-ascii?q?lbscC2rl6VGkZnkDbZf94L5jJcv67okt+XU/YRIkfy0dRuStECTwgqyHA4CVt9?= =?us-ascii?q?JcnhGNst3UbbCvNSgSKqg9yRX7Snhyzgfehw1o/HIWTDuv6tEkJYO9Odsqxyez?= =?us-ascii?q?FmjbcUwD4qVXv8frsl4LVuQ2Y0t7wGp/ysiHWjENRMvXFmY3iQgkaWNEfIhf5h?= =?us-ascii?q?8aE6konyuHv6hH/gESezfUEYWl95LOncfJx3kyV9NqyX/XpqGfgJMlzmFlkctu?= =?us-ascii?q?7iGSoHQSa/DYU8h0D3jyyIdQ0+r+au6psuAaVYRmybOhUOQYPsmk42u2141gWl?= =?us-ascii?q?W5ybQGA1q5LOgDy6/ZUyi7R22YV+CLfnOCnjkjNE79+wWoIkcxaMhUs083KvHC?= =?us-ascii?q?iYJElw39TbN0QT2dpVDfzGwkP+IVaQY2uIO8dgwRS+4RYemcKvQ0zP04FlQMc2?= =?us-ascii?q?fDHTFqBO+urV6tgI97Nm1i4UX6YeXt6gfmMN+TGhkYD4HXtZtx+f2mRmKbJ3Bs?= =?us-ascii?q?1hpyPFN79+3HDVQ+qvdcc4qNndjXn9l7ze8Fd/J2PC0hu94choFj5peQ0MuQdx?= =?us-ascii?q?He0IryL8nPoveEG/3f01gqemZCX7ocYAP15IY6PtkiVr3RB7RZvhMcBa4kT5wn?= =?us-ascii?q?LWvx8r97LB9reA7LeLu0mtXqpv6MZpZMvHDZ8FQwLDvHth0Yzvy0ShB7b4y0h3?= =?us-ascii?q?rsPZ88XDVBr8diChF+BotAB9sArxa7A56TgKy7hcG++0d7u+8Sr6X9EfHL1NW8?= =?us-ascii?q?34V0QZda/0iLMyjLCKlsmERlgfy4gu3c3ZnpFcPiZdQEWfB1Q27dcL/GH5mwJS?= =?us-ascii?q?yVN8L5ek5G76Sc36xjXhWWfiD5ULKMtDe4O/V8/UU71ot4cfLUzDwp8b7Ww8Py?= =?us-ascii?q?Z2VBqSe4sX6JNYdQ7EDQBePAQR1YU/yF/3h5HacPd4v76P8OMcA+wNib+wRz6D?= =?us-ascii?q?VC0M2YI6mut0PM3kN7dYnHLEvywCs5WJMFIBK4MUc2hm/ZsHvdC2xGLse4Mclt?= =?us-ascii?q?nMqVDhv16klqh24tYm9BGmz1RdaePmQV1N6+ZA2U+wJREdkDh/S4dFU7tqKsU+?= =?us-ascii?q?loPItKmeGxu7UantZlMSbPRNJVPyvINr95IiJRDvnTpFgvehMEtqI6VZs1ZZiP?= =?us-ascii?q?JkMHN1yNyT3zzQvEz0L0c92s1KCUICcZ6HlHyKjF0TdUrQmjpfmZmtHjUKzebJ?= =?us-ascii?q?zuXv7dKiklVjaBSjkpDEap/0uku/oDvPqFLmcfokwUbjiUCAENuqBltcLQAXPL?= =?us-ascii?q?me1/YJ0Kg+iXWy/qRyJjjqoyBzhEtUSXTvodEQnZdWThgGtBuAC4IP9D427lZa?= =?us-ascii?q?WCxqVJQ+wWHpdMcvqBTtvafPBeIC0oli8YOOanZNDcqaw20lfWQmsYCaXI80ee?= =?us-ascii?q?TEGOSPyG2z3rRZkVv5Qzuicw4dLQkCp3HLjJMrucvDOu7JC3jDyZuezfUWktZV?= =?us-ascii?q?Y5gOQcD2md2BNAMn0LC8kJuEHxRa6Nf0RM1HUvieJqwBIMfRp8XWBg0n1Rhvay?= =?us-ascii?q?BtNWRUQSjGywXP1VJGxwWSg9+U6M/x26NccNvcHVWn926qoHSY1bKuIhrobQJv?= =?us-ascii?q?1D7uwu2WdNoDY7qDmcBlVqoZyZ77HbHK80krZN924+8upeUUaITDfSd2HGzsyt?= =?us-ascii?q?DMcZlnQmmmzty8eB5rMlD7BdvYwsRQ5SDA=3D=3D?= X-IPAS-Result: =?us-ascii?q?A2FhAwA4Lu5Y/wHyM5BcGwEBAQMBAQEJAQEBFgEBAQMBAQE?= =?us-ascii?q?JAQEBgn8pgWwHg1+LBpFNkA6GZCiGH4NXB1cBAQEBAQEBAQIBAmgogjMiU1gBA?= =?us-ascii?q?QEBAQEBAQEBAQEBAQEBAQEBFgIrJQEBIAIgEQwBDSAMAgECCQIFEAINAiIEAgI?= =?us-ascii?q?CAQEeDwMBBQELARYICwUYBIgrgTEBAxWcfj+MBIImJgKCYQWDVgpADYNoAgYSe?= =?us-ascii?q?YcjgmODBYFXEQGDIoJfAQSJHYZUgU6LORKSYYF/iH8MhjpIkXIUH4EVWH0IJjU?= =?us-ascii?q?VQRiENA8cgWVzAYZzgi4BAQE?= Received: from unknown (HELO tarius.tycho.ncsc.mil) ([144.51.242.1]) by emsm-gh1-uea11.nsa.gov with ESMTP; 12 Apr 2017 13:41:29 +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 v3CDfGJr004473; Wed, 12 Apr 2017 09:41:20 -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 v3CDfFNC114796 for ; Wed, 12 Apr 2017 09:41:15 -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 v3CDfE9c004462 for ; Wed, 12 Apr 2017 09:41:14 -0400 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A1D0AQBILe5YhkJSfUpcHAEBBAEBCgEBgypLAYFJB4NfnFOQDoZrDoYSAoN1B1cBAgEBAQEBAhMBAQEICwsIKIVuHQE5AxIQDwImAiQSAQUBIhOITIExAQMVmTKDRT+MBIImgwkFg1YKQA2DaAIGEnmHI4JjgwWFC4JfBYkdhlSBTos5EpJhgX+JC4Y6SJFyFB+BFYFcJjUVWYNzDDUPEAyBZT41AYkhAQEB X-IPAS-Result: A1D0AQBILe5YhkJSfUpcHAEBBAEBCgEBgypLAYFJB4NfnFOQDoZrDoYSAoN1B1cBAgEBAQEBAhMBAQEICwsIKIVuHQE5AxIQDwImAiQSAQUBIhOITIExAQMVmTKDRT+MBIImgwkFg1YKQA2DaAIGEnmHI4JjgwWFC4JfBYkdhlSBTos5EpJhgX+JC4Y6SJFyFB+BFYFcJjUVWYNzDDUPEAyBZT41AYkhAQEB X-IronPort-AV: E=Sophos;i="5.37,190,1488862800"; d="scan'208";a="6014293" Received: from emsm-gh1-uea10.corp.nsa.gov (HELO emsm-gh1-uea10.nsa.gov) ([10.208.41.36]) by goalie.tycho.ncsc.mil with ESMTP; 12 Apr 2017 09:41:13 -0400 IronPort-PHdr: =?us-ascii?q?9a23=3AUmHlSRDHmDzt4Cpu37x9UyQJP3N1i/DPJgcQr6Af?= =?us-ascii?q?oPdwSPv4pcbcNUDSrc9gkEXOFd2CrakV1ayP7eu+BCQp2tWoiDg6aptCVhsI24?= =?us-ascii?q?09vjcLJ4q7M3D9N+PgdCcgHc5PBxdP9nC/NlVJSo6lPwWB6nK94iQPFRrhKAF7?= =?us-ascii?q?Ovr6GpLIj8Swyuu+54Dfbx9GiTe5YL5+Ngi6oATeusQXgYZpN7o8xAbOrnZUYe?= =?us-ascii?q?pd2HlmJUiUnxby58ew+IBs/iFNsP8/9MBOTLv3cb0gQbNXEDopPWY15Nb2tRbY?= =?us-ascii?q?VguA+mEcUmQNnRVWBQXO8Qz3UY3wsiv+sep9xTWaMMjrRr06RTiu86FmQwLuhS?= =?us-ascii?q?waNTA27XvXh9RwgqxVoxyvugJxzJLbboyOKPp+Z7nQcc8GSWZdXMtcUTFKDIOm?= =?us-ascii?q?b4sICuoMJfhVr4nnp1sPthu+GQisC/npyjBQh3Hu27E60/g6EQ7a3AwvAc8FvX?= =?us-ascii?q?PIo9X6NaYSVua1w7fTzTjYYPNW3jD96IfMch8/pPGDR7Nwcc7LxUYzEAPFi0yd?= =?us-ascii?q?pIr4ND2WzuQAq2qW4uV6We6ylWIqqxt9rzuxyss2i4TEh4QYwU3e+ypj2oY6P9?= =?us-ascii?q?i4RVZ7YdG6FJtQsDmXN45sTcMjR2FkoSg7yrgatZKicigHyZUqywTQa/yAdIiI?= =?us-ascii?q?7RbjW/iLLThkg3Jlfaqzhxe08Ue+1u3xTsu53VlQoiZYjNXBtmoB2h/N5sSdS/?= =?us-ascii?q?Zw/1+t2TOV2ADS7uFEL1o0la3eK5M53rEwmZsSsUPFHiDog0X7l6CWdkIj+uin?= =?us-ascii?q?7+TofLDmqYWdN49wkA3xLqMumsmnDeQiLgcOR3Sb+fi71LD75k32XrFKjvwwkq?= =?us-ascii?q?nEv5HXPtgbp66lDA9V1YYv8RC/Dyy839gCknkHK0xFK1q7iN3yNlXPJu3oRaOk?= =?us-ascii?q?jlCtlip77+zXNb3mRJPWJz7Ml6m3Lphn7EsJ4wopzMtD5ptSPZ6fPO7oUU/8/I?= =?us-ascii?q?jTAQ0+NQGv6+ngD9p524YXWGbJCaicZvCB+WSU7/4idrHfLLQevyzwfqAo?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0G+AQA4Lu5YhkJSfUpcHAEBBAEBCgEBF?= =?us-ascii?q?wEBBAEBCgEBgn9LAYFJB4NfnFOQDoZrDoYSAoN1B1cBAQEBAQEBAQIBAhABAQE?= =?us-ascii?q?ICwsIKC+CMyBVWAEBAQEBAQEBAQEBAQEBAQEBAQEWAislAUMdATkDEhAPAiYCJ?= =?us-ascii?q?BIBBQEiE4hMgTEBAxWZOYNFP4wEgiaDCQWDVgpADYNoAgYSeYcjgmODBYULgl8?= =?us-ascii?q?FiR2GVIFOizkSkmGBf4kLhjpIkXIUH4EVgV0mNRVZg3MMNQ8QDIFlPjUBiSEBA?= =?us-ascii?q?QE?= X-IPAS-Result: =?us-ascii?q?A0G+AQA4Lu5YhkJSfUpcHAEBBAEBCgEBFwEBBAEBCgEBgn9?= =?us-ascii?q?LAYFJB4NfnFOQDoZrDoYSAoN1B1cBAQEBAQEBAQIBAhABAQEICwsIKC+CMyBVW?= =?us-ascii?q?AEBAQEBAQEBAQEBAQEBAQEBAQEWAislAUMdATkDEhAPAiYCJBIBBQEiE4hMgTE?= =?us-ascii?q?BAxWZOYNFP4wEgiaDCQWDVgpADYNoAgYSeYcjgmODBYULgl8FiR2GVIFOizkSk?= =?us-ascii?q?mGBf4kLhjpIkXIUH4EVgV0mNRVZg3MMNQ8QDIFlPjUBiSEBAQE?= X-IronPort-AV: E=Sophos;i="5.37,190,1488844800"; d="scan'208";a="5873386" X-IronPort-Outbreak-Status: No, level 0, Unknown - Unknown Received: from mail-wm0-f66.google.com ([74.125.82.66]) by emsm-gh1-uea10.nsa.gov with ESMTP/TLS/AES128-GCM-SHA256; 12 Apr 2017 13:41:04 +0000 Received: by mail-wm0-f66.google.com with SMTP id x75so6489652wma.1 for ; Wed, 12 Apr 2017 06:41:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20161025; h=mime-version:from:date:message-id:subject:to :content-transfer-encoding; bh=WdFMXIleJPAsfV9XoDEqRImfVeptNg39KWEV78xsiaI=; b=V9CPZ7ywMfKVs7XoQiCQkgoPZmXpURvoWOPb7OF5LVjigCyXvJacNdZ0mKcPA32SIO q9a8M40SBdhjom+AjkOsNoi2G1qBHlTmzK1Be71+BglfoM///bDpZ5uLm4iAuZyLUnA+ 8al1OodnG1Cb2jozOWCPmuuEbDtpctnCW4hgUo3AUqQSryjceiv7Ci51rw9ZEAbQb3u2 G8r3VOtxzK2otXNTmeZ2vjRGykbXBYiAzBtskeiTKjYJbXfj2bErrm+ttsJa4fZfcM54 Ng44MTqmCICgbfuSAocaeAfQ3P+ZjQo8yXzjosfcav67M+KX+xlvWg2zHoX12eqc7nd5 HG6g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to :content-transfer-encoding; bh=WdFMXIleJPAsfV9XoDEqRImfVeptNg39KWEV78xsiaI=; b=Sq2iqG/BsdvBVjNE0AVhPDD97Ilcha1apdXXl9tmW9x5A753L0d9GjTgynicWMWyB9 CZvAszsx6EaIXprY51FrU5Nthl0adzXhc77qVH+gyOAvFwaW87gTKkndfZUKmc1Kcc6O tWJl4HcjT2WAP/OLE16XHWckBfxDW4sAoSjF7XCY75fLKP5QIp0Dztp/zokaLXnUapuq mAhqghWACSVs07OmE/n7qqlMcTDQNS5iZc1IX0/SkHFecn/MJPd+thjpfsMctDthgV/R rxys3Qoctp+GrwMnGPjueYfP8oNwcAXWJPJFUhE2BgiwVQUxB49W/vju37wxOfTc0nfe Xpug== X-Gm-Message-State: AN3rC/6gw2rEunfaKtkJC5YnoHl30olSsdEe4N3Fk08Ka4n4dUqi+ZM1 fFe0nWEfQpJM+gOeAZyr+YrGkzE3ly2GuIk= X-Received: by 10.28.0.201 with SMTP id 192mr16469233wma.126.1492004461471; Wed, 12 Apr 2017 06:41:01 -0700 (PDT) MIME-Version: 1.0 Received: by 10.80.176.132 with HTTP; Wed, 12 Apr 2017 06:41:00 -0700 (PDT) From: =?UTF-8?Q?Christian_G=C3=B6ttsche?= Date: Wed, 12 Apr 2017 15:41:00 +0200 Message-ID: Subject: [PATCH 1/2] libselinux: add security_checkreqprot To: selinux X-MIME-Autoconverted: from quoted-printable to 8bit by prometheus.infosec.tycho.ncsc.mil id v3CDfFNC114796 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 Add security_checkreqprot() function, returning the current active checkreqprot value Signed-off-by: Christian Göttsche --- libselinux/include/selinux/selinux.h | 3 +++ libselinux/man/man3/security_getenforce.3 | 8 ++++++- libselinux/man/man3/selinux_status_open.3 | 11 +++++++-- libselinux/src/checkreqprot.c | 40 +++++++++++++++++++++++++++++++ libselinux/src/selinux_internal.h | 1 + 5 files changed, 60 insertions(+), 3 deletions(-) create mode 100644 libselinux/src/checkreqprot.c diff --git a/libselinux/include/selinux/selinux.h b/libselinux/include/selinux/selinux.h index 45dd6ca5..938393f6 100644 --- a/libselinux/include/selinux/selinux.h +++ b/libselinux/include/selinux/selinux.h @@ -331,6 +331,9 @@ extern int security_setenforce(int value); /* Get the behavior for undefined classes/permissions */ extern int security_deny_unknown(void); +/* Get the checkreqprot value */ +extern int security_checkreqprot(void); + /* Disable SELinux at runtime (must be done prior to initial policy load). */ extern int security_disable(void); diff --git a/libselinux/man/man3/security_getenforce.3 b/libselinux/man/man3/security_getenforce.3 index 7658014a..e27b6c80 100644 --- a/libselinux/man/man3/security_getenforce.3 +++ b/libselinux/man/man3/security_getenforce.3 @@ -1,6 +1,6 @@ .TH "security_getenforce" "3" "1 January 2004" "russell@coker.com.au" "SELinux API documentation" .SH "NAME" -security_getenforce, security_setenforce, security_deny_unknown \- get or set the enforcing state of SELinux +security_getenforce, security_setenforce, security_deny_unknown security_checkreqprot\- get or set the enforcing state of SELinux . .SH "SYNOPSIS" .B #include @@ -10,6 +10,8 @@ security_getenforce, security_setenforce, security_deny_unknown \- get or set th .BI "int security_setenforce(int "value ); .sp .B int security_deny_unknown(void); +.sp +.B int security_checkreqprot(void); . .SH "DESCRIPTION" .BR security_getenforce () @@ -24,6 +26,10 @@ returned. .BR security_deny_unknown () returns 0 if SELinux treats policy queries on undefined object classes or permissions as being allowed, 1 if such queries are denied, and \-1 on error. + +.BR security_checkreqprot () +returns 0 if SELinux checks the protection applied by the kernel, 1 if SELinux +checks the protection requested by the application, and \-1 on error. . .SH "SEE ALSO" .BR selinux "(8)" diff --git a/libselinux/man/man3/selinux_status_open.3 b/libselinux/man/man3/selinux_status_open.3 index 2d44be57..e70ab014 100644 --- a/libselinux/man/man3/selinux_status_open.3 +++ b/libselinux/man/man3/selinux_status_open.3 @@ -1,8 +1,9 @@ .TH "selinux_status_open" "3" "22 January 2011" "kaigai@ak.jp.nec.com" "SELinux API documentation" .SH "NAME" selinux_status_open, selinux_status_close, selinux_status_updated, -selinux_status_getenforce, selinux_status_policyload and -selinux_status_deny_unknown \- reference the SELinux kernel status +selinux_status_getenforce, selinux_status_policyload, +selinux_status_deny_unknown and security_checkreqprot \- reference +the SELinux kernel status without invocation of system calls . .SH "SYNOPSIS" @@ -19,6 +20,8 @@ without invocation of system calls .BI "int selinux_status_policyload(void);" .sp .BI "int selinux_status_deny_unknown(void);" +.sp +.BI "int security_checkreqprot(void);" . .SH "DESCRIPTION" Linux 2.6.37 or later provides a SELinux kernel status page; being mostly @@ -78,6 +81,10 @@ Thus, don't use this value to know actual times of policy reloaded. returns 0 if SELinux treats policy queries on undefined object classes or permissions as being allowed, 1 if such queries are denied, or \-1 on error. .sp +.BR security_checkreqprot () +returns 0 if SELinux checks the protection applied by the kernel, 1 if SELinux +checks the protection requested by the application, and \-1 on error. +.sp Also note that these interfaces are not thread-safe, so you have to protect them from concurrent calls using exclusive locks when multiple threads are performing. diff --git a/libselinux/src/checkreqprot.c b/libselinux/src/checkreqprot.c new file mode 100644 index 00000000..38f3bebb --- /dev/null +++ b/libselinux/src/checkreqprot.c @@ -0,0 +1,40 @@ +#include +#include +#include +#include +#include +#include +#include "selinux_internal.h" +#include "policy.h" +#include +#include + +int security_checkreqprot(void) +{ + int fd, ret, checkreqprot = 0; + char path[PATH_MAX]; + char buf[20]; + + if (!selinux_mnt) { + errno = ENOENT; + return -1; + } + + snprintf(path, sizeof(path), "%s/checkreqprot", selinux_mnt); + fd = open(path, O_RDONLY); + if (fd < 0) + return -1; + + memset(buf, 0, sizeof(buf)); + ret = read(fd, buf, sizeof(buf) - 1); + close(fd); + if (ret < 0) + return -1; + + if (sscanf(buf, "%d", &checkreqprot) != 1) + return -1; + + return checkreqprot; +} + +hidden_def(security_checkreqprot); diff --git a/libselinux/src/selinux_internal.h b/libselinux/src/selinux_internal.h index 3d5c9fb4..e4650c92 100644 --- a/libselinux/src/selinux_internal.h +++ b/libselinux/src/selinux_internal.h @@ -59,6 +59,7 @@ hidden_proto(selinux_mkload_policy) hidden_proto(security_getenforce) hidden_proto(security_setenforce) hidden_proto(security_deny_unknown) + hidden_proto(security_checkreqprot) hidden_proto(selinux_boolean_sub) hidden_proto(selinux_current_policy_path) hidden_proto(selinux_binary_policy_path)